-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Description
-
I'm submitting a ...
- 🪲 bug report
-
What is the current behavior?
If the current behavior is a 🪲bug🪲: Please provide the steps to reproduce
In order to use the pre-existing VPC, as I understand it, I need to useaws_ec2.Vpc.from_lookupto find the VPC by an attribute (eg. its ID). For that to work, I need the VPC ID at synth time.
To do this, within my stack constructor method, I have:
self.vpc_id_lookup = aws_ssm.StringParameter.value_from_lookup(self, '/path/to/vpc_id')
self.vpc = aws_ec2.Vpc.from_lookup(
self,
'FoundVpc',
vpc_id=self.vpc_id_lookup
)
self.rds_cluster = aws_rds.DatabaseCluster(
self,
'AuroraCluster',
cluster_identifier='test-aurora-cluster',
engine=aws_rds.DatabaseClusterEngine.AURORA_POSTGRESQL,
master_user=aws_rds.Login(username='master'),
instance_props=aws_rds.InstanceProps(
vpc=self.vpc,
instance_type=aws_ec2.InstanceType(instance_type_identifier='m5.large'),
vpc_subnets=aws_ec2.SubnetSelection(subnet_type=ec2.SubnetType.ISOLATED),
)
)The problem is that when cdk synth is attempted on the above, it fails at the second action (vpc lookup) fails because the vpc ID doesn't already exist in cdk.context.json… the only way to get it written there is to comment out the second and third actions, run cdk synth, which adds the SSM parameter store value to the context. After that, it will succeed on step two, but fail on step 3, because the VPC information is also missing from the context. If I comment out the 3rd action, run cdk synth, then put the 3rd action back, it all works.
- What is the expected behavior (or behavior of feature suggested)?
Something seems wrong here… it seems like the two lookup methods are not behaving idempotently. They should populate context if context is missing, but also always return the looked up value(s), so that this will work whether or not context is already populated. I do have the account and region specified in the stack 'env'.