AWS CDK - 如何为账户 2 中的服务器部署组提供对账户 1

时间:2021-02-24 01:21:44

标签: amazon-web-services amazon-s3 aws-cdk aws-codepipeline aws-code-deploy

我的应用程序有适用于 CI/CD 的 AWS 代码管道。 我正在使用 2 个 AWS 账户。帐户 1 用于我的存储库和管道,帐户 2 用于所有基础设施/服务器。

这是我管道的部署阶段,其中 deploymentGroup 在 account-2 中创建并分配为对象 props.ec2DeploymentGroup

{
    stageName: "deploy-to-" + props.targetEnvName,
    actions: [
       new codepipeline_actions.CodeDeployServerDeployAction({
          actionName: "deploy-to-"+props.targetEnvName+"-"+ props.applicationName + "-ec2",
          input: appBuildOutput,
          deploymentGroup: props.ec2DeploymentGroup
       })
        ]
  }

现在,当我的部署阶段运行时,它成功尝试将工件部署到帐户 2 中的部署组/服务器,但在 downloadBundle 事件中失败并出现错误

<块引用>

访问被拒绝

这是因为我的工件存储桶在账户 1 中(因为我的管道在账户 1 中)而账户 2 中的部署组无权访问账户 1 中的此工件存储桶。

我尝试做这样的事情,但不知道如何让 props.ec2DeploymentGroup 的角色在这里传递。

pipeline.artifactBucket.grantRead(whatObjectToPassHere)

那么我应该如何使用 AWS CDK 授予跨账户访问工件存储桶的权限?

1 个答案:

答案 0 :(得分:0)

所以我找到了我的问题的解决方案(我从 AWS 支持那里得到了帮助)我的 EC2 实例配置文件无法访问我在另一个账户中的工件存储桶。

我使用以下代码在 CDK 中管理

cmp -s path1 path2 rm path2 ||echo "files are different"