

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

# 在 中變更建置專案設定 AWS CodeBuild
<a name="change-project"></a>

您可以使用 AWS CodeBuild 主控台 AWS CLI或 AWS SDKs來變更建置專案的設定。

如果您將測試報告新增至建置專案，請確定您的 IAM 角色具有 中所述的許可[測試報告許可](test-permissions.md)。

**Topics**
+ [變更建置專案的設定 (主控台)](#change-project-console)
+ [變更建置專案的設定 (AWS CLI)](#change-project-cli)
+ [變更建置專案的設定 (AWS SDKs)](#change-project-sdks)

## 變更建置專案的設定 (主控台)
<a name="change-project-console"></a>

若要變更建置專案的設定，請執行下列程序：

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

1. 在導覽窗格中，選擇 **Build projects (建置專案)**。

1. 執行以下任意一項：
   + 選擇您想要變更的組建專案連結，然後選擇 **Build details (組建詳細資訊)**。
   + 選擇您想要變更之組建專案旁的選項按鈕，選擇 **View details (檢視詳細資訊)**，然後選擇 **Build details (組建詳細資訊)**。

您可以修改下列區段：

**Topics**
+ [專案組態](#change-project-console-project-config)
+ [來源](#change-project-console-source)
+ [Environment](#change-project-console-environment)
+ [Buildspec](#change-project-console-buildspec)
+ [批次組態](#change-project-console-batch-config)
+ [成品](#change-project-console-artifacts)
+ [日誌](#change-project-console-logs)

### 專案組態
<a name="change-project-console-project-config"></a>

在**專案組態**區段中，選擇**編輯**。變更完成後，請選擇**更新組態**以儲存新組態。

您可以修改下列屬性。

**Description**  
輸入建置專案的選用描述，以協助其他使用者了解此專案的用途。

**建置徽章**  
選取 **Enable build badge (啟用組建徽章)**，讓專案的組建狀態變成可見且可嵌入。如需詳細資訊，請參閱[建置徽章範例](sample-build-badges.md)。  
如果您的來源提供者是 Amazon S3，則建置徽章不適用。

**啟用並行建置限制**  
如果您想要限制此專案的並行建置數量，請執行下列步驟：  

1. 選取**限制此專案可以啟動的並行建置數量**。

1. 在**並行建置限制**中，輸入此專案允許的並行建置數目上限。此限制不能大於為帳戶設定的並行建置限制。如果您嘗試輸入大於帳戶限制的數字，則會顯示錯誤訊息。
只有當目前的建置數量小於或等於此限制時，才會啟動新的建置。如果目前的建置計數符合此限制，則會調節新的建置且不會執行。

**啟用公有建置存取**  <a name="change-project-console.public-builds"></a>
若要讓專案的建置結果可供公有使用，包括無法存取 AWS 帳戶的使用者，請選取**啟用公有建置存取權**，並確認您要將建置結果設為公有。下列屬性用於公有建置專案：    
**公有建置服務角色**  
如果您想要讓 CodeBuild 為您建立新的服務角色，請選取新服務**角色**；如果您想要使用**現有的服務角色**，請選取現有服務角色。  
公有建置服務角色可讓 CodeBuild 讀取 CloudWatch Logs 並下載專案建置的 Amazon S3 成品。這是讓專案的建置日誌和成品可供大眾使用的必要項目。  
**服務角色**  
輸入新服務角色或現有服務角色的名稱。
若要將專案的建置結果設為私有，請清除**啟用公有建置存取**。  
如需詳細資訊，請參閱[取得公有建置專案 URLs](public-builds.md)。  
在公開專案的建置結果時，請注意下列事項：  
+ 所有專案的建置結果、日誌和成品，包括在專案私有時執行的建置，都可供大眾使用。
+ 所有建置日誌和成品都可供大眾使用。環境變數、原始程式碼和其他敏感資訊可能已輸出到建置日誌和成品。您必須小心將哪些資訊輸出到建置日誌。一些最佳實務如下：
  + 請勿在環境變數中存放敏感值，特別是 AWS 存取金鑰 IDs和私密存取金鑰。建議您使用 Amazon EC2 Systems Manager 參數存放區或 AWS Secrets Manager 來存放敏感值。
  + 遵循 [使用 Webhook 的最佳實務](webhooks.md#webhook-best-practices) 來限制哪些實體可以觸發組建，並且不要將 buildspec 存放在專案本身中，以確保您的 Webhook 盡可能安全。
+ 惡意使用者可以使用公有組建來分發惡意成品。我們建議專案管理員檢閱所有提取請求，以確認提取請求是合法的變更。我們也建議您使用其檢查總和驗證任何成品，以確保下載正確的成品。

**其他資訊**  
對於**標籤**，輸入您希望支援服務 AWS 使用的任何標籤的名稱和值。使用 **Add row (新增資料列)** 來新增標籤。您最多可以新增 50 個標籤。

### 來源
<a name="change-project-console-source"></a>

在**來源**區段中，選擇**編輯**。變更完成後，請選擇**更新組態**以儲存新組態。

您可以修改下列屬性：

**來源提供者**  
選擇來源碼提供者類型。使用下列清單來選擇適合您的來源提供者：  
CodeBuild 不支援 Bitbucket Server。

------
#### [ Amazon S3 ]

 **儲存貯體**   
選擇包含來源碼的輸入儲存貯體名稱。

 **S3 物件金鑰或 S3 資料夾**   
輸入 ZIP 檔案名稱或包含原始碼的資料夾路徑。輸入正斜線 (/) 以下載 S3 儲存貯體中的所有項目。

 **來源版本**   
輸入代表輸入檔案建置之物件的版本 ID。如需更多詳細資訊，請參閱 [使用 的來源版本範例 AWS CodeBuild](sample-source-version.md)。

------
#### [ CodeCommit ]

 **儲存庫**   
選擇您要使用的儲存庫。

**參考類型**  
選擇**分支**、**Git 標籤**或**遞交 ID** 來指定原始程式碼的版本。如需詳細資訊，請參閱[使用 的來源版本範例 AWS CodeBuild](sample-source-version.md)。  
我們建議您選擇看起來不像遞交 IDs的 Git 分支名稱，例如 `811dd1ba1aba14473856cee38308caed7190c0d`或 `5392f7`。這可協助您避免 Git 結帳與實際遞交的衝突。

 **Git 複製深度**   
選擇建立淺複製，將歷史記錄截斷為指定的遞交數量。如果您想要完整複製，請選擇 **Full (完整)**。

**Git 子模組**  
若您要將 Git 子模組包含在您的儲存庫中，請選擇**Use Git submodules (使用 Git 子模組)**。

------
#### [ Bitbucket ]

 **登入資料**   
選擇**預設來源憑證**或**自訂來源憑證**，然後依照指示管理預設來源憑證或自訂來源憑證。

 **連線類型**   
選擇 **CodeConnections**、**OAuth**、**應用程式密碼**或**個人存取字符**以連線至 CodeBuild。

 **Connection (連線)**   
選取 Bitbucket 連線或 Secrets Manager 秘密，以透過您指定的連線類型進行連線。

 **儲存庫**   
在**我的 Bitbucket 帳戶或公有儲存庫中選擇****儲存庫**，然後輸入儲存庫 URL。

 **來源版本**   
輸入分支、遞交 ID、標籤或參考和遞交 ID。如需詳細資訊，請參閱[使用 的來源版本範例 AWS CodeBuild](sample-source-version.md)   
我們建議您選擇看起來不像遞交 IDs的 Git 分支名稱，例如 `811dd1ba1aba14473856cee38308caed7190c0d`或 `5392f7`。這可協助您避免 Git 結帳與實際遞交的衝突。

 **Git 複製深度**   
選擇 **Git clone depth (Git 複製深度)**，建立記錄截取至指定遞交數的 Shallow 複製。如果您想要完整複製，請選擇 **Full (完整)**。

**Git 子模組**  
若您要將 Git 子模組包含在您的儲存庫中，請選擇**Use Git submodules (使用 Git 子模組)**。

**建置狀態**  
如果您希望**向來源提供者報告建置的開始和完成狀態，請在建置開始和完成時**，選取向來源提供者報告建置狀態。  
若要能夠向來源提供者報告建置狀態，與來源提供者相關聯的使用者必須具有儲存庫的寫入存取權。如果使用者沒有寫入存取權，則無法更新建置狀態。如需詳細資訊，請參閱[來源提供者存取](access-tokens.md)。  
在**狀態內容**中，輸入要用於 Bitbucket 遞交狀態中`name`參數的值。如需詳細資訊，請參閱 Bitbucket API 文件中的[建置](https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D/commit/%7Bnode%7D/statuses/build)。  
針對**目標 URL**，輸入要用於 Bitbucket 遞交狀態中 `url` 參數的值。如需詳細資訊，請參閱 Bitbucket API 文件中的[建置](https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Bworkspace%7D/%7Brepo_slug%7D/commit/%7Bnode%7D/statuses/build)。  
Webhook 觸發的組建狀態一律會回報給來源提供者。若要讓從主控台啟動的組建狀態或向來源提供者回報的 API 呼叫，您必須選取此設定。  
如果您專案的建置是由 Webhook 觸發，您必須將新的遞交推送至儲存庫，此設定的變更才會生效。

在**主要來源 Webhook 事件**中，如果您希望 CodeBuild **每次將程式碼變更推送至此儲存庫**時都建置原始碼，請選取在每次將程式碼變更推送至此儲存庫時重建。如需 Webhook 和篩選群組的詳細資訊，請參閱 [Bitbucket Webhook 事件](bitbucket-webhook.md)。

------
#### [ GitHub ]

 **登入資料**   
選擇**預設來源憑證**或**自訂來源憑證**，然後依照指示管理預設來源憑證或自訂來源憑證。

 **連線類型**   
選擇 **GitHub 應用程式**、**OAuth** 或**個人存取字符**以連線至 CodeBuild。

 **Connection (連線)**   
選取 GitHub 連線或 Secrets Manager 秘密，以透過您指定的連線類型進行連線。

 **儲存庫**   
在**我的 GitHub 帳戶、公有儲存庫或 GitHub 範圍 Webhook 中選擇儲存庫**，然後輸入儲存庫 URL。 **** **GitHub ** 

 **來源版本**   
輸入分支、遞交 ID、標籤或參考和遞交 ID。如需詳細資訊，請參閱[使用 的來源版本範例 AWS CodeBuild](sample-source-version.md)   
我們建議您選擇看起來不像遞交 IDs的 Git 分支名稱，例如 `811dd1ba1aba14473856cee38308caed7190c0d`或 `5392f7`。這可協助您避免 Git 結帳與實際遞交的衝突。

 **Git 複製深度**   
選擇 **Git clone depth (Git 複製深度)**，建立記錄截取至指定遞交數的 Shallow 複製。如果您想要完整複製，請選擇 **Full (完整)**。

**Git 子模組**  
若您要將 Git 子模組包含在您的儲存庫中，請選擇**Use Git submodules (使用 Git 子模組)**。

**建置狀態**  
如果您希望**向來源提供者報告建置的開始和完成狀態，請在建置開始和完成時**，選取向來源提供者報告建置狀態。  
若要能夠向來源提供者報告建置狀態，與來源提供者相關聯的使用者必須具有儲存庫的寫入存取權。如果使用者沒有寫入存取權，則無法更新建置狀態。如需詳細資訊，請參閱[來源提供者存取](access-tokens.md)。  
在**狀態內容**中，輸入要用於 GitHub 遞交狀態中 `context` 參數的值。如需詳細資訊，請參閱《GitHub 開發人員指南》中的[建立認可狀態](https://developer.github.com/v3/repos/statuses/#create-a-commit-status)。  
針對**目標 URL**，輸入 GitHub 遞交狀態`target_url`中參數要使用的值。如需詳細資訊，請參閱《GitHub 開發人員指南》中的[建立認可狀態](https://developer.github.com/v3/repos/statuses/#create-a-commit-status)。  
Webhook 觸發的組建狀態一律會回報給來源提供者。若要讓從主控台啟動的組建狀態或向來源提供者回報的 API 呼叫，您必須選取此設定。  
如果您專案的建置是由 Webhook 觸發，您必須將新的遞交推送至儲存庫，此設定的變更才會生效。

在**主要來源 Webhook 事件**中，如果您希望 CodeBuild **每次將程式碼變更推送至此儲存庫**時都建置原始碼，請選取在每次將程式碼變更推送至此儲存庫時重建。如需 Webhook 和篩選群組的詳細資訊，請參閱 [GitHub Webhook 事件](github-webhook.md)。

------
#### [ GitHub Enterprise Server ]

 **登入資料**   
選擇**預設來源登入**資料或**自訂來源登入資料**，然後依照指示管理預設來源登入資料或自訂來源登入資料。

 **連線類型**   
選擇 **CodeConnections** 或**個人存取字符**以連線至 CodeBuild。

 **Connection (連線)**   
選取 GitHub Enterprise 連線或 Secrets Manager 秘密，以透過您指定的連線類型進行連線。

 **儲存庫**   
在**我的 GitHub Enterprise 帳戶或 GitHub Enterprise 範圍 Webhook 中選擇儲存庫**，然後輸入儲存庫 URL。 **GitHub ** 

**來源版本**  
輸入提取請求、分支、遞交 ID、標籤或參考和遞交 ID。如需詳細資訊，請參閱[使用 的來源版本範例 AWS CodeBuild](sample-source-version.md)。  
我們建議您選擇看起來不像遞交 IDs的 Git 分支名稱，例如 `811dd1ba1aba14473856cee38308caed7190c0d`或 `5392f7`。這可協助您避免 Git 結帳與實際遞交的衝突。

**Git 複製深度**  
選擇 **Git clone depth (Git 複製深度)**，建立記錄截取至指定遞交數的 Shallow 複製。如果您想要完整複製，請選擇 **Full (完整)**。

**Git 子模組**  
若您要將 Git 子模組包含在您的儲存庫中，請選擇**Use Git submodules (使用 Git 子模組)**。

**建置狀態**  
如果您希望**向來源提供者回報建置的開始和完成狀態，請在建置開始和完成時**，選取向來源提供者報告建置狀態。  
若要能夠向來源提供者報告建置狀態，與來源提供者相關聯的使用者必須具有儲存庫的寫入存取權。如果使用者沒有寫入存取權，則無法更新建置狀態。如需詳細資訊，請參閱[來源提供者存取](access-tokens.md)。  
在**狀態內容**中，輸入要用於 GitHub 遞交狀態中`context`參數的值。如需詳細資訊，請參閱《GitHub 開發人員指南》中的[建立認可狀態](https://developer.github.com/v3/repos/statuses/#create-a-commit-status)。  
針對**目標 URL**，輸入要用於 GitHub 遞交狀態中 `target_url` 參數的值。如需詳細資訊，請參閱《GitHub 開發人員指南》中的[建立認可狀態](https://developer.github.com/v3/repos/statuses/#create-a-commit-status)。  
Webhook 觸發的組建狀態一律會回報給來源提供者。若要讓從主控台啟動的組建狀態或向來源提供者回報的 API 呼叫，您必須選取此設定。  
如果您專案的建置是由 Webhook 觸發，您必須將新的遞交推送至儲存庫，此設定的變更才會生效。

**不安全的 SSL**  
選取 **Enable insecure SSL (啟用不安全 SSL)**，在連線至 GitHub Enterprise 專案儲存庫時忽略 SSL 警告。

在**主要來源 Webhook 事件**中，如果您希望 CodeBuild **每次將程式碼變更推送至此儲存庫**時都建置原始碼，請選取在每次將程式碼變更推送至此儲存庫時重建。如需 Webhook 和篩選群組的詳細資訊，請參閱 [GitHub Webhook 事件](github-webhook.md)。

------
#### [ GitLab ]

 **登入資料**   
選擇**預設來源憑證**或**自訂來源憑證**，然後依照指示管理預設來源憑證或自訂來源憑證。

 **連線類型**   
**CodeConnections** 用於將 GitLab 連線至 CodeBuild。

 **Connection (連線)**   
選取要透過 CodeConnections 連線的 GitLab 連線。

 **儲存庫**   
選擇您要使用的儲存庫。

 **來源版本**   
輸入提取請求 ID、分支、遞交 ID、標籤或參考和遞交 ID。如需詳細資訊，請參閱[使用 的來源版本範例 AWS CodeBuild](sample-source-version.md)。  
我們建議您選擇看起來不像遞交 IDs的 Git 分支名稱，例如 `811dd1ba1aba14473856cee38308caed7190c0d`或 `5392f7`。這可協助您避免 Git 結帳與實際遞交的衝突。

 **Git 複製深度**   
選擇 **Git clone depth (Git 複製深度)**，建立記錄截取至指定遞交數的 Shallow 複製。如果您想要完整複製，請選擇 **Full (完整)**。

**建置狀態**  
如果您希望**向來源提供者回報建置的開始和完成狀態，請在建置開始和完成時**，選取向來源提供者報告建置狀態。  
若要能夠向來源提供者報告建置狀態，與來源提供者相關聯的使用者必須具有儲存庫的寫入存取權。如果使用者沒有寫入存取權，則無法更新建置狀態。如需詳細資訊，請參閱[來源提供者存取](access-tokens.md)。

------
#### [ GitLab Self Managed ]

 **登入資料**   
選擇**預設來源憑證**或**自訂來源憑證**，然後依照指示管理預設來源憑證或自訂來源憑證。

 **連線類型**   
**CodeConnections** 用於將 GitLab 自我管理連線至 CodeBuild。

 **Connection (連線)**   
選取要透過 CodeConnections 連線的 GitLab 自我管理連線。

 **儲存庫**   
選擇您要使用的儲存庫。

 **來源版本**   
輸入提取請求 ID、分支、遞交 ID、標籤或參考和遞交 ID。如需詳細資訊，請參閱[使用 的來源版本範例 AWS CodeBuild](sample-source-version.md)。  
我們建議您選擇看起來不像遞交 IDs的 Git 分支名稱，例如 `811dd1ba1aba14473856cee38308caed7190c0d`或 `5392f7`。這可協助您避免 Git 結帳與實際遞交的衝突。

 **Git 複製深度**   
選擇 **Git clone depth (Git 複製深度)**，建立記錄截取至指定遞交數的 Shallow 複製。如果您想要完整複製，請選擇 **Full (完整)**。

**建置狀態**  
如果您想要**向來源提供者報告建置的開始和完成狀態，請在建置開始和完成時**，選取向來源提供者報告建置狀態。  
若要能夠向來源提供者報告建置狀態，與來源提供者相關聯的使用者必須具有儲存庫的寫入存取權。如果使用者沒有寫入存取權，則無法更新建置狀態。如需詳細資訊，請參閱[來源提供者存取](access-tokens.md)。

------

### Environment
<a name="change-project-console-environment"></a>

在**環境**區段中，選擇**編輯**。變更完成後，請選擇**更新組態**以儲存新組態。

您可以修改下列屬性：

**佈建模型**  
若要變更佈建模型，請選擇**變更佈建模型**，然後執行下列其中一項操作：  
+ 若要使用由 管理的隨需機群 AWS CodeBuild，請選擇**隨需**。透過隨需機群，CodeBuild 為您的建置提供運算。這些機器會在建置完成時銷毀。隨需機群受到完整管理，並包含自動擴展功能，可處理需求激增。
+ 若要使用由 管理的預留容量機群 AWS CodeBuild，請選擇**預留容量**，然後選取**機群名稱**。使用預留容量機群，您可以為建置環境設定一組專用執行個體。這些機器保持閒置狀態，準備好立即處理組建或測試，並減少組建持續時間。使用預留容量機群時，您的機器一律在執行中，只要佈建，就會持續產生成本。
如需相關資訊，請參閱[在預留容量機群上執行組建](fleets.md)。

**環境映像**  
若要變更建置映像，請選擇**覆寫映像**並執行下列其中一項操作：  
+ 若要使用由 管理的 Docker 映像 AWS CodeBuild，請選擇**受管映像**，然後從**作業系統**、**執行期 (Runtime)**、**映像**和**映像版本**進行選擇。若可用，請從 **Environment type (環境類型)** 進行選擇。
+ 若要使用另一個 Docker 映像，請選擇 **Custom image (自訂映像)**。針對**環境類型**，選擇 **ARM**、**Linux**、**Linux GPU** 或 **Windows**。如果您選擇**其他登錄**檔，請針對**外部登錄檔 URL**，使用 格式，在 Docker Hub 中輸入 Docker 映像檔的名稱和標籤`docker repository/docker image name`。如果您選擇 **Amazon ECR**，請使用 **Amazon ECR 儲存庫**和 **Amazon ECR 映像**來選擇 AWS 帳戶中的 Docker 映像。
+ 若要使用私有 Docker 映像，請選擇**自訂映像**。針對**環境類型**，選擇 **ARM**、**Linux**、**Linux GPU** 或 **Windows**。針對 **Image registry (映像登錄)** 選擇 **Other registry (其他登錄)**，然後輸入私人 Docker 映像的憑證的 ARN。登入資料必須由 Secrets Manager 建立。如需詳細資訊，請參閱《 AWS Secrets Manager使用者指南》**中的 [What Is AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/)。
CodeBuild 會覆寫自訂 Docker 映像`ENTRYPOINT`的 。

**服務角色**  
執行以下任意一項：  
+ 如果您沒有 CodeBuild 服務角色，請選擇**新服務角色**。在**角色名稱**中，輸入新角色的名稱。
+ 如果您有 CodeBuild 服務角色，請選擇**現有服務角色**。在**角色 ARN** 中，選擇服務角色。
當您使用 主控台建立建置專案時，您可以同時建立 CodeBuild 服務角色。根據預設，此角色只能與該建置專案搭配運作。如果您使用主控台將此服務角色與另一個建置專案建立關聯，則會更新此角色以與其他建置專案搭配運作。服務角色最多可以與 10 個組建專案搭配運作。

**其他組態**    
**Timeout (逾時)**  
指定介於 5 分鐘到 36 小時之間的值，之後 CodeBuild 會在未完成時停止建置。如果 **hours (小時)** 和 **minutes (分鐘)** 空白，則會使用預設值 60 分鐘。  
**特殊權限**  
**如果您想要建置 Docker 映像或希望建置獲得更高的權限，請選取啟用此旗標。** 只有在您打算使用此建置專案建置 Docker 映像時。否則，所有嘗試與 Docker 協助程式互動的相關建置都會失敗。您也必須啟動 Docker 協助程式，以讓您的建置與其互動。執行這項操作的一種方式是執行下列建置命令，以在建置規格的 `install` 階段中初始化 Docker 協助程式。如果您選擇 CodeBuild 透過 Docker 支援提供的建置環境映像，請勿執行這些命令。  
根據預設，Docker 協助程式會針對非 VPC 建置啟用。如果您想要將 Docker 容器用於 VPC 建置，請參閱 Docker 文件網站上的[執行期權限和 Linux 功能](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities)，並啟用特權模式。此外，Windows 不支援特殊權限模式。

```
- nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 &
- timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
```  
**VPC**  
如果您希望 CodeBuild 使用您的 VPC：  
+ 針對 **VPC**，選擇 CodeBuild 使用的 VPC ID。
+ 針對 **VPC 子網路**，選擇包含 CodeBuild 使用之資源的子網路。
+ 針對 **VPC 安全群組**，選擇 CodeBuild 用來允許存取 VPCs 中資源的安全群組。
如需詳細資訊，請參閱[AWS CodeBuild 搭配 Amazon Virtual Private Cloud 使用](vpc-support.md)。  
**運算**  
選擇其中一個可用的選項。  
**登錄檔登入資料**  
使用非私有登錄檔映像設定專案時，指定登錄檔登入資料。  
只有在映像被私有登錄檔的映像覆寫時，才會使用此登入資料。  
**環境變數**  
輸入名稱和值，然後選擇要用於組建的每個環境變數類型。  
CodeBuild 會自動為您的 AWS 區域設定環境變數。如果您尚未在 buildspec.yml 中加入環境變數，您必須加以設定：  
+ AWS\$1ACCOUNT\$1ID
+ IMAGE\$1REPO\$1NAME
+ IMAGE\$1TAG
主控台和 AWS CLI 使用者可以查看環境變數。如果您不在意環境變數的可見性，請設定 **Name (名稱)** 和 **Value (值)** 欄位，然後將 **Type (類型)** 設定為 **Plaintext (純文字)**。  
我們建議您存放具有敏感值的環境變數，例如 AWS 存取金鑰 ID、 AWS 私密存取金鑰或密碼，做為 Amazon EC2 Systems Manager 參數存放區或 中的參數 AWS Secrets Manager。  
如果您使用 Amazon EC2 Systems Manager 參數存放區，則針對**類型**，選擇**參數**。針對**名稱**，輸入 CodeBuild 要參考的識別符。針對**值**，輸入儲存在 Amazon EC2 Systems Manager 參數存放區中的參數名稱。使用名為 `/CodeBuild/dockerLoginPassword` 的參數做為範例，針對 **Type (類型)**，選擇 **Parameter (參數)**。對於**名稱**，輸入 `LOGIN_PASSWORD`。針對**數值**，輸入 `/CodeBuild/dockerLoginPassword`。  
如果您使用 Amazon EC2 Systems Manager 參數存放區，建議您使用開頭為 的參數名稱來存放參數 `/CodeBuild/`（例如，`/CodeBuild/dockerLoginPassword`)。您可以使用 CodeBuild 主控台在 Amazon EC2 Systems Manager 中建立參數。選擇 **Create parameter (建立參數)**，然後遵循對話方塊中的說明。（在該對話方塊中，對於 **KMS 金鑰**，您可以在帳戶中指定 AWS KMS 金鑰的 ARN。 Amazon EC2 Systems Manager 使用此金鑰在儲存期間加密參數的值，並在擷取期間解密。) 如果您使用 CodeBuild 主控台建立參數，主控台會在儲存參數`/CodeBuild/`時以 啟動參數名稱。如需詳細資訊，請參閱《*Amazon EC2 Systems Manager 使用者指南*》中的 [Systems Manager 參數存放區](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-paramstore.html)和 [Systems Manager 參數存放區主控台演練](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-walk.html#sysman-paramstore-console)。  
如果您的建置專案參考 Amazon EC2 Systems Manager 參數存放區中存放的參數，則建置專案的服務角色必須允許 `ssm:GetParameters`動作。如果您先前選擇**新服務角色**，CodeBuild 會將此動作包含在建置專案的預設服務角色中。不過，如果您選擇 **Existing service role (現有服務角色)**，則您必須個別將此動作包含在服務角色中。  
如果您的建置專案參考存放在 Amazon EC2 Systems Manager 參數存放區中的參數，其參數名稱不是以 開頭`/CodeBuild/`，而且您選擇了**新服務角色**，則必須更新該服務角色，以允許存取不是以 開頭的參數名稱`/CodeBuild/`。這是因為該服務角色僅允許存取開頭為 `/CodeBuild/` 的參數名稱。  
如果您選擇**新增服務角色**，服務角色會包含許可，以解密 Amazon EC2 Systems Manager 參數存放區中`/CodeBuild/`命名空間下的所有參數。  
您設定的環境變數會取代現有環境變數。例如，如果 Docker 影像已包含名為 `MY_VAR` 且值為 `my_value` 的環境變數，而且您設定名為 `MY_VAR` 且值為 `other_value` 的環境變數，則 `my_value` 會取代為 `other_value`。同樣地，如果 Docker 影像已包含名為 `PATH` 且值為 `/usr/local/sbin:/usr/local/bin` 的環境變數，而且您設定名為 `PATH` 且值為 `$PATH:/usr/share/ant/bin` 的環境變數，則 `/usr/local/sbin:/usr/local/bin` 會取代為文字值 `$PATH:/usr/share/ant/bin`。  
請不要設定名稱開頭為 `CODEBUILD_` 的任何環境變數。此字首保留供 內部使用。  
如果有多個位置定義同名的環境變數，則會決定值，如下所示：  
+ 開始建置操作呼叫中的值會採用最高優先順序。
+ 組建專案定義中的值會採用下一個優先順序。
+ buildspec 宣告中的值會採用最低優先順序。
如果您使用 Secrets Manager，請針對**類型**選擇 **Secrets Manager**。針對**名稱**，輸入 CodeBuild 要參考的識別符。針對 **Value (值)**，請、使用 `secret-id:json-key:version-stage:version-id` 模式輸入 `reference-key`。如需相關資訊，請參閱[Secrets Manager reference-key in the buildspec file](build-spec-ref.md#secrets-manager-build-spec)。  
如果您使用 Secrets Manager，我們建議您存放名稱開頭為 的秘密 `/CodeBuild/`（例如 `/CodeBuild/dockerLoginPassword`)。如需詳細資訊，請參閱《 AWS Secrets Manager使用者指南》**中的 [What Is AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)。  
如果您的建置專案參考存放在 Secrets Manager 中的秘密，則建置專案的服務角色必須允許 `secretsmanager:GetSecretValue`動作。如果您先前選擇**新服務角色**，CodeBuild 會將此動作包含在建置專案的預設服務角色中。不過，如果您選擇 **Existing service role (現有服務角色)**，則您必須個別將此動作包含在服務角色中。  
如果您的建置專案參考存放在 Secrets Manager 中的秘密，其秘密名稱不是以 開頭`/CodeBuild/`，而且您選擇了**新服務角色**，則您必須更新服務角色，以允許存取不是以 開頭的秘密名稱`/CodeBuild/`。這是因為服務角色僅允許存取開頭為 的秘密名稱`/CodeBuild/`。  
如果您選擇**新服務角色**，服務角色會包含許可，以解密 Secrets Manager 中`/CodeBuild/`命名空間下的所有秘密。

### Buildspec
<a name="change-project-console-buildspec"></a>

在 **Buildspec** 區段中，選擇**編輯**。變更完成後，請選擇**更新組態**以儲存新組態。

您可以修改下列屬性：

**組建規格**  
執行以下任意一項：  
+ 如果您的來源碼包含 buildspec 檔案，請選擇 **Use a buildspec file (使用 buildspec 檔案)**。根據預設，CodeBuild `buildspec.yml`會在來源碼根目錄中尋找名為 的檔案。如果您的 buildspec 檔案使用不同的名稱或位置，請在 **Buildspec 名稱**中輸入來源根的路徑 （例如， `buildspec-two.yml`或 `configuration/buildspec.yml`。 如果 buildspec 檔案位於 S3 儲存貯體中，它必須與您的建置專案位於相同的 AWS 區域。 使用其 ARN 指定 buildspec 檔案 （例如，`arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml`)。
+ 如果您的來源碼未包含 buildspec 檔案，或者，您要執行的組建命令與針對 `build` 階段 (位於來源碼根目錄的 `buildspec.yml` 檔案中) 所指定的組建命令不同，則請選擇 **Insert build commands (插入組建命令)**。針對 **Build commands (組建命令)**，在 `build` 階段中輸入您要執行的命令。針對多個命令，以 `&&` 區隔每個命令 (例如，`mvn test && mvn package`)。若要在其他階段執行命令，或者如果您有該`build`階段的長命令清單，請將`buildspec.yml`檔案新增至來源碼根目錄、將命令新增至檔案，然後在**來源碼根目錄中選擇使用 buildspec.yml**。
如需更多資訊，請參閱[Buildspec 參考](build-spec-ref.md)。

### 批次組態
<a name="change-project-console-batch-config"></a>

在**批次組態**區段中，選擇**編輯**。變更完成後，請選擇**更新組態**以儲存新組態。如需詳細資訊，請參閱[批次執行組建](batch-build.md)。

您可以修改下列屬性：

**批次服務角色**  
提供批次建置的服務角色。  
選擇下列其中一項：  
+ 如果您沒有批次服務角色，請選擇**新服務角色**。在**服務角色**中，輸入新角色的名稱。
+ 如果您有批次服務角色，請選擇**現有服務角色**。在**服務角色**中，選擇服務角色。
批次建置在批次組態中導入新的安全性角色。此新角色是必要的，因為 CodeBuild 必須能夠代表您呼叫 `StartBuild`、`StopBuild` 和 `RetryBuild` 動作，才能在批次處理中執行組建。客戶應該使用新的角色，而不是與他們在組建中使用的角色相同，原因有兩個：  
+ 賦予建置角色 `StartBuild`、`StopBuild` 和 `RetryBuild` 權限，此將允許單一組建透過 buildspec 啟動更多組建。
+ CodeBuild 批次建置提供限制，限制可用於批次中建置的建置和運算類型數目。如果組建角色具有這些權限，組建本身可能會略過這些限制。

**批次允許的運算類型**  
選取批次允許的運算類型。選取所有適用項目。

**批次允許的機群**  
選取批次允許的機群。選取所有適用項目。

**批次允許的建置上限**  
輸入批次中允許的組建數目上限。如果批次超過此限制，批次將會失敗。

**批次逾時**  
輸入批次建置完成的時間上限。

**合併成品**  
選取**將所有成品從批次合併到單一位置**，讓批次中的所有成品合併到單一位置。

 **批次報告模式**   
選取批次組建所需的組建狀態報告模式。  
只有在專案來源為 Bitbucket、GitHub 或 GitHub Enterprise 時，才能使用此欄位，並在**來源下選取建置開始和完成時，向來源提供者報告建置狀態**。 ****  
 **彙總組建**   
選取以將批次中所有組建的狀態合併為單一狀態報告。  
 **個別組建**   
選取 ，讓批次中所有組建的組建狀態分別回報。

### 成品
<a name="change-project-console-artifacts"></a>

在**成品**區段中，選擇**編輯**。變更完成後，請選擇**更新組態**以儲存新組態。

您可以修改下列屬性：

**類型**  
執行以下任意一項：  
+ 如果您不要建立任何建置輸出成品，則請選擇 **No artifacts (無成品)**。如果您只執行建置測試，或想要將 Docker 映像推送至 Amazon ECR 儲存庫，建議您執行此操作。
+ 若要將建置輸出存放在 S3 儲存貯體，請選擇 **Amazon S3**，然後執行下列動作：
  + 如果您想要使用專案名稱做為組建輸出 ZIP 檔案或資料夾名稱，則請將 **Name (名稱)** 保留空白。否則請輸入名稱。(如果您想要輸出 ZIP 檔案，並且想要 ZIP 檔案有副檔名，則請務必將其包含在 ZIP 檔案名稱後面。)
  + 如果您想要 buildspec 檔案中所指定的名稱來覆寫主控台中所指定的任何名稱，請選取 **Enable semantic versioning (啟用語意版本控制)**。buildspec 檔案中的名稱是在建置時計算，並使用 Shell 命令語言。例如，您可以將日期和時間附加到成品名稱，讓它一律是唯一的。唯一成品名稱可防止覆寫成品。如需詳細資訊，請參閱[Buildspec 語法](build-spec-ref.md#build-spec-ref-syntax)。
  + 針對 **Bucket name (儲存貯體名稱)**，選擇輸出儲存貯體的名稱。
  + 如果您在本程序稍早選擇 **Insert build commands (插入組建命令)**，然後針對 **Output files (輸出檔案)**，輸入要放入組建輸出 ZIP 檔案或資料夾之組建中的檔案位置。針對多個位置，以逗號區隔每個位置 (例如，`appspec.yml, target/my-app.jar`)。如需詳細資訊，請參閱[Buildspec 語法](build-spec-ref.md#build-spec-ref-syntax)中的 `files` 描述。
  + 如果您不想要加密建置成品，請選取 **Remove artifacts encryption (移除成品加密)**。
針對您想要的每組次要成品：  

1. 針對 **Artifact identifier (成品識別符)**，輸入的值少於 128 個字元，並且只包含英數字元和底線。

1. 選擇 **Add artifact (新增成品)**。

1. 遵循先前的步驟來設定您的次要成品。

1. 選擇 **Save artifact (儲存成品)**。

**其他組態**    
**加密金鑰**  
執行以下任意一項：  
+ 若要使用帳戶中的 AWS 受管金鑰 Amazon S3 來加密建置輸出成品，請將**加密金鑰**保留空白。這是預設值。
+ 若要使用客戶受管金鑰來加密建置輸出成品，請在**加密金鑰**中輸入客戶受管金鑰的 ARN。使用 `arn:aws:kms:region-ID:account-ID:key/key-ID` 格式。  
**快取類型**  
針對 **Cache type (快取類型)**，選擇以下其中一項：  
+ 如果您不想要使用快取，請選擇 **No cache (無快取)**。
+ 如果您想要使用 Amazon S3 快取，請選擇 **Amazon S3**，然後執行下列動作：
  + 針對 **Bucket (儲存貯體)**，選擇存放快取的 S3 儲存貯體名稱。
  + （選用） 對於**快取路徑字首**，輸入 Amazon S3 路徑字首。**Cache path prefix (快取路徑字首)** 值類似目錄名稱。它可讓您將快取存放至儲存貯體的相同目錄下方。
**重要**  
請不要在路徑字首結尾附加尾端斜線 (/)。
+  如果您想要使用本機快取，請選擇 **Local (本機)**，然後選擇一或多個本機快取模式。
**注意**  
「Docker layer cache」(Docker 層快取) 模式僅適用於 Linux。如果您選擇此模式，您的專案必須以特殊權限模式執行。
使用快取可節省大量建置時間，因為建置環境的可重複使用部分存放在快取中，並用於各建置。如需在 buildspec 檔案中指定快取的詳細資訊，請參閱[Buildspec 語法](build-spec-ref.md#build-spec-ref-syntax)。如需快取的詳細資訊，請參閱「[快取建置以改善效能](build-caching.md)」。

### 日誌
<a name="change-project-console-logs"></a>

在**日誌**區段中，選擇**編輯**。變更完成後，請選擇**更新組態**以儲存新組態。

您可以修改下列屬性：

選擇您要建立的日誌。您可以建立 Amazon CloudWatch Logs、Amazon S3 Logs 或兩者。

**CloudWatch**  
如果您想要 Amazon CloudWatch Logs 日誌：    
**CloudWatch 日誌**  
選取 **CloudWatch 日誌**。  
**Group name** (群組名稱)  
輸入 Amazon CloudWatch Logs 日誌群組的名稱。  
**串流名稱**  
輸入您的 Amazon CloudWatch Logs 日誌串流名稱。

**S3**  
如果您想要 Amazon S3 日誌：    
**S3 日誌**  
選取 **S3 logs (S3 日誌)**。  
**儲存貯體**  
選擇日誌的 S3 儲存貯體名稱。  
**路徑字首**  
輸入日誌的字首。  
**停用 S3 日誌加密**  
如果您不希望 S3 日誌加密，請選取 。

## 變更建置專案的設定 (AWS CLI)
<a name="change-project-cli"></a>

如需 AWS CLI 搭配 使用 的詳細資訊 AWS CodeBuild，請參閱 [命令列參考](cmd-ref.md)。

若要使用 更新 CodeBuild 專案 AWS CLI，您可以建立具有更新屬性的 JSON 檔案，並將該檔案傳遞至 [https://docs.aws.amazon.com/cli/latest/reference/codebuild/update-project.html](https://docs.aws.amazon.com/cli/latest/reference/codebuild/update-project.html)命令。更新檔案中未包含的任何屬性保持不變。

在更新 JSON 檔案中，只需要 `name` 屬性和修改過的屬性。`name` 屬性可識別要修改的專案。對於任何修改的結構，也必須包含這些結構的必要參數。例如，若要修改專案的環境，需要 `environment/type`和 `environment/computeType` 屬性。以下是更新環境映像的範例：

```
{
  "name": "<project-name>",
  "environment": {
    "type": "LINUX_CONTAINER",
    "computeType": "BUILD_GENERAL1_SMALL",
    "image": "aws/codebuild/amazonlinux-x86_64-standard:4.0"
  }
}
```

如果您需要取得專案的目前屬性值，請使用 [https://docs.aws.amazon.com/cli/latest/reference/codebuild/batch-get-projects.html](https://docs.aws.amazon.com/cli/latest/reference/codebuild/batch-get-projects.html)命令來取得您正在修改之專案的目前屬性，並將輸出寫入檔案。

```
aws codebuild batch-get-projects --names "<project-name>" > project-info.json
```

*project-info.json* 檔案包含一系列專案，因此無法直接用於更新專案。不過，您可以從 *project-info.json* 檔案複製要修改的屬性，並將其貼到您的更新檔案中，做為您要修改屬性的基準。如需詳細資訊，請參閱[檢視建置專案的詳細資訊 (AWS CLI)](view-project-details.md#view-project-details-cli)。

如中所述修改更新 JSON 檔案[建立建置專案 (AWS CLI)](create-project.md#create-project-cli)，並儲存結果。當您完成修改更新 JSON 檔案時，請執行 [https://docs.aws.amazon.com/cli/latest/reference/codebuild/update-project.html](https://docs.aws.amazon.com/cli/latest/reference/codebuild/update-project.html)命令，傳遞更新 JSON 檔案。

```
aws codebuild update-project --cli-input-json file://<update-project-file>
```

如果成功，更新的專案 JSON 會出現在輸出中。如果缺少任何必要的參數，輸出中會顯示錯誤訊息，以識別缺少的參數。例如，如果缺少 `environment/type` 參數，則會顯示錯誤訊息：

```
aws codebuild update-project --cli-input-json file://update-project.json

Parameter validation failed:
Missing required parameter in environment: "type"
```

## 變更建置專案的設定 (AWS SDKs)
<a name="change-project-sdks"></a>

如需 AWS CodeBuild 搭配 AWS SDKs 使用 的詳細資訊，請參閱 [AWS SDKs和工具參考](sdk-ref.md)。