Closed wduminy closed 3 years ago
@wduminy Hey, thank you for your request!
It looks no longer relevant, but anyway
Could you please try the latest version of the plugin?
I'm closing the issue You can rereopen it in case any questions
Hello @rddimon
I played around with the new plug-in version but could not get a null VPC for a stage.
I hope I a missing something. Please help.
custom:
defaultStage: sandbox # Other stages: dev, staging, prod
vpc: ${self:custom.config.vpc.${self:provider.stage},null}
config:
vpc:
sandbox: ~
prod:
vpcName: "aVPC"
subnetNames:
- 'net-001'
- 'net-002'
- 'net-003'
securityGroupNames:
- 'mysql-egress'
- 'https-egress'
Then I get this error:
TypeError: Cannot read property 'vpcName' of null
at VPCPlugin.updateVpcConfig (node_modules/serverless-vpc-discovery/index.js:36:28)
at PluginManager.runHooks (node_modules/serverless/lib/classes/plugin-manager.js:520:41)
at PluginManager.invoke (/node_modules/serverless/lib/classes/plugin-manager.js:549:20)
@rddimon I am unable to re-open this request.
From elsewhere:
you cannot re-open your own issues if a repo collaborator closed them
Hi @wduminy
Your custom config structure is not correct
Please read the README carefully and take a look at the example: https://github.com/amplify-education/serverless-vpc-discovery/blob/master/test/integration-tests/basic/basic-example/serverless.yml#L30
Thank you @rddimon,
I appreciate your input.
I made a change to my code, but get the same error.
The problem is with the line sandbox: false
.
In the docs, I do not see a way to specify that a specific stage must not do any VPC config. The example you supplied does not mention stages.
The config here (and above) works perfectly for the prod
stage, but not for the sandbox
stage. It is just a snippet.
custom:
defaultStage: sandbox # Other stages: dev, staging, prod
vpcDiscovery: ${self:custom.config.vpc.${self:provider.stage}}
config:
vpc:
sandbox: false
prod:
vpcName: "aVPC"
subnetNames:
- 'net-001'
- 'net-002'
- 'net-003'
securityGroupNames:
- 'mysql-egress'
- 'https-egress'
The vpcDiscovery
structure is still not correct:
custom:
defaultStage: sandbox # Other stages: dev, staging, prod
### The main point is here, the `vpcDiscovery` structure should be like below:
vpcDiscovery:
vpcName: "aVPC"
subnetNames:
- 'net-001'
- 'net-002'
- 'net-003'
securityGroupNames:
- 'mysql-egress'
- 'https-egress'
###
config:
vpc:
sandbox: false
...
hmm -- this is the same that i have. ${self:custom.config.vpc.${self:provider.stage}}
is the structure.
But I just found an embarrassing mistake; I am working with an old version. WIll let you know if it works now.
Ok, sorry about that.
For the record here is what works.
In custom, I configure per stage
custom:
defaultStage: sandbox # Other stages: dev, staging, prod
config:
vpc:
sandbox: false
prod:
vpcName: "aVPC"
subnetNames:
- 'net-001'
- 'net-002'
- 'net-003'
securityGroupNames:
- 'mysql-egress'
- 'https-egress'
Then for each function, I added this
functions:
function001:
vpcDiscovery: ${self:custom.config.vpc.${self:provider.stage}}
This is good enough for me.
Does it work for you? Have you solved the issue Cannot read property 'vpcName' of null
?
The original suggestion as described in the blog I quoted when posting this issue is a cleaner way to do it.
If I follow the pattern described there, I get a new error. Something like: Error: 'vpcDiscovery.vpcName' is not specified. VPC not configured. Please see the README for the proper setup.
I did not write the blog; and I imagine something like that worked before. So, you might still want to do it.
But I am happy in the sense that I have a work-around for my config problem.
Thank you very much for helping.
When I try to exclude the
vpc
section for a stage that does not need it, I get the error below.Would it not be better to print a warning? If this was done, I would be effectively able to "turn off" the plugin for a stage.
This idea might have worked before, judging from this blog