使用共享项目。 - AWS CodeBuild

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用共享项目。

项目共享允许项目拥有者与其他 AWS 账户或用户共享其 AWS CodeBuild 项目。在此模型中,拥有项目的账户(拥有者)将与其他账户(使用者)共享项目。使用者无法编辑或运行项目。

共享项目的先决条件

要共享项目,您的 AWS 账户必须拥有该项目。无法共享已与您共享的项目。

访问与您共享的共享项目的先决条件

要访问共享项目,使用者的 IAM 角色需要 BatchGetProjects 权限。您可以将以下策略附加到其 IAM 角色:

{ "Effect": "Allow", "Resource": [ "*" ], "Action": [ "codebuild:BatchGetProjects" ] }

有关更多信息,请参阅将基于身份的策略用于 AWS CodeBuild

项目共享与 AWS Resource Access Manager (AWS RAM) 集成,后者是一项服务,使您可以与任何 AWS 账户或通过 AWS Organizations 共享 AWS 资源。通过使用 AWS RAM,您可以通过创建资源共享 来共享资源,该共享指定要共享的资源和要与其共享资源的使用者。使用者可以是单个 AWS 账户、AWS Organizations 中的组织部门或 AWS Organizations 中的整个组织。

有关更多信息,请参阅《AWS RAM 用户指南》。

共享项目

使用者可以使用 AWS CLI 和 AWS CodeBuild 控制台来查看您共享的项目和构建。使用者无法编辑或运行项目。

您可以将项目添加到现有资源共享,也可以在 AWS RAM 控制台中创建资源共享。

注意

您不能删除其构建已添加到资源共享的项目。

要与组织单位或整个组织共享项目,您必须启用与 AWS Organizations 的共享。有关更多信息,请参阅《AWS RAM 用户指南》中的允许与 AWS Organizations 共享

您可以使用 AWS CodeBuild 控制台、AWS RAM 控制台或 AWS CLI 共享您拥有的项目。

共享您拥有的项目(CodeBuild 控制台)
  1. https://console.aws.amazon.com/codesuite/codebuild/home 打开 AWS CodeBuild 控制台。

  2. 在导航窗格中,选择构建项目

    注意

    默认情况下,仅显示 10 个最新的构建项目。要查看更多构建项目,请选择齿轮图标,然后为每页项目数选择不同值,或使用向后和向前箭头。

  3. 选择要共享的项目,然后选择共享。有关更多信息,请参阅《AWS RAM 用户指南》中的创建资源共享

共享您拥有的项目(AWS RAM 控制台)

请参阅《AWS RAM 用户指南》中的创建资源共享

共享您拥有的项目(AWS RAM 命令)

使用 create-resource-share 命令。

共享您拥有的项目(CodeBuild 命令)

使用 put-resource-policy 命令:

  1. 创建一个名为 policy.json 的文件,并将以下内容复制到该文件中。

    { "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Principal":{ "AWS":"<consumer-aws-account-id-or-user>" }, "Action":[ "codebuild:BatchGetProjects", "codebuild:BatchGetBuilds", "codebuild:ListBuildsForProject"], "Resource":"<arn-of-project-to-share>" }] }
  2. 使用项目 ARN 和标识符更新 policy.json 以便共享项目。以下示例授予对由 123456789012 标识的 AWS 帐户的根用户的只读访问权限。

    { "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Principal":{ "AWS": [ "123456789012" ] }, "Action":[ "codebuild:BatchGetProjects", "codebuild:BatchGetBuilds", "codebuild:ListBuildsForProject"], "Resource":"arn:aws:codebuild:us-west-2:123456789012:project/my-project" }] }
  3. 运行 put-resource-policy 命令:

    aws codebuild put-resource-policy --resource-arn <project-arn> --policy file://policy.json
  4. 获取 AWS RAM 资源共享 ARN。

    aws ram list-resources --resource-owner SELF --resource-arns <project-arn>

    这将返回与以下内容类似的响应:

    { "resources": [ { "arn": "<project-arn>", "type": "<type>", "resourceShareArn": "<resource-share-arn>", "creationTime": "<creation-time>", "lastUpdatedTime": "<last-update-time>" } ] }

    从响应中复制 <resource-share-arn> 值以在下一步中使用。

  5. 运行 AWS RAM promote-resource-share-created-from-policy 命令。

    aws ram promote-resource-share-created-from-policy --resource-share-arn <resource-share-arn>

取消共享已共享的项目

取消共享的项目(包括其构建)只能由其拥有者访问。如果取消共享项目,先前与其共享项目的任何 AWS 账户或用户都无法访问该项目或其构建。

要取消共享您拥有的已共享项目,必须从资源共享中将其删除。您可以使用 AWS CodeBuild 控制台、AWS RAM 控制台或 AWS CLI 执行此操作。

取消共享您拥有的共享项目(AWS RAM 控制台)

请参阅《AWS RAM 用户指南》中的更新资源共享

取消共享您拥有的共享项目 (AWS CLI)

使用 disassociate-resource-share 命令。

取消共享您拥有的项目(CodeBuild 命令)

运行 delete-resource-policy 命令,并指定要取消共享的项目的 ARN:

aws codebuild delete-resource-policy --resource-arn project-arn

标识共享的项目

拥有者和使用者可以使用 AWS CLI 标识共享项目。

标识与您的 AWS 账户或用户共享的项目 (AWS CLI)

使用 list-shared-projects 命令返回与您共享的项目。

共享项目权限

拥有者的权限

项目拥有者可以编辑项目并使用它来运行构建。

使用者的权限

项目使用者可以查看项目及其构建,但不能编辑项目或使用项目运行构建。