首页 > 解决方案 > AWS CDK 跨账户 Lambda 部署权限问题

问题描述

我按照以下教程使用 CDK 创建了 Lambda 部署管道。当我尝试将所有内容保存在同一个帐户中时,它运行良好。 https://docs.aws.amazon.com/cdk/latest/guide/codepipeline_example.html

但我的场景与示例略有不同,因为它涉及两个 AWS 账户,而不是一个。我在 OPS 账户中维护应用程序源代码和管道,此管道会将 Lambda 应用程序部署到 UAT 账户。

OPS 账户 (12345678) - CodeCommit 存储库和 CodePipeline UAT 账户 (87654321) - Lambda 应用程序

根据 aws 以下 aws 文档(跨账户操作部分),我对源代码进行了以下更改。 https://docs.aws.amazon.com/cdk/api/latest/docs/aws-codepipeline-actions-readme.html

当我运行 cdk diff 或 deploy 时,我收到一条错误消息,

➜  infra git:(master) ✗ cdk diff MicroServicePipelineStack --profile uatadmin
Including dependency stacks: LambdaStack
Stack LambdaStack
Need to perform AWS calls for account 87654321, but no credentials have been configured.

我在这里做错了什么?是我的 CDK 代码还是我配置 AWS 配置文件的方式?

谢谢, 卡松

标签: aws-lambdaaws-codepipelineaws-cdk

解决方案


问题在于您的 AWS CLI 配置。您不能使用本机 CDK CLI 通过一个 CLI 命令在两个单独的帐户中部署资源。最近有一篇关于如何告诉 CDK 使用哪些凭据的博客文章,具体取决于堆栈环境参数: https ://aws.amazon.com/blogs/devops/cdk-credential-plugin/

我们使用它的方式是将堆栈部署到单独的帐户中,并使用多个 CLI 命令指定所需的配置文件。所有需要交换的参数(例如lambdaCode的位置)都通过环境变量传递。


推荐阅读