

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

# 在 中建立建置專案 AWS CodeBuild
<a name="create-project"></a>

您可以使用 AWS CodeBuild 主控台 AWS CLI或 AWS SDKs來建立建置專案。

**Topics**
+ [

## 先決條件
](#create-project-prerequisites)
+ [

## 建立組建專案 (主控台)
](#create-project-console)
+ [

## 建立建置專案 (AWS CLI)
](#create-project-cli)
+ [

## 建立建置專案AWS SDKs)
](#create-project-sdks)
+ [

## 建立建置專案 (CloudFormation)
](#create-project-cloud-formation)

## 先決條件
<a name="create-project-prerequisites"></a>

在建立建置專案之前，請回答 中的問題[規劃組建](planning.md)。

## 建立組建專案 (主控台)
<a name="create-project-console"></a>

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

 如果顯示 CodeBuild 資訊頁面，請選擇**建立組建專案**。否則，在導覽窗格中，展開**組**建，選擇**組建專案**，然後選擇**建立組建專案**。

選擇 **Create build project (建立建置專案)**。

填寫下列各節。完成後，選擇頁面底部的**建立建置專案**。

**Topics**
+ [

### 專案組態
](#create-project-console-project-config)
+ [

### 來源
](#create-project-console-source)
+ [

### 環境
](#create-project-console-environment)
+ [

### Buildspec
](#create-project-console-buildspec)
+ [

### 批次組態
](#create-project-console-batch-config)
+ [

### 成品
](#create-project-console-artifacts)
+ [

### 日誌
](#create-project-console-logs)

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

**Project name (專案名稱)**  
輸入此建置專案的名稱。組建專案名稱在每個 AWS 帳戶中必須是唯一的。

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

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

**啟用並行建置限制**  <a name="enable-concurrent-build-limit.console"></a>
（選用） 如果您想要限制此專案的並行建置數量，請執行下列步驟：  

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

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

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

### 來源
<a name="create-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 (連線)**   
選取 GitLab 自我管理連線，以透過 CodeConnections 進行連線。

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

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

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

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

------

### 環境
<a name="create-project-console-environment"></a>

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

**環境映像**  <a name="environment-image.console"></a>
執行以下任意一項：  
+ 若要使用由 管理的 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`的 。

**運算**  
執行以下任意一項：  
+ 若要使用 EC2 運算，請選擇 **EC2**。EC2 運算可在動作執行期間提供最佳化的彈性。
+ 若要使用 Lambda 運算，請選擇 **Lambda**。Lambda 運算為您的建置提供最佳化的啟動速度。由於啟動延遲較低，Lambda 支援更快速的建置。Lambda 也會自動擴展，因此組建不會在佇列中等待執行。如需相關資訊，請參閱 [在 AWS Lambda 運算上執行組建](lambda.md)。

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

**其他組態**    
**自動重試限制**  
指定在建置失敗後的其他自動重試次數。例如，如果自動重試限制設為 2，CodeBuild 將呼叫 `RetryBuild` API 以自動重試您的建置最多額外 2 次。  
**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 *  
如果您的建置專案參考 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="create-project-console-buildspec"></a>

**組建規格**  
執行以下任意一項：  
+ 如果您的來源碼包含 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="create-project-console-batch-config"></a>

您可以執行組建群組做為單一操作。如需詳細資訊，請參閱[批次執行組建](batch-build.md)。

**定義批次組態**  
選取以允許此專案中的批次建置。

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

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

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

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

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

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

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

### 成品
<a name="create-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 的 來加密建置輸出成品，請將**加密金鑰**保留空白。此為預設值。
+ 若要使用客戶受管金鑰來加密建置輸出成品，請在**加密金鑰**中輸入 KMS 金鑰的 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="create-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="create-project-cli"></a>

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

若要使用 建立 CodeBuild 建置專案 AWS CLI，您可以建立 JSON 格式的[專案](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_Project.html)結構、填入結構，然後呼叫 [https://docs.aws.amazon.com/cli/latest/reference/codebuild/create-project.html](https://docs.aws.amazon.com/cli/latest/reference/codebuild/create-project.html)命令來建立專案。

### 建立 JSON 檔案
<a name="cp-cli-create-file"></a>

使用 `--generate-cli-skeleton`選項，使用 [https://docs.aws.amazon.com/cli/latest/reference/codebuild/create-project.html](https://docs.aws.amazon.com/cli/latest/reference/codebuild/create-project.html)命令建立骨架 JSON 檔案：

```
aws codebuild create-project --generate-cli-skeleton > <json-file>
```

這會建立具有 *<json-file> 指定路徑和檔案名稱的 JSON 檔案*。

### 填寫 JSON 檔案
<a name="cp-cli-fill-in-file"></a>

如下所示修改 JSON 資料並儲存結果。

```
{
  "name": "<project-name>",
  "description": "<description>",
  "source": {
    "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE",
    "location": "<source-location>",
    "gitCloneDepth": "<git-clone-depth>",
    "buildspec": "<buildspec>",
    "InsecureSsl": "<insecure-ssl>",
    "reportBuildStatus": "<report-build-status>",
    "buildStatusConfig": {
      "context": "<context>",
      "targetUrl": "<target-url>"
    },
    "gitSubmodulesConfig": {
      "fetchSubmodules": "<fetch-submodules>"
    },
    "auth": {
      "type": "<auth-type>",
      "resource": "<auth-resource>"
    },
    "sourceIdentifier": "<source-identifier>"
  },
  "secondarySources": [
    {
        "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE",
        "location": "<source-location>",
        "gitCloneDepth": "<git-clone-depth>",
        "buildspec": "<buildspec>",
        "InsecureSsl": "<insecure-ssl>",
        "reportBuildStatus": "<report-build-status>",
        "auth": {
          "type": "<auth-type>",
          "resource": "<auth-resource>"
        },
        "sourceIdentifier": "<source-identifier>"
    }
  ],
  "secondarySourceVersions": [
    {
      "sourceIdentifier": "<secondary-source-identifier>",
      "sourceVersion": "<secondary-source-version>"
    }
  ],
  "sourceVersion": "<source-version>",
  "artifacts": {
    "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS",
    "location": "<artifacts-location>",
    "path": "<artifacts-path>",
    "namespaceType": "<artifacts-namespacetype>",
    "name": "<artifacts-name>",
    "overrideArtifactName": "<override-artifact-name>",
    "packaging": "<artifacts-packaging>"
  },
  "secondaryArtifacts": [
    {
      "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS",
      "location": "<secondary-artifact-location>",
      "path": "<secondary-artifact-path>",
      "namespaceType": "<secondary-artifact-namespaceType>",
      "name": "<secondary-artifact-name>",
      "packaging": "<secondary-artifact-packaging>",
      "artifactIdentifier": "<secondary-artifact-identifier>"
    }
  ],
  "cache": {
    "type": "<cache-type>",
    "location": "<cache-location>",
    "mode": [
      "<cache-mode>"
    ]
  },
  "environment": {
    "type": "LINUX_CONTAINER" | "LINUX_GPU_CONTAINER" | "ARM_CONTAINER" | "WINDOWS_SERVER_2019_CONTAINER" | "WINDOWS_SERVER_2022_CONTAINER",
    "image": "<image>",
    "computeType": "BUILD_GENERAL1_SMALL" | "BUILD_GENERAL1_MEDIUM" | "BUILD_GENERAL1_LARGE" | "BUILD_GENERAL1_2XLARGE",
    "certificate": "<certificate>",
    "environmentVariables": [
      {
        "name": "<environmentVariable-name>",
        "value": "<environmentVariable-value>",
        "type": "<environmentVariable-type>"
      }
    ],
    "registryCredential": [
      {
        "credential": "<credential-arn-or-name>",
        "credentialProvider": "<credential-provider>"
      }
    ],
    "imagePullCredentialsType": "CODEBUILD" | "SERVICE_ROLE",
    "privilegedMode": "<privileged-mode>"
  },
  "serviceRole": "<service-role>",
  "autoRetryLimit": <auto-retry-limit>,
  "timeoutInMinutes": <timeout>,
  "queuedTimeoutInMinutes": <queued-timeout>,
  "encryptionKey": "<encryption-key>",
  "tags": [
    {
      "key": "<tag-key>",
      "value": "<tag-value>"
    }
  ],
  "vpcConfig": {
    "securityGroupIds": [
         "<security-group-id>"
    ],
    "subnets": [
         "<subnet-id>"
    ],
    "vpcId": "<vpc-id>"
  },
  "badgeEnabled": "<badge-enabled>",
  "logsConfig": {
    "cloudWatchLogs": {
      "status": "<cloudwatch-logs-status>",
      "groupName": "<group-name>",
      "streamName": "<stream-name>"
    },
    "s3Logs": {
      "status": "<s3-logs-status>",
      "location": "<s3-logs-location>",
      "encryptionDisabled": "<s3-logs-encryption-disabled>"
    }
  },
  "fileSystemLocations": [
    {
      "type": "EFS",
      "location": "<EFS-DNS-name-1>:/<directory-path>",
      "mountPoint": "<mount-point>",
      "identifier": "<efs-identifier>",
      "mountOptions": "<efs-mount-options>"
    }
  ],
  "buildBatchConfig": {
    "serviceRole": "<batch-service-role>",
    "combineArtifacts": <combine-artifacts>,
    "restrictions": {
      "maximumBuildsAllowed": <max-builds>,
      "computeTypesAllowed": [
        "<compute-type>"
      ],
      "fleetsAllowed": [
        "<fleet-name>"
      ]
    },
    "timeoutInMins": <batch-timeout>,
    "batchReportMode": "REPORT_AGGREGATED_BATCH" | "REPORT_INDIVIDUAL_BUILDS"
  },
  "concurrentBuildLimit": <concurrent-build-limit>
}
```

取代以下項目：

#### **name**
<a name="cli.project-name"></a>

必要。此建置專案的名稱。此名稱在您 AWS 帳戶中的所有建置專案中必須是唯一的。

#### **description**
<a name="cli.description"></a>

選用。此建置專案的描述。

#### **source**
<a name="cli.source"></a>

必要。[ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html) 物件，其中包含此建置專案的原始程式碼設定的相關資訊。在您新增 `source` 物件之後，即可使用 [**secondarySources**](#cli.secondarysources)新增最多 12 個以上的來源。這些設定包含下列項目：

來源/**類型**  <a name="cli.source.type"></a>
必要。包含要建置之來源碼的儲存庫類型。有效值包含：  
+ `CODECOMMIT`
+ `CODEPIPELINE`
+ `GITHUB`
+ `GITHUB_ENTERPRISE`
+ `GITLAB`
+ `GITLAB_SELF_MANAGED`
+ `BITBUCKET`
+ `S3`
+ `NO_SOURCE`
若您使用 `NO_SOURCE`，則 Buildspec 不能是檔案，因為專案沒有任何來源。反之，您必須使用 `buildspec` 屬性來為您的 buildspec 指定 YAML 格式字串。如需詳細資訊，請參閱[建立不含來源的建置專案](no-source.md)。

來源/**位置**  <a name="cli.source.location"></a>
除非您將 *<source-type>* 設定為 ，否則為必要`CODEPIPELINE`。所指定儲存庫類型的來源碼位置。  
+ 對於 CodeCommit，HTTPS 會將 URL 複製到包含原始程式碼和 buildspec 檔案的儲存庫 （例如 `https://git-codecommit.<region-id>.amazonaws.com/v1/repos/<repo-name>`)。
+ 對於 Amazon S3，建置輸入儲存貯體名稱，後面接著包含原始碼和 buildspec 的 ZIP 檔案的路徑和名稱。例如：
  + 對於位於輸入儲存貯體根目錄的 ZIP 檔案：`<bucket-name>/<object-name>.zip`。
  + 對於位於輸入儲存貯體中子資料夾中的 ZIP 檔案：`<bucket-name>/<subfoler-path>/<object-name>.zip`。
+ 針對 GitHub，HTTPS 會將 URL 複製到包含來源碼和 buildspec 檔案的儲存庫。URL 必須包含 github.com。您必須將 AWS 帳戶連接到 GitHub 帳戶。若要這樣做，請使用 CodeBuild 主控台來建立建置專案。
  + 選擇 **Authorize application (授權應用程式)**。（連線至 GitHub 帳戶後，您不需要完成建立建置專案。 您可以關閉 CodeBuild 主控台。) 
+ 針對 GitHub Enterprise Server，HTTP 或 HTTPS 會將 URL 複製到包含來源碼和 buildspec 檔案的儲存庫。您還必須將 AWS 帳戶連接到 GitHub Enterprise Server 帳戶。若要這樣做，請使用 CodeBuild 主控台來建立建置專案。

  1. 在 GitHub Enterprise Server 中建立個人存取字符。

  1. 將此字符複製到剪貼簿，以便在建立 CodeBuild 專案時使用它。如需詳細資訊，請參閱 GitHub Help 網站上的 [Creating a personal access token for the command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/)。

  1. 當您使用主控台建立 CodeBuild 專案時，在**來源****提供者的來源**中，選擇 **GitHub Enterprise**。

  1. 針對 **Personal Access Token (個人存取字符)**，貼上已複製至剪貼簿的字符。選擇 **Save Token (儲存字符)**。您的 CodeBuild 帳戶現在已連線至您的 GitHub Enterprise Server 帳戶。
+ 對於 GitLab 和 GitLab 自我管理，HTTPS 會將 URL 複製到包含原始程式碼和 buildspec 檔案的儲存庫。請注意，如果您使用 GitLab，URL 必須包含 gitlab.com。如果您使用 GitLab 自我管理，則 URL 不需要包含 gitlab.com。您必須將 AWS 帳戶連線至 GitLab 或 GitLab 自我管理帳戶。若要這樣做，請使用 CodeBuild 主控台來建立建置專案。
  + 在開發人員工具導覽窗格中，選擇**設定**、**連線**，然後選擇**建立連線**。在此頁面上，建立 GitLab 或 GitLab 自我管理連線，然後選擇**連線至 GitLab**。
+ 針對 Bitbucket，HTTPS 會將 URL 複製到包含來源碼和 buildspec 檔案的儲存庫。URL 必須包含 bitbucket.org。您還必須將 AWS 帳戶連接到 Bitbucket 帳戶。若要這樣做，請使用 CodeBuild 主控台來建立建置專案。

  1. 當您使用主控台連線 (或重新連線) Bitbucket 時，請在 Bitbucket 的 **Confirm access to your account (確認帳戶存取)** 頁面上，選擇 **Grant access (授予存取權)**。（連線至 Bitbucket 帳戶後，您不需要完成建立建置專案。 您可以關閉 CodeBuild 主控台。) 
+ 對於 AWS CodePipeline，請勿指定 `location`的值`source`。CodePipeline 會忽略此值，因為當您在 CodePipeline 中建立管道時，您會在管道的來源階段指定來源碼位置。

source/**gitCloneDepth**  <a name="cli.source.gitclonedepth"></a>
選用。要下載的歷史記錄深度。最小值為 0。如果此值為 0、大於 25 或未提供，則會下載每個建置專案的完整歷史記錄。如果您的來源類型是 Amazon S3，則不支援此值。

source/**buildspec**  <a name="cli.source.buildspec"></a>
選用。要使用的組建規格定義或檔案。如果此值未提供，或設定為空字串，則來源碼必須包含其根目錄中的 `buildspec.yml` 檔案。如果設定此值，則可能是內嵌 buildspec 定義、相對於主要來源根目錄的替代 buildspec 檔案路徑，或是 S3 儲存貯體的路徑。儲存貯體必須與建置專案位於相同的 AWS 區域。使用其 ARN 指定 buildspec 檔案 (例如，`arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml`)。如需詳細資訊，請參閱[Buildspec 檔案名稱和儲存位置](build-spec-ref.md#build-spec-ref-name-storage)。

來源/**身分驗證**  <a name="cli.source.auth"></a>
包含 CodeBuild 存取要建置之原始碼的授權設定相關資訊。

source/auth/**type**  <a name="cli.source.auth.type"></a>
必要。要使用的授權類型。有效的 值如下：  
+ `OAUTH`
+ `CODECONNECTIONS`
+ `SECRETS_MANAGER`

source/auth/**resource**  <a name="cli.source.auth.resource"></a>
選用。套用至指定授權類型的資源值。這可以是 Secrets Manager ARN 或 CodeConnections ARN。

source/**reportBuildStatus**  <a name="cli.source.reportbuildstatus"></a>
指定是否將建置的啟動和完成狀態傳送給來源提供者。如果您搭配 GitHub、GitHub Enterprise Server 或 Bitbucket 以外的來源供應商設定此項，則會擲出 `invalidInputException`。  
若要能夠向來源提供者報告建置狀態，與來源提供者相關聯的使用者必須具有儲存庫的寫入存取權。如果使用者沒有寫入存取權，則無法更新建置狀態。如需詳細資訊，請參閱[來源提供者存取](access-tokens.md)。

source/**buildStatusConfig**  <a name="cli.source.buildstatusconfig"></a>
包含定義 CodeBuild 組建專案如何向來源提供者報告組建狀態的資訊。此選項僅在來源類型為 `GITHUB`、 `GITHUB_ENTERPRISE`或 時使用`BITBUCKET`。    
source/buildStatusConfig/**context**  
對於 Bitbucket 來源，此參數用於 Bitbucket 遞交狀態中的 `name` 參數。對於 GitHub 來源，此參數用於 GitHub 遞交狀態中的 `context` 參數。  
例如，您可以使用 CodeBuild 環境變數，讓 `context`包含建置編號和 Webhook 觸發：  

```
AWS CodeBuild sample-project Build #$CODEBUILD_BUILD_NUMBER - $CODEBUILD_WEBHOOK_TRIGGER
```
這會導致 Webhook 提取請求事件觸發的建置 \$124 的內容出現如下：  

```
AWS CodeBuild sample-project Build #24 - pr/8
```  
source/buildStatusConfig/**targetUrl**  
對於 Bitbucket 來源，此參數用於 Bitbucket 遞交狀態中的 `url` 參數。對於 GitHub 來源，此參數用於 GitHub 遞交狀態中的 `target_url` 參數。  
例如，您可以將 `targetUrl` 設定為 ，`https://aws.amazon.com/codebuild/<path to build>`而遞交狀態將連結至此 URL。  
您也可以在 中包含 CodeBuild 環境變數`targetUrl`，以將其他資訊新增至 URL。例如，若要將建置區域新增至 URL，請將 `targetUrl` 設定為：  

```
"targetUrl": "https://aws.amazon.com/codebuild/<path to build>?region=$AWS_REGION"
```
如果建置區域為 `us-east-2`，這會擴展到：  

```
https://aws.amazon.com/codebuild/<path to build>?region=us-east-2
```

source/**gitSubmodulesConfig**  <a name="cli.source.gitsubmodulesconfig"></a>
選用。Git 子模組組態的相關資訊。僅與 CodeCommit、GitHub、GitHub Enterprise Server 和 Bitbucket 搭配使用。    
source/gitSubmodulesConfig/**fetchSubmodules**  
如果您想要將 Git 子模組包含在您的儲存庫中，請將 `fetchSubmodules` 設定為 `true`。包含的 Git 子模組必須設定為 HTTPS。

source/**InsecureSsl**  <a name="cli.source.insecuressl"></a>
選用。只能與 GitHub Enterprise Server 搭配使用。將此數值設定為 `true`，忽略連線至 GitHub Enterprise Server 專案儲存庫時出現的 TLS 警告。預設值為 `false`。`InsecureSsl` 應僅用於測試目的。不應用於生產環境。

source/**sourceIdentifier**  <a name="cli.source.sourceidentifier"></a>
專案來源的使用者定義識別符。主要來源為選用。次要來源為必要。

#### **secondarySources**
<a name="cli.secondarysources"></a>

選用。[ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html) 物件陣列，其中包含建置專案的次要來源相關資訊。您最多可以新增 12 個次要來源。`secondarySources` 物件使用與[**source**](#cli.source)物件相同的屬性。在次要來源物件中， `sourceIdentifier`是必要的。

#### **secondarySourceVersions**
<a name="cli.secondarysourceversions"></a>

選用。[ProjectSourceVersion](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSourceVersion.html) 物件陣列。如果在組建層級指定 `secondarySourceVersions`，則其優先順序會高於此。

#### **sourceVersion**
<a name="cli.sourceversion"></a>

選用。要為此專案建置的建置輸入版本。如果未指定，則會使用最新的版本。如果指定，則必須是以下其中一個：
+ 對於 CodeCommit，要使用的遞交 ID、分支或 Git 標籤。
+ 針對 GitHub，為遞交 ID、提取請求 ID、分支名稱，或與您想要建置之來源碼版本對應的標籤名稱。如果指定提取請求 ID，其格式必須為 `pr/pull-request-ID` (例如，`pr/25`)。如果指定分支名稱，則會使用分支的 HEAD 遞交 ID。如果未指定，則會使用預設分支的 HEAD 遞交 ID。
+ 對於 GitLab，遞交 ID、提取請求 ID、分支名稱、標籤名稱或參考和遞交 ID。如需詳細資訊，請參閱[使用 的來源版本範例 AWS CodeBuild](sample-source-version.md)。
+ 針對 Bitbucket，為遞交 ID、分支名稱，或與您想要建置之來源碼版本對應的標籤名稱。如果指定分支名稱，則會使用分支的 HEAD 遞交 ID。如果未指定，則會使用預設分支的 HEAD 遞交 ID。
+ 對於 Amazon S3：物件的版本 ID，代表要使用的建置輸入 ZIP 檔案。

如果在組建層級指定 `sourceVersion`，則該版本的優先順序會高於此 `sourceVersion` (在專案層級)。如需詳細資訊，請參閱[使用 的來源版本範例 AWS CodeBuild](sample-source-version.md)。

#### **成品**
<a name="cli.artifacts"></a>

必要。[ProjectArtifacts](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectArtifacts.html) 物件，其中包含此建置專案輸出成品設定的相關資訊。在您新增 `artifacts` 物件之後，即可使用 [secondaryArtifacts](#cli.secondaryartifacts)新增最多 12 個以上的成品。這些設定包含下列項目：

成品/**類型**  <a name="cli.artifacts.type"></a>
必要。建置輸出成品類型。有效的 值如下：  
+ `CODEPIPELINE`
+ `NO_ARTIFACTS`
+ `S3`

成品/**位置**  <a name="cli.artifacts.location"></a>
僅與`S3`成品類型搭配使用。不適用於其他成品類型。  
您在先決條件中建立或識別的輸出儲存貯體名稱。

成品/**路徑**  <a name="cli.artifacts.path"></a>
僅與`S3`成品類型搭配使用。不適用於其他成品類型。  
輸出儲存貯體中放置 ZIP 檔案或資料夾的路徑。如果您未指定 的值`path`，CodeBuild 會使用 `namespaceType`（如果指定） 和 `name` 來判斷建置輸出 ZIP 檔案或資料夾的路徑和名稱。例如，如果您`MyPath`為 指定 `MyArtifact.zip` `path`，並為 指定 `name`，則路徑和名稱將為 `MyPath/MyArtifact.zip`。

artifacts/**namespaceType**  <a name="cli.artifacts.namespacetype"></a>
僅與`S3`成品類型搭配使用。不適用於其他成品類型。  
組建輸出 ZIP 檔案或資料夾的命名空間。有效值包括 `BUILD_ID` 與 `NONE`。使用 `BUILD_ID`，將建置 ID 插入至建置輸出 ZIP 檔案或資料夾的路徑。否則，請使用 `NONE`。如果您未指定 的值`namespaceType`，CodeBuild 會使用 `path`（如果指定） 和 `name` 來判斷建置輸出 ZIP 檔案或資料夾的路徑和名稱。例如，如果您`MyPath`為 指定 `path`、`BUILD_ID`為 指定 `namespaceType`，`MyArtifact.zip`並為 指定 `name`，則路徑和名稱將為 `MyPath/build-ID/MyArtifact.zip`。

artifacts/**name**  <a name="cli.artifacts.name"></a>
僅與`S3`成品類型搭配使用。不適用於其他成品類型。  
建置輸出 ZIP 檔案或 內資料夾的名稱`location`。例如，如果您`MyPath`為 和 `path` `MyArtifact.zip` 指定 `name`，則路徑和名稱將為 `MyPath/MyArtifact.zip`。

artifacts/**overrideArtifactName**  <a name="cli.artifacts.overrideartifactname"></a>
僅與 S3 成品類型搭配使用。不適用於其他成品類型。  
選用。如果設定為 `true`，在 buildspec 檔案的 `artifacts`區塊中指定的名稱會覆寫 `name`。如需詳細資訊，請參閱[CodeBuild 的建置規格參考](build-spec-ref.md)。

成品/**封裝**  <a name="cli.artifacts.packaging"></a>
僅與`S3`成品類型搭配使用。不適用於其他成品類型。  
選用。指定如何封裝成品。允許的值為：    
NONE  
建立包含組建成品的資料夾。這是預設值。  
ZIP  
建立包含建置成品的 ZIP 檔案。

#### secondaryArtifacts
<a name="cli.secondaryartifacts"></a>

選用。[ProjectArtifacts](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectArtifacts.html) 物件陣列，其中包含組建專案的次要成品設定的相關資訊。您可以新增最多 12 個次要成品。`secondaryArtifacts` 使用 [**成品**](#cli.artifacts) 物件所使用的許多相同設定。

#### 快取
<a name="cli.cache"></a>

必要。包含此建置專案快取設定相關資訊的 [ProjectCache](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectCache.html) 物件。如需詳細資訊，請參閱[快取建置](build-caching.md)。

#### 環境
<a name="cli.environment"></a>

必要。[ProjectEnvironment](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectEnvironment.html) 物件，其中包含此專案建置環境設定的相關資訊。這些設定包括：

environment/**type**  <a name="cli.environment.type"></a>
必要。建置環境類型。如需詳細資訊，請參閱 *CodeBuild API 參考*中的[類型](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectEnvironment.html#CodeBuild-Type-ProjectEnvironment-type)。

環境/**影像**  <a name="cli.environment.image"></a>
必要。此建置環境所使用的 Docker 影像識別符。一般而言，此識別符以 *image-name*:*tag* 表示。例如，在 CodeBuild 用來管理其 Docker 映像的 Docker 儲存庫中，這可能是 `aws/codebuild/standard:5.0`。在 Docker Hub 中，為 `maven:3.3.9-jdk-8`。在 Amazon ECR 中，`account-id.dkr.ecr.region-id.amazonaws.com/your-Amazon-ECR-repo-name:tag`。如需詳細資訊，請參閱[CodeBuild 提供的 Docker 映像](build-env-ref-available.md)。

environment/**computeType**  <a name="cli.environment.computetype"></a>
必要。指定此建置環境使用的運算資源。如需詳細資訊，請參閱 *CodeBuild API 參考*中的 [computeType](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectEnvironment.html#CodeBuild-Type-ProjectEnvironment-computeType)。

環境/**憑證**  <a name="cli.environment.certificate"></a>
選用。Amazon S3 儲存貯體的 ARN、路徑字首和包含 PEM 編碼憑證的物件金鑰。物件金鑰可以是包含 PEM 編碼憑證的 .pem 檔案或 .zip 檔案。例如，如果您的 Amazon S3 儲存貯體名稱為 `<my-bucket>`，您的路徑字首為 `<cert>`，而您的物件金鑰名稱為 `<certificate.pem>`，則 可接受的格式`certificate`為 `<my-bucket/cert/certificate.pem>`或 `arn:aws:s3:::<my-bucket/cert/certificate.pem>`。

environment/**environmentVariables**  <a name="cli.environment.environmentvariables"></a>
選用。[EnvironmentVariable](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_EnvironmentVariable.html) 物件陣列，其中包含您要為此建置環境指定的環境變數。每個環境變數都表示為包含 `name`、 和 `value`、 `name``value`和 `type`的 物件`type`。  
主控台和 AWS CLI 使用者可以查看所有環境變數。如果您對環境變數的可見性沒有疑慮，請將 `name`和 設定為 `value`，並將 `type`設定為 `PLAINTEXT`。  
我們建議您將環境變數與敏感值一起存放，例如 AWS 存取金鑰 ID、 AWS 私密存取金鑰或密碼，做為 Amazon EC2 Systems Manager 參數存放區或 中的參數 AWS Secrets Manager。對於 `name`，針對該預存參數，設定 CodeBuild 的識別符以供參考。  
如果您使用 Amazon EC2 Systems Manager 參數存放區，請針對 `value`設定參數存放區中存放的參數名稱。將 `type` 設定為 `PARAMETER_STORE`。使用名為 的參數`/CodeBuild/dockerLoginPassword`做為範例，將 `name`設定為 `LOGIN_PASSWORD`。將 `value` 設定為 `/CodeBuild/dockerLoginPassword`。將 `type` 設定為 `PARAMETER_STORE`。  
如果您使用 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 *  
如果您的建置專案參考存放在 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，請針對 `value`設定儲存在 Secrets Manager 中的參數名稱。將 `type` 設定為 `SECRETS_MANAGER`。使用名為 的秘密`/CodeBuild/dockerLoginPassword`做為範例，將 `name`設定為 `LOGIN_PASSWORD`。將 `value` 設定為 `/CodeBuild/dockerLoginPassword`。將 `type` 設定為 `SECRETS_MANAGER`。  
如果您使用 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/`命名空間下的所有秘密。

environment/**registryCredential**  <a name="cli.environment.registrycredential"></a>
選用。[RegistryCredential](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_RegistryCredential.html) 物件，指定提供私有 Docker 登錄檔存取權的登入資料。    
environment/registryCredential/**credential**  
指定使用 建立的登入資料的 ARN 或名稱 AWS Managed Services。您只能在登入資料存在於您目前區域時才能使用其名稱  
environment/registryCredential/**credentialProvider**  
唯一有效的值為 `SECRETS_MANAGER`。
當此值設為：  
+ `imagePullCredentials` 必須設定為 `SERVICE_ROLE`。
+ 影像不能是精選影像或 Amazon ECR 影像。

environment/**imagePullCredentialsType**  <a name="cli.environment.imagepullcredentialstype"></a>
選用。CodeBuild 用來在組建中提取映像的登入資料類型。兩種有效值如下：    
CODEBUILD  
`CODEBUILD` 指定 CodeBuild 使用自己的登入資料。您必須編輯 Amazon ECR 儲存庫政策，才能信任 CodeBuild 服務主體。  
SERVICE\$1ROLE  
指定 CodeBuild 使用您建置專案的服務角色。
當您使用跨帳戶或私有登錄影像，您必須使用 `SERVICE_ROLE` 登入資料。當您使用 CodeBuild 策劃的映像時，您必須使用 `CODEBUILD` 登入資料。

environment/**privilegedMode**  <a name="cli.environment.privilegedmode"></a>
`true` 只有在您計劃使用此建置專案建置 Docker 映像時，才將 設定為 。否則，所有嘗試與 Docker 協助程式互動的相關建置都會失敗。您也必須啟動 Docker 協助程式，以讓您的建置與其互動。執行這項操作的一種方式是執行下列建置命令，以在 buildspec 檔案的 `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"
```

#### serviceRole
<a name="cli.servicerole"></a>

必要。CodeBuild 用來代表使用者與服務互動的服務角色 ARN （例如，`arn:aws:iam::account-id:role/role-name`)。

#### autoRetryLimit
<a name="cli.autoretrylimit"></a>

選用。建置失敗後的其他自動重試次數。例如，如果自動重試限制設為 2，CodeBuild 將呼叫 `RetryBuild` API 以自動重試您的建置最多額外 2 次。

#### timeoutInMinutes
<a name="cli.timeoutinminutes"></a>

選用。介於 5 到 2160 (36 小時） 之間的分鐘數，之後 CodeBuild 會在組建未完成時停止組建。如果未指定，則會使用預設值 60。若要判斷 CodeBuild 是否以及何時因逾時而停止建置，請執行 `batch-get-builds`命令。若要判斷是否已停止建置，請查看 `buildStatus` 值 `FAILED` 的輸出。若要判斷組建何時逾時，請查看與 `phaseStatus` 值 `TIMED_OUT` 建立關聯之 `endTime` 值的輸出。

#### queuedTimeoutInMinutes
<a name="cli.queuedtimeoutinminutes"></a>

選用。介於 5 到 480 (8 小時） 之間的分鐘數，之後 CodeBuild 會停止仍在佇列中的組建。如果未指定，則會使用預設值 60。

#### encryptionKey
<a name="cli.encryptionkey"></a>

選用。CodeBuild AWS KMS key 用來加密建置輸出的別名或 ARN。如果您指定別名，則請使用 `arn:aws:kms:region-ID:account-ID:key/key-ID` 格式，或者，如果別名已存在，則請使用 `alias/key-alias` 格式。如果未指定，則會使用 Amazon S3 的 AWS受管 KMS 金鑰。

#### 標籤
<a name="cli.tags"></a>

選用。[標籤](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_Tag.html)物件陣列，提供您要與此建置專案建立關聯的標籤。您可以指定最多 50 個標籤。支援 CodeBuild 組建專案標籤的任何 AWS 服務都可以使用這些標籤。每個標籤都表示為具有 `key`和 的物件`value`。

#### vpcConfig
<a name="cli.vpcconfig"></a>

選用。包含專案 VPC 組態相關資訊的 [VpcConfig](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_VpcConfig.html) 物件。如需詳細資訊，請參閱[AWS CodeBuild 搭配 Amazon Virtual Private Cloud 使用](vpc-support.md)。

這些屬性包括：

vpcId  
必要。CodeBuild 使用的 VPC ID。執行此命令，以取得您區域中的所有 VPC ID 清單：  

```
aws ec2 describe-vpcs --region <region-ID>
```

子網路  
必要。子網路 IDs 陣列，其中包含 CodeBuild 使用的資源。執行此命令，以取得這些 ID：  

```
aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region <region-ID>
```

securityGroupIds  
必要。CodeBuild 用來允許存取 VPC 中資源的安全群組 IDs 陣列。執行此命令，以取得這些 ID：  

```
aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<vpc-id>" --<region-ID>
```

#### badgeEnabled
<a name="cli.badgeenabled"></a>

選用。指定是否要在 CodeBuild 專案中包含組建徽章。設定為 `true`以啟用組建徽章，`false`否則設為 。如需詳細資訊，請參閱[使用 CodeBuild 建置徽章範例](sample-build-badges.md)。

#### logsConfig
<a name="cli.logsconfig"></a>

[LogsConfig](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_LogsConfig.html) 物件，其中包含此組建日誌所在位置的相關資訊。

logsConfig/**cloudWatchLogs**  <a name="cli.logsconfig.cloudwatchlogs"></a>
[CloudWatchLogsConfig](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_CloudWatchLogsConfig.html) 物件，其中包含將日誌推送至 CloudWatch Logs 的相關資訊。

logsConfig/**s3Logs**  <a name="cli.logsconfig.s3logs"></a>
[S3LogsConfig](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_S3LogsConfig.html) 物件，其中包含將日誌推送至 Amazon S3 的相關資訊。

#### fileSystemLocations
<a name="cli.filesystemlocations"></a>

選用。[ProjectFileSystemsLocation](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectFileSystemLocation.html) 物件陣列，其中包含 Amazon EFS 組態的相關資訊。

#### buildBatchConfig
<a name="cli.buildbatchconfig"></a>

選用。`buildBatchConfig` 物件是 [ProjectBuildBatchConfig](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectBuildBatchConfig.html) 結構，其中包含專案的批次建置組態資訊。

buildBatchConfig/**serviceRole**  
批次建置專案的服務角色 ARN。

buildBatchConfig/**combineArtifacts**  
布林值，指定是否要將批次組建的組建成品合併為單一成品位置。

buildBatchConfig/restrictions/**maximumBuildsAllowed**  
允許建置的數量上限。

buildBatchConfig/restrictions/**computeTypesAllowed**  
字串陣列，指定批次建置允許的運算類型。如需這些值，請參閱[建置環境運算類型](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html)。

buildBatchConfig/restrictions/**fleetsAllowed**  
字串陣列，指定批次建置允許的機群。如需詳細資訊[，請參閱在預留容量機群上執行組](https://docs.aws.amazon.com/codebuild/latest/userguide/fleets.html)建。

buildBatchConfig/**timeoutInMinutes**  
批次建置必須完成的時間上限，以分鐘為單位。

buildBatchConfig/**batchReportMode**   
指定如何將建置狀態報告傳送至批次建置的來源提供者。有效值包含：    
`REPORT_AGGREGATED_BATCH`  
(預設) 將所有建置狀態彙總到單一狀態報告中。  
`REPORT_INDIVIDUAL_BUILDS`  
針對每個個別建置傳送單獨的狀態報告。

#### concurrentBuildLimit
<a name="cli.concurrentbuildlimit"></a>

此專案允許並行建置的最大數量。

只有當目前的建置數量小於或等於此限制時，才會啟動新的建置。如果目前的建置計數符合此限制，則會調節新的建置且不會執行。

### 建立專案
<a name="cp-cli-create-project"></a>

若要建立專案，請再次執行 **[https://docs.aws.amazon.com/cli/latest/reference/codebuild/create-project.html](https://docs.aws.amazon.com/cli/latest/reference/codebuild/create-project.html)**命令，並傳遞您的 JSON 檔案：

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

如果成功，[專案](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_Project.html)物件的 JSON 表示法會出現在主控台輸出中。如需此資料的範例，請參閱 [CreateProject 回應語法](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_CreateProject.html#API_CreateProject_ResponseSyntax)。

除了建置專案名稱之外，您稍後可以變更任何建置專案設定。如需詳細資訊，請參閱[變更建置專案的設定 (AWS CLI)](change-project.md#change-project-cli)。

若要開始執行建置，請參閱[執行建置 (AWS CLI)](run-build-cli.md)。

如果您的原始程式碼存放在 GitHub 儲存庫中，而且您希望 CodeBuild 每次將程式碼變更推送到儲存庫時重建原始程式碼，請參閱 [自動開始執行建置 (AWS CLI)](run-build-cli-auto-start.md)。

## 建立建置專案AWS SDKs)
<a name="create-project-sdks"></a>

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

## 建立建置專案 (CloudFormation)
<a name="create-project-cloud-formation"></a>

如需 AWS CodeBuild 搭配 使用 的詳細資訊 CloudFormation，請參閱*AWS CloudFormation 《 使用者指南*》中的 [ CodeBuild CloudFormation 範本](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html)。