

終止支援通知：將於 2026 年 10 月 7 日 AWS 結束對 的支援 AWS Proton。2026 年 10 月 7 日之後，您將無法再存取 AWS Proton 主控台或 AWS Proton 資源。您部署的基礎設施將保持不變。如需詳細資訊，請參閱[AWS Proton 服務棄用和遷移指南](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html)。

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

# 建立環境
<a name="ag-create-env"></a>

了解如何建立 AWS Proton 環境。

**您可以透過下列兩種方式之一建立 AWS Proton 環境：**
+ 使用標準環境*範本建立、管理和佈建標準環境*。為您的環境 AWS Proton 佈建基礎設施。
+ 使用客戶受管環境範本 AWS Proton 連線至客戶受管基礎設施。 **您可以在 之外佈建自己的共用資源 AWS Proton，然後提供 AWS Proton 可使用的佈建輸出。

**建立環境時，您可以選擇多種佈建方法之一。**
+ *AWS 受管佈建* – 在單一帳戶中建立、管理和佈建環境。 AWS Proton 佈建您的環境。

  此方法僅支援 CloudFormation 基礎設施程式碼 (IaC) 範本。
+ *AWS 受管佈建至另一個帳戶* – 在單一管理帳戶中，建立和管理在具有環境帳戶連線的另一個帳戶中佈建的環境。在另一個帳戶中 AWS Proton 佈建您的環境。如需詳細資訊，請參閱[在一個帳戶中建立環境，並在另一個帳戶中佈建](#ag-create-env-deploy-other)及[環境帳戶連線](ag-env-account-connections.md)。

  此方法僅支援 CloudFormation IaC 範本。
+ *自我管理佈建* – 使用您自己的佈建基礎設施，將佈建提取請求 AWS Proton 提交至連結的儲存庫。

  此方法僅支援 Terraform IaC 範本。
+ *CodeBuild 佈建* – AWS Proton 用來 AWS CodeBuild 執行您提供的 shell 命令。您的命令可以讀取 AWS Proton 提供的輸入，並負責佈建或取消佈建基礎設施和產生輸出值。此方法的範本套件包含資訊清單檔案中的命令，以及這些命令可能需要的任何程式、指令碼或其他檔案。

  使用 CodeBuild 佈建的範例包括使用 AWS Cloud Development Kit (AWS CDK) 佈建 AWS 資源的程式碼，以及安裝 CDK 並執行 CDK 程式碼的資訊清單。

  如需詳細資訊，請參閱[CodeBuild 佈建範本套件](ag-infrastructure-tmp-files-codebuild.md)。
**注意**  
您可以搭配環境和服務使用 CodeBuild 佈建。目前您無法以這種方式佈建元件。

使用 AWS 受管佈建 （在相同帳戶和另一個帳戶中）， AWS Proton 會直接呼叫 來佈建您的 資源。

透過自我管理佈建， AWS Proton 會提取請求以提供編譯的 IaC 檔案，供 IaC 引擎用來佈建資源。

如需詳細資訊，請參閱[如何 AWS Proton 佈建基礎設施](ag-works-prov-methods.md)、[範本套件](ag-template-authoring.md#ag-template-bundles)及[環境範本套件的結構描述需求](ag-schema.md#schema-req-env)。

**Topics**
+ [在同一帳戶中建立和佈建標準環境](#ag-create-env-same-account)
+ [在一個帳戶中建立環境，並在另一個帳戶中佈建](#ag-create-env-deploy-other)
+ [使用自我管理佈建建立和佈建環境](#ag-create-env-pull-request)

## 在同一帳戶中建立和佈建標準環境
<a name="ag-create-env-same-account"></a>

使用 主控台或 AWS CLI 在單一帳戶中建立和佈建環境。佈建由 管理 AWS。

------
#### [ AWS 管理主控台 ]

**使用 主控台在單一帳戶中建立和佈建環境**

1. 在 [AWS Proton 主控台](https://console.aws.amazon.com//proton/)中，選擇**環境**。

1. 選擇 **Create environment** (建立環境)。

1. 在**選擇環境範本**頁面中，選取範本，然後選擇**設定**。

1. 在**設定環境**頁面的**佈建**區段中，選擇**AWS 受管佈建**。

1. 在**部署帳戶**區段中，選擇**此 AWS 帳戶**。

1. 在**設定環境**頁面**的環境設定**區段中，輸入**環境名稱**。

1. （選用） 輸入環境的描述。

1. 在**環境角色**區段中 AWS Proton ，選取您建立做為 一部分的服務角色[設定 AWS Proton 服務角色](ag-setting-up-iam.md#setting-up-cicd)。

1. （選用） 在**元件角色**區段中，選取服務角色，讓直接定義的元件能夠在環境中執行，並縮小可佈建的資源範圍。如需詳細資訊，請參閱[AWS Proton 元件](ag-components.md)。

1. （選用） 在**標籤**區段中，選擇**新增標籤**，然後輸入索引鍵和值以建立客戶受管標籤。

1. 選擇**下一步**。

1. 在**設定環境自訂設定**頁面中，您必須輸入`required`參數的值。您可以輸入`optional`參數的值，或在指定時使用預設值。

1. 選擇**下一步**並檢閱您的輸入。

1. 選擇**建立**。

   檢視環境詳細資訊和狀態，以及環境的 AWS 受管標籤和客戶受管標籤。

1. 在導覽窗格中，選擇 **Environments (環境)**。

   新頁面會顯示您的環境清單，以及狀態和其他環境詳細資訊。

------
#### [ AWS CLI ]

**使用 AWS CLI 在單一帳戶中建立和佈建環境。**

若要建立環境，您可以指定[AWS Proton 服務角色](security_iam_service-role-policy-examples.md#proton-svc-role) ARN、規格檔案的路徑、環境名稱、環境範本 ARN、主要和次要版本，以及描述 （選用）。

下一個範例顯示YAML格式化的規格檔案，指定環境範本結構描述檔案中定義的兩個輸入值。您可以使用 `get-environment-template-minor-version`命令來檢視環境範本結構描述。

```
proton: EnvironmentSpec
spec:
  my_sample_input: "the first"
  my_other_sample_input: "the second"
```

執行下列命令來建立環境。



```
$ aws proton create-environment \
    --name "{{MySimpleEnv}}" \
    --template-name {{simple-env}} \
    --template-major-version {{1}} \
    --proton-service-role-arn "arn:aws:iam::{{123456789012}}:role/{{AWS ProtonServiceRole}}" \
    --spec "{{file://env-spec.yaml}}"
```

回應：

```
{
    "environment": {
        "arn": "arn:aws:proton:region-id:123456789012:environment/MySimpleEnv",
        "createdAt": "2020-11-11T23:03:05.405000+00:00",
        "deploymentStatus": "IN_PROGRESS",
        "lastDeploymentAttemptedAt": "2020-11-11T23:03:05.405000+00:00",
        "name": "MySimpleEnv",
        "protonServiceRoleArn": "arn:aws:iam::123456789012:role/ProtonServiceRole",
        "templateName": "simple-env"
    }
}
```

建立新環境後，您可以檢視 AWS 和客戶受管標籤的清單，如下列範例 command. AWS Proton automatic 為您產生 AWS 受管標籤所示。您也可以使用 修改和建立客戶受管標籤 AWS CLI。如需詳細資訊，請參閱[AWS Proton 資源和標記](resources.md)。

命令：

```
$ aws proton list-tags-for-resource \
    --resource-arn "arn:aws:proton:{{region-id}}:{{123456789012}}:environment/{{MySimpleEnv}}"
```

------

## 在一個帳戶中建立環境，並在另一個帳戶中佈建
<a name="ag-create-env-deploy-other"></a>

使用 主控台或 AWS CLI 在管理帳戶中建立標準環境，在另一個帳戶中佈建環境基礎設施。佈建由 管理 AWS。

**使用主控台或 CLI 之前，請完成下列步驟。**

1. 識別管理和環境帳戶的 AWS 帳戶 IDs，並複製以供日後使用。

1. 在環境帳戶中，建立具有要建立之環境最低許可 AWS Proton 的服務角色。如需詳細資訊，請參閱[AWS Proton 使用 佈建的 服務角色 CloudFormation](security_iam_service-role-policy-examples.md#proton-svc-role)。

------
#### [ AWS 管理主控台 ]

**使用 主控台在一個帳戶中建立環境，並在另一個帳戶中佈建。**

1. 

**在環境帳戶中，建立環境帳戶連線，並使用它來傳送連線至管理帳戶的請求。**

   1. 在[AWS Proton 主控台](https://console.aws.amazon.com//proton/)的導覽窗格中，選擇**環境帳戶連線**。

   1. 在**環境帳戶連線**頁面中，選擇**請求連線**。
**注意**  
確認**環境帳戶連線**頁面標題中列出的帳戶 ID 符合您預先識別的環境帳戶 ID。

   1. 在**請求連線**頁面**的環境角色**區段中，選取**現有服務角色**和您為環境建立的服務角色名稱。

   1. 在**連線至管理帳戶**區段中，輸入 AWS Proton 您環境的**管理帳戶 ID** **和環境名稱**。複製名稱以供日後使用。

   1. 選擇頁面右下角的**請求連線**。

   1. 您的請求會在**傳送至管理帳戶資料表的環境連線**中顯示為待定，而模態顯示如何接受來自管理帳戶的請求。

1. 

**在管理帳戶中，接受從環境帳戶連線的請求。**

   1. 登入您的管理帳戶，然後在 AWS Proton 主控台中選擇**環境帳戶連線**。

   1. 在**環境帳戶連線**頁面的環境**帳戶連線請求**表中，選取環境帳戶連線與環境帳戶 ID 相符的環境帳戶 ID。
**注意**  
確認**環境帳戶連線**頁面標題中列出的帳戶 ID 符合您預先識別的管理帳戶 ID。

   1. 選擇 **Accept (接受)**。狀態會從待定變更為已連線。

1. 

**在管理帳戶中，建立環境。**

   1. 在導覽窗格中，選擇**環境範本**。

   1. 在**環境範本**頁面中，選擇**建立環境範本**。

   1. 在**選擇環境範本**頁面中，選擇環境範本。

   1. 在**設定環境**頁面的**佈建**區段中，選擇**AWS 受管佈建**。

   1. 在**部署帳戶**區段中，選擇**另一個 AWS 帳戶；**。

   1. 在**環境詳細資訊**區段中，選取您的**環境帳戶連線**和**環境名稱**。

   1. 選擇**下一步**。

   1. 填寫表單並選擇**下一步**，直到您到達**檢閱和建立**頁面為止。

   1. 檢閱並選擇**建立環境**。

------
#### [ AWS CLI ]

**使用 AWS CLI 在一個帳戶中建立環境，並在另一個帳戶中佈建。**

在環境帳戶中，建立環境帳戶連線，並執行下列命令請求連線。

```
$ aws proton create-environment-account-connection \
    --environment-name "{{simple-env-connected}}" \
    --role-arn "arn:aws:iam::{{222222222222}}:role/service-role/{{env-account-proton-service-role}}" \
    --management-account-id "{{111111111111}}"
```

回應：

```
{
    "environmentAccountConnection": {
        "arn": "arn:aws:proton:region-id:222222222222:environment-account-connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "environmentAccountId": "222222222222",
        "environmentName": "simple-env-connected",
        "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "lastModifiedAt": "2021-04-28T23:13:50.847000+00:00",
        "managementAccountId": "111111111111",
        "requestedAt": "2021-04-28T23:13:50.847000+00:00",
        "roleArn": "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role",
        "status": "PENDING"
    }
}
```

在管理帳戶中，執行下列命令以接受環境帳戶連線請求。

```
$ aws proton accept-environment-account-connection \
    --id "{{a1b2c3d4-5678-90ab-cdef-EXAMPLE11111}}"
```

回應：

```
{
    "environmentAccountConnection": {
        "arn": "arn:aws:proton:region-id:222222222222:environment-account-connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "environmentAccountId": "222222222222",
        "environmentName": "simple-env-connected",
        "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "lastModifiedAt": "2021-04-28T23:15:33.486000+00:00",
        "managementAccountId": "111111111111",
        "requestedAt": "2021-04-28T23:13:50.847000+00:00",
        "roleArn": "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role",
        "status": "CONNECTED"
    }
}
```

執行下列命令來檢視您的環境帳戶連線。

```
$ aws proton get-environment-account-connection \
    --id "{{a1b2c3d4-5678-90ab-cdef-EXAMPLE11111}}"
```

回應：

```
{
    "environmentAccountConnection": {
        "arn": "arn:aws:proton:region-id:222222222222:environment-account-connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "environmentAccountId": "222222222222",
        "environmentName": "simple-env-connected",
        "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "lastModifiedAt": "2021-04-28T23:15:33.486000+00:00",
        "managementAccountId": "111111111111",
        "requestedAt": "2021-04-28T23:13:50.847000+00:00",
        "roleArn": "arn:aws:iam::222222222222:role/service-role/env-account-proton-service-role",
        "status": "CONNECTED"
    }
}
```

在 管理帳戶中，執行下列命令來建立環境。

```
$ aws proton create-environment \
    --name "{{simple-env-connected}}" \
    --template-name {{simple-env-template}} \
    --template-major-version "{{1}}" \
    --template-minor-version "{{1}}" \
    --spec "{{file://simple-env-template/specs/original.yaml}}" \
    --environment-account-connection-id "{{a1b2c3d4-5678-90ab-cdef-EXAMPLE11111}}"
```

回應：

```
{
    "environment": {
        "arn": "arn:aws:proton:region-id:111111111111:environment/simple-env-connected",
        "createdAt": "2021-04-28T23:02:57.944000+00:00",
        "deploymentStatus": "IN_PROGRESS",
        "environmentAccountConnectionId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "environmentAccountId": "222222222222",
        "lastDeploymentAttemptedAt": "2021-04-28T23:02:57.944000+00:00",
        "name": "simple-env-connected",
        "templateName": "simple-env-template"
    }
}
```

------

## 使用自我管理佈建建立和佈建環境
<a name="ag-create-env-pull-request"></a>

當您使用自我管理佈建時， 會使用您自己的佈建基礎設施，將佈建提取請求 AWS Proton 提交至連結的儲存庫。提取請求會啟動您自己的工作流程，呼叫 AWS 服務來佈建基礎設施。

**自我管理的佈建考量：**
+ 建立環境之前，請設定儲存庫資源目錄以進行自我管理佈建。如需詳細資訊，請參閱[AWS Proton 基礎設施即程式碼檔案](ag-infrastructure-tmp-files.md)。
+ 建立環境後， 會 AWS Proton 等待接收有關基礎設施佈建狀態的非同步通知。您的佈建程式碼必須使用 API AWS Proton `NotifyResourceStateChange`來傳送這些非同步通知 AWS Proton。

您可以在 主控台或 中使用自我管理佈建 AWS CLI。下列範例示範如何搭配 Terraform 使用自我管理佈建。

------
#### [ AWS 管理主控台 ]

**使用 主控台，使用自我管理佈建建立 Terraform 環境。**

1. 在 [AWS Proton 主控台](https://console.aws.amazon.com//proton/)中，選擇**環境**。

1. 選擇 **Create environment** (建立環境)。

1. 在**選擇環境範本**頁面中，選取 Terraform 範本，然後選擇**設定**。

1. 在**設定環境**頁面的**佈建**區段中，選擇**自我管理佈建**。

1. 在**佈建儲存庫詳細資訊**區段中：

   1. 如果您尚未將[佈建儲存庫連結至 AWS Proton](ag-create-repo.md) ，請選擇**新儲存庫**，選擇其中一個儲存庫提供者，然後針對 **CodeStar 連線**，選擇其中一個連線。
**注意**  
如果您尚未連線到相關的儲存庫提供者帳戶，請選擇**新增 CodeStar 連線**。然後，建立連線，然後選擇 **CodeStar 連線**功能表旁的重新整理按鈕。您現在應該能夠在選單中選擇新的連線。

      如果您已將儲存庫連結至 AWS Proton，請選擇**現有的儲存庫**。

   1. 針對**儲存庫名稱**，選擇儲存庫。下拉式功能表會顯示**現有儲存庫**的連結儲存庫，或**新**儲存庫提供者帳戶中的儲存庫清單。

   1. 針對**分支名稱**，選擇其中一個儲存庫分支。

1. 在**環境設定**區段中，輸入**環境名稱**。

1. （選用） 輸入環境的描述。

1. （選用） 在**標籤**區段中，選擇**新增標籤**，然後輸入索引鍵和值以建立客戶受管標籤。

1. 選擇**下一步**。

1. 在**設定環境自訂設定**頁面中，您必須輸入`required`參數的值。您可以輸入`optional`參數的值，或在指定時使用預設值。

1. 選擇**下一步**並檢閱您的輸入。

1. 選擇**建立**以傳送提取請求。
   + 如果您核准提取請求，則部署正在進行中。
   + 如果您拒絕提取請求，環境建立會取消。
   + 如果提取請求逾時，則環境建立*未完成*。

1. 檢視環境詳細資訊和狀態，以及環境的 AWS 受管標籤和客戶受管標籤。

1. 在導覽窗格中，選擇 **Environments (環境)**。

   新頁面會顯示您的環境清單，以及狀態和其他環境詳細資訊。

------
#### [ AWS CLI ]

當您使用自我管理佈建建立環境時，您可以*新增* `provisioningRepository` 參數並省略 `ProtonServiceRoleArn`和 `environmentAccountConnectionId` 參數。

**使用 AWS CLI 建立具有自我管理佈建的 Terraform 環境。**

1. 建立環境，並將提取請求傳送至儲存庫以供檢閱和核准。

   下一個範例顯示YAML格式化規格檔案，根據環境範本結構描述檔案定義兩個輸入的值。您可以使用 `get-environment-template-minor-version`命令來檢視環境範本結構描述。

   規格：

   ```
   proton: EnvironmentSpec
   spec:
     ssm_parameter_value: "test"
   ```

   執行下列命令來建立環境。

   ```
   $ aws proton create-environment \
       --name "{{pr-environment}}" \
       --template-name "{{pr-env-template}}" \
       --template-major-version "{{1}}" \
       --provisioning-repository="branch={{main}},name={{myrepos/env-repo}},provider={{GITHUB}}" \
       --spec "{{file://env-spec.yaml}}"
   ```

   回應：>

   ```
   {
       "environment": {
           "arn": "arn:aws:proton:region-id:123456789012:environment/pr-environment",
           "createdAt": "2021-11-18T17:06:58.679000+00:00",
           "deploymentStatus": "IN_PROGRESS",
           "lastDeploymentAttemptedAt": "2021-11-18T17:06:58.679000+00:00",
           "name": "pr-environment",
           "provisioningRepository": {
               "arn": "arn:aws:proton:region-id:123456789012:repository/github:myrepos/env-repo",
               "branch": "main",
               "name": "myrepos/env-repo",
               "provider": "GITHUB"
           },
           "templateName": "pr-env-template"
       }
   ```

1. 檢閱請求。
   + 如果您核准請求，則佈建正在進行中。
   + 如果您拒絕請求，環境建立會取消。
   + 如果提取請求逾時，環境建立*不會*完成。

1. 以非同步方式提供佈建狀態給 AWS Proton。下列範例會通知 佈建 AWS Proton 成功。

   ```
   $ aws proton notify-resource-deployment-status-change \
       --resource-arn "arn:aws:proton:{{region-id}}:{{123456789012}}:environment/{{pr-environment}}" \
       --status "{{SUCCEEDED}}"
   ```

------