

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 共用建置專案
<a name="project-sharing"></a>

專案共用可讓專案擁有者與其他 AWS 帳戶或使用者共用其 AWS CodeBuild 專案。在此模型中，擁有專案的帳戶 (擁有者) 將專案分享給其他帳戶 (消費者)。消費者無法編輯或執行專案。

**Topics**
+ [共用專案](#project-sharing-share)
+ [相關服務](#project-sharing-related)
+ [存取與您共用的 CodeBuild 專案](project-sharing-access-prereqs.md)
+ [取消共用共用專案](project-sharing-unshare.md)
+ [識別共用專案](project-sharing-identify.md)
+ [共用的專案許可](project-sharing-perms.md)

## 共用專案
<a name="project-sharing-share"></a>

消費者可以使用 AWS CLI 和 AWS CodeBuild 主控台來檢視您共用的專案和組建。消費者無法編輯或執行專案。

您可以將專案新增至現有的資源分享，或在 [AWS RAM 主控台](https://console.aws.amazon.com/ram)中建立資源分享。

**注意**  
您無法刪除其建置已新增至資源分享的專案。

若要與組織單位或整個組織共用專案，必須啟用透過 AWS Organizations來共用的功能。如需詳細資訊，請參閱《*AWS RAM 使用者指南*》中的[透過 AWS Organizations啟用共用](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html)。

您可以使用 AWS CodeBuild 主控台、 AWS RAM 主控台或 AWS CLI 來共用您擁有的專案。

**共用專案的先決條件**  
開始共用專案之前，請確定 AWS 您的帳戶擁有該專案。您無法將已分享給您的專案再分享出去。

**共用您擁有的專案 (CodeBuild 主控台）**

1. 在 https：//[https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) 開啟 AWS CodeBuild 主控台。

1. 在導覽窗格中，選擇 **Build projects (建置專案)**。
**注意**  
根據預設，只會顯示最新的 10 個組建專案。若要檢視更多組建專案，請選擇齒輪圖示，然後針對 **Projects per page (每頁顯示專案數)** 選擇不同的值，或使用向前和向後箭頭。

1. 選擇您要共用的專案，然後選擇 **Share (共用)**。如需詳細資訊，請參閱*《AWS RAM 使用者指南》*中的[建立資源共用](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-create)。

**共用您擁有的專案AWS RAM （主控台）**  
請參閱 *AWS RAM 使用者指南*中的[建立資源共用](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing.html#working-with-sharing-create)。

**共用您擁有的專案 (AWS RAM 命令）**  
使用 [create-resource-share](https://docs.aws.amazon.com/cli/latest/reference/ram/create-resource-share.html) 命令。

**共用您擁有的專案 (CodeBuild 命令）**<a name="codebuild-command"></a>

使用 [put-resource-policy](https://docs.aws.amazon.com/cli/latest/reference/codebuild/put-resource-policy.html) 命令：

1. 建立名為 `policy.json` 的檔案，並將以下命令複製到其中。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement":[{
       "Effect":"Allow",
       "Action":[
         "codebuild:BatchGetProjects",
         "codebuild:BatchGetBuilds",
         "codebuild:ListBuildsForProject"],
       "Resource":"arn:aws:iam::*:role/Service*"
     }]
   }
   ```

------

1. 使用專案 ARN 和識別符更新 `policy.json`，以與之共用。下列範例會將唯讀存取權授予 123456789012 所識別 AWS 帳戶的根使用者。

------
#### [ JSON ]

****  

   ```
   {
     "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"
     }]
   }
   ```

------

1. 執行 [put-resource-policy](https://docs.aws.amazon.com/cli/latest/reference/codebuild/put-resource-policy.html) 命令。

   ```
   aws codebuild put-resource-policy --resource-arn <project-arn> --policy file://policy.json
   ```

1. 取得 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>* 值。

1. 執行 AWS RAM [promote-resource-share-created-from-policy](https://docs.aws.amazon.com/cli/latest/reference/ram/promote-resource-share-created-from-policy.html) 命令。

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

## 相關服務
<a name="project-sharing-related"></a>

專案共用與 AWS Resource Access Manager (AWS RAM) 整合，這項服務可讓您與任何 AWS 帳戶或透過 共用 AWS 資源 AWS Organizations。有了 AWS RAM，您可以建立*資源共用*，指定資源及要與之分享的消費者，以分享資源。消費者可以是 中的個別 AWS 帳戶 AWS Organizations、組織單位或整個組織 AWS Organizations。

如需詳細資訊，請參閱*「[AWS RAM 使用者指南」](https://docs.aws.amazon.com/ram/latest/userguide/)*。

# 存取與您共用的 CodeBuild 專案
<a name="project-sharing-access-prereqs"></a>

若要存取共用專案，取用者的 IAM 角色需要 `BatchGetProjects`許可。您可以將下列政策連接至其 IAM 角色：

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

 如需詳細資訊，請參閱[使用 的身分型政策 AWS CodeBuild](auth-and-access-control-iam-identity-based-access-control.md)。

# 取消共用共用專案
<a name="project-sharing-unshare"></a>

只有其擁有者可以存取已取消共享的專案 (包括其建置)。如果您取消共用專案，您之前與其共用的任何 AWS 帳戶或使用者都無法存取專案或其組建。

若要取消共享您擁有的已共用專案，您必須從資源共享中移除它。您可以使用 AWS CodeBuild 主控台、 AWS RAM 主控台或 AWS CLI 來執行此操作。

**取消共用您擁有的共用專案AWS RAM （主控台）**  
請參閱《*AWS RAM 使用者指南*》中的[更新資源共享](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing.html#working-with-sharing-update)。

**取消共享您擁有的共用專案 (AWS CLI)**  
使用 [disassociate-resource-share](https://docs.aws.amazon.com/cli/latest/reference/ram/disassociate-resource-share.html) 命令。

 ** 取消共用您擁有的專案 (CodeBuild 命令）** 

執行 [delete-resource-policy](https://docs.aws.amazon.com/cli/latest/reference/codebuild/delete-resource-policy.html) 命令並指定您要取消共享之專案的 ARN：

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

# 識別共用專案
<a name="project-sharing-identify"></a>

擁有者和消費者可以使用 AWS CLI 來識別共用專案。

**識別與 AWS 您的帳戶或使用者共用的專案 (AWS CLI)**  
使用 [list-shared-projects](https://docs.aws.amazon.com/cli/latest/reference/codebuild/list-shared-projects.html) 命令執行已與您共用的專案。

# 共用的專案許可
<a name="project-sharing-perms"></a>

## 擁有者的許可
<a name="project-perms-owner"></a>

專案擁有者可以編輯專案，並用它執行建置。

## 消費者的許可
<a name="project-perms-consumer"></a>

專案消費者可以檢視專案及其建置，但無法編輯專案或使用它來執行建置。