如何将不同帐户中的 CodeBuild 与 CodeCommit 存储库链接?

Spe*_*cer 6 amazon-web-services amazon-iam aws-codecommit aws-codebuild

我正在尝试使用位于另一个 AWS 账户中的 CodeCommit 源来设置 CodeBuild。我相信这可以使用 AssumeRole 来完成,但我没有运气。任何人都可以帮助提供一个示例,说明如何使 CodeBuild 承担另一个帐户中指定的角色来访问 CodeCommit 存储库吗?

目前我的 CodeBuild 角色(在帐户 22222222 中)包括以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::11111111:role/Read-CodeCommit"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

在帐户 11111111 中,我的 Read-CodeCommit 角色具有以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "codecommit:*"
            ],
            "Resource": "arn:aws:codecommit:us-west-2:11111111:dashboard"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "codecommit:ListRepositories",
            "Resource": "*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

Read-CodeCommit 具有以下信任策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::22222222:root",
        "Service": "codebuild.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

编辑:发布我为可能面临类似问题的任何人提出的解决方案。

我能做的最好的事情就是回避这个问题。我没有将 CodeCommit 设置为源,而是使用包含 CodeCommit 凭据的自定义 ECR 映像。然后构建规范从存储库克隆。

它不像我喜欢的那么干净,但它可以完成工作。