gpt4 book ai didi

amazon-web-services - AWS CDK : how do I reference cross-stack resources in same app?

转载 作者:行者123 更新时间:2023-12-03 17:44:17 25 4
gpt4 key购买 nike

我的应用程序有两个堆栈,都位于同一区域/帐户内。其中一个堆栈需要另一个堆栈中存在的 lambda 的 ARN。我如何引用这个?

// within stackA constructor
public StackA(Construct scope, String id, StackProps props) {
SingletonFunction myLambda = SingletonFunction.Builder.create(this, "myLambda")
// some code here
.build()
CfnOutput myLambdaArn = CfnOutput.Builder.create(this, "myLambdaArn")
.exportName("myLambdaArn")
.description("ARN of the lambda that I want to use in StackB")
.value(myLambda.getFunctionArn())
.build();

}

App app = new App();
Stack stackA = new StackA(app, "stackA", someAProps);
Stack stackB = new StackB(app, "stackB", someBProps);
stackB.dependsOn(stackA);

如何将 ARN 传递到 StackB 中?

最佳答案

CDK的官方文档有sharing a S3 bucket between stacks的完整示例。我将其复制到下面以便更快地引用。

/**
* Stack that defines the bucket
*/
class Producer extends cdk.Stack {
public readonly myBucket: s3.Bucket;

constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);

const bucket = new s3.Bucket(this, 'MyBucket', {
removalPolicy: cdk.RemovalPolicy.DESTROY,
});
this.myBucket = bucket;
}
}

interface ConsumerProps extends cdk.StackProps {
userBucket: s3.IBucket;
}

/**
* Stack that consumes the bucket
*/
class Consumer extends cdk.Stack {
constructor(scope: cdk.App, id: string, props: ConsumerProps) {
super(scope, id, props);

const user = new iam.User(this, 'MyUser');
props.userBucket.grantReadWrite(user);
}
}

const producer = new Producer(app, 'ProducerStack');
new Consumer(app, 'ConsumerStack', { userBucket: producer.myBucket });

关于amazon-web-services - AWS CDK : how do I reference cross-stack resources in same app?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61579756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com