AWS CDK - 如何为 account-2 中的服务器部署组提供对 account-1 中我的代码管道的工件存储桶的跨账户访问权限

AWS CDK - How to give server deployment group in account-2 a cross account access to artifact bucket of my codepipeline in account-1

我的应用程序有 CI/CD 的 AWS 代码管道。 我正在使用 2 个 AWS 账户。帐户 1 用于我的存储库和管道,帐户 2 是所有 Infra/servers 所在的位置。

所以这是我管道的部署阶段,其中 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 事件中失败并出现错误

Access Denied

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

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

pipeline.artifactBucket.grantRead(whatObjectToPassHere)

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

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

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

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

pipeline.artifactBucket.grantRead(ec2InstanceProfileRole);