问题描述: 当使用AWS CDK创建带有Lambda函数和与之关联的VPC的嵌套堆栈时,可能会出现循环依赖性。这意味着Lambda函数不能成功部署,因为它需要VPC,而VPC也需要在Lambda函数之前创建。
代码示例: 假设我们有一个名为“my-vpc-stack”的堆栈,它创建了一个Amazon VPC,并将其输出到栈输出中。我们还有一个名为“my-lambda-function”的堆栈,它创建了一个Lambda函数,并将其部署到VPC中。在这里,我们使用了两个堆栈的“ImportValue”引用。
import cdk = require('@aws-cdk/core');
import lambda = require('@aws-cdk/aws-lambda');
import ec2 = require('@aws-cdk/aws-ec2');
export class MyLambdaStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const myVpc = ec2.Vpc.fromVpcAttributes(this, 'MyVpc', {
vpcId: cdk.Stack.of(this).resolve(
cdk.Stack.of(this).exportValue('MyVpcId')
),
availabilityZones: [
cdk.Stack.of(this).resolve(
cdk.Stack.of(this).exportValue('MyVpcAz1')
),
cdk.Stack.of(this).resolve(
cdk.Stack.of(this).exportValue('MyVpcAz2')
),
],
publicSubnetIds: [cdk.Stack.of(this).exportValue('MyVpcPublicSubnetId')],
});
const myFunction = new lambda.Function(this, 'MyFunction', {
code: lambda.Code.fromAsset('lambda'),
handler: 'my-handler.handler',
runtime: lambda.Runtime.NODEJS_10_X,
vpc: myVpc,
});
}
}
export class MyV