【问题标题】:AWS CDK - How to give server deployment group in account-2 a cross account access to artifact bucket of my codepipeline in account-1AWS CDK - 如何为账户 2 中的服务器部署组提供对账户 1 中我的代码管道的工件存储桶的跨账户访问权限
【发布时间】:2021-03-08 11:17:51
【问题描述】:

我的应用程序有用于 CI/CD 的 AWS Code Pipeline。 我正在使用 2 个 AWS 帐户。 Account-1 用于我的存储库和管道,account-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 中的 DeploymentGroup/Servers,但在 downloadBundle 事件中失败并出现错误

访问被拒绝

这是因为我的工件存储桶位于 account-1 中(因为我的管道位于 account-1 中)并且 account-2 中的部署组无权访问 account-1 中的此工件存储桶。

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

pipeline.artifactBucket.grantRead(whatObjectToPassHere)

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

【问题讨论】:

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


    【解决方案1】:

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

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

    const ec2InstanceProfileRole = iam.Role.fromRoleArn(this, 'Role', 
    'arn:aws:iam::'+props.targetAccountId+':role/'+props.ec2InstanceProfileName, 
    {
       mutable: false,
    });
    
    pipeline.artifactBucket.grantRead(ec2InstanceProfileRole);
    

    【讨论】:

      猜你喜欢
      • 2020-09-08
      • 2020-07-17
      • 1970-01-01
      • 2021-04-25
      • 2021-12-16
      • 2022-06-29
      • 2020-02-12
      • 1970-01-01
      • 2021-12-07
      相关资源
      最近更新 更多