

終止支援通知：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-svc-update"></a>

您可以對 AWS Proton 服務進行下列編輯。
+ 編輯服務描述。
+ 透過新增和移除服務執行個體來編輯服務。

## 編輯服務描述
<a name="ag-svc-metadata"></a>

您可以使用 主控台或 AWS CLI 編輯服務描述。

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

**使用主控台編輯服務，如下列步驟所述。**

**在 服務清單中。**

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

1. 在服務清單中，選擇您要更新之服務左側的選項按鈕。

1. 選擇**編輯**。

1. 在**設定服務**頁面中，填寫表單並選擇**下一步**。

1. 在**設定自訂設定**頁面中，選擇**下一步**。

1. 檢閱您的編輯，然後選擇**儲存變更**。

**在服務詳細資訊頁面中。**

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

1. 在服務清單中，選擇您要編輯的服務名稱。

1. 在服務詳細資訊頁面中，選擇**編輯**。

1. 在**設定服務**頁面中，填寫表單並選擇**下一步**。

1. 在**設定自訂設定**頁面中，填寫表單並選擇**下一步**。

1. 檢閱您的編輯，然後選擇**儲存變更**。

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

**編輯描述，如下列 CLI 範例命令和回應所示。**

命令：

```
$ aws proton update-service \
    --name "MySimpleService" \
    --description "Edit by updating description"
```

回應：

```
{
    "service": {
        "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService",
        "branchName": "main",
        "createdAt": "2021-03-12T22:39:42.318000+00:00",
        "description": "Edit by updating description",
        "lastModifiedAt": "2021-03-12T22:44:21.975000+00:00",
        "name": "MySimpleService",
        "repositoryConnectionArn": "arn:aws:codestar-connections:region-id:123456789012:connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "repositoryId": "my-repository/myorg-myapp",
        "status": "ACTIVE",
        "templateName": "fargate-service"
    }
}
```

------

## 編輯服務以新增或移除服務執行個體
<a name="ag-svc-update-instances"></a>

對於 AWS Proton 服務，您可以透過提交編輯的規格來新增或刪除服務執行個體。成功請求必須符合下列條件：
+ 當您提交編輯請求時，您的服務和管道尚未進行編輯或刪除。
+ 您編輯的規格不包含修改服務管道的編輯，或編輯*尚未*刪除的現有服務執行個體。
+ 您編輯的規格不會移除任何具有連接元件的現有服務執行個體。若要刪除這類服務執行個體，您應該先更新元件，將其從服務執行個體中分離。如需元件的詳細資訊，請參閱 [AWS Proton 元件](ag-components.md)。

刪除失敗的執行個體是 `DELETE_FAILED` 狀態的服務執行個體。當您請求服務編輯時， 會 AWS Proton 嘗試移除刪除失敗的執行個體，做為編輯程序的一部分。如果您的任何服務執行個體無法刪除，則可能仍有與執行個體相關聯的資源，即使這些資源無法從主控台或 中看見 AWS CLI。檢查您的刪除失敗的執行個體基礎設施資源並進行清除，讓 AWS Proton 可以為您移除它們。

如需 服務的服務執行個體配額，請參閱 [AWS Proton 配額](ag-limits.md)。建立服務之後，您也必須為服務維護至少 1 個服務執行個體。在更新程序期間， AWS Proton 會計算現有服務執行個體和要新增或移除之執行個體的計數。刪除失敗的執行個體包含在此計數中，您必須在編輯 時考慮這些執行個體`spec`。

### 使用 主控台或 AWS CLI 來新增或移除服務執行個體
<a name="ag-svc-update-console-cli"></a>

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

**編輯您的服務，使用主控台新增或移除服務執行個體。**

在 [AWS Proton 主控台](https://console.aws.amazon.com//proton/)中

1. 在導覽窗格中，選擇**服務**。

1. 選取您要編輯的服務。

1. 選擇**編輯**。

1. （選用） 在**設定服務**頁面上，編輯服務名稱或描述，然後選擇**下一步**。

1. 在**設定自訂設定**頁面上，選擇**刪除**以刪除服務執行個體，然後選擇**新增執行個體**以新增服務執行個體並填寫表單。

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

1. 檢閱您的更新，然後選擇**儲存變更**。

1. 模態會要求您驗證服務執行個體的刪除。遵循指示並選擇**是，刪除**。

1. 在服務詳細資訊頁面上，檢視服務的狀態詳細資訊。

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

**新增和刪除已編輯 的服務執行個體`spec`，如下列 AWS CLI 範例命令和回應所示。**

當您使用 CLI 時，您的 `spec` 必須*排除*要刪除的服務執行個體，並同時*包含*要新增的服務執行個體，以及您*尚未*標記為刪除的現有服務執行個體。

下列清單顯示編輯`spec`前的範例，以及規格所部署的服務執行個體清單。在上一個範例中使用此規格來編輯服務描述。

規格：

```
proton: ServiceSpec

pipeline:
  my_sample_pipeline_optional_input: "abc"
  my_sample_pipeline_required_input: "123"

instances:
  - name: "my-instance"
    environment: "simple-env"
    spec:
      my_sample_service_instance_optional_input: "def"
      my_sample_service_instance_required_input: "456"
  - name: "my-other-instance"
    environment: "simple-env"
    spec:
      my_sample_service_instance_required_input: "789"
```

下列範例 CLI `list-service-instances`命令和回應會在新增或刪除服務執行個體之前顯示作用中的執行個體。

命令：

```
$ aws proton list-service-instances \
    --service-name "MySimpleService"
```

回應：

```
{
    "serviceInstances": [
        {
            "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService/service-instance/my-other-instance",
            "createdAt": "2021-03-12T22:39:42.318000+00:00",
            "deploymentStatus": "SUCCEEDED",
            "environmentName": "simple-env",
            "lastDeploymentAttemptedAt": "2021-03-12T22:39:43.109000+00:00",
            "lastDeploymentSucceededAt": "2021-03-12T22:39:43.109000+00:00",
            "name": "my-other-instance",
            "serviceName": "example-svc",
            "templateMajorVersion": "1",
            "templateMinorVersion": "0",
            "templateName": "fargate-service"
        },
        {
            "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService/service-instance/my-instance",
            "createdAt": "2021-03-12T22:39:42.318000+00:00",
            "deploymentStatus": "SUCCEEDED",
            "environmentName": "simple-env",
            "lastDeploymentAttemptedAt": "2021-03-12T22:39:43.160000+00:00",
            "lastDeploymentSucceededAt": "2021-03-12T22:39:43.160000+00:00",
            "name": "my-instance",
            "serviceName": "example-svc",
            "serviceTemplateArn": "arn:aws:proton:region-id:123456789012:service-template/fargate-service",
            "templateMajorVersion": "1",
            "templateMinorVersion": "0",
            "templateName": "fargate-service"
        }
    ]
}
```

下列清單顯示已編輯`spec`用來刪除和新增執行個體的範例。`my-instance` 已移除名為 的現有執行個體，並新增名為 `yet-another-instance` 的新執行個體。

規格：

```
proton: ServiceSpec

pipeline:
  my_sample_pipeline_optional_input: "abc"
  my_sample_pipeline_required_input: "123"

instances:
  - name: "my-other-instance"
    environment: "simple-env"
    spec:
      my_sample_service_instance_required_input: "789"
  - name: "yet-another-instance"
    environment: "simple-env"
    spec:
      my_sample_service_instance_required_input: "789"
```

如果值存在於 中`spec`，您可以使用 `"${Proton::CURRENT_VAL}"`來指示要從原始 保留哪些參數值`spec`。`get-service` 使用 檢視`spec`服務的原始 ，如中所述[檢視服務資料](ag-svc-view.md)。

下列清單顯示如何使用 來`"${Proton::CURRENT_VAL}"`確保您的 `spec`不包含現有服務執行個體要保留的參數值變更。 **

規格：

```
proton: ServiceSpec

pipeline:
  my_sample_pipeline_optional_input: "${Proton::CURRENT_VAL}"
  my_sample_pipeline_required_input: "${Proton::CURRENT_VAL}"

instances:
  - name: "my-other-instance"
    environment: "simple-env"
    spec:
      my_sample_service_instance_required_input: "${Proton::CURRENT_VAL}"
  - name: "yet-another-instance"
    environment: "simple-env"
    spec:
      my_sample_service_instance_required_input: "789"
```

下一個清單顯示編輯服務的 CLI 命令和回應。

命令：

```
$ aws proton update-service 
    --name "MySimpleService" \
    --description "Edit by adding and deleting a service instance" \
    --spec "file://spec.yaml"
```

回應：

```
{
    "service": {
        "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService",
        "branchName": "main",
        "createdAt": "2021-03-12T22:39:42.318000+00:00",
        "description": "Edit by adding and deleting a service instance",
        "lastModifiedAt": "2021-03-12T22:55:48.169000+00:00",
        "name": "MySimpleService",
        "repositoryConnectionArn": "arn:aws:codestar-connections:region-id:123456789012:connection/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "repositoryId": "my-repository/myorg-myapp",
        "status": "UPDATE_IN_PROGRESS",
        "templateName": "fargate-service"
    }
}
```

下列`list-service-instances`命令和回應會確認`my-instance`已移除名為 的現有執行個體，並新增名為 `yet-another-instance` 的新執行個體。

命令：

```
$ aws proton list-service-instances \
    --service-name "MySimpleService"
```

回應：

```
{
    "serviceInstances": [
        {
            "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService/service-instance/yet-another-instance",
            "createdAt": "2021-03-12T22:39:42.318000+00:00",
            "deploymentStatus": "SUCCEEDED",
            "environmentName": "simple-env",
            "lastDeploymentAttemptedAt": "2021-03-12T22:56:01.565000+00:00",
            "lastDeploymentSucceededAt": "2021-03-12T22:56:01.565000+00:00",
            "name": "yet-another-instance",
            "serviceName": "MySimpleService",
            "templateMajorVersion": "1",
            "templateMinorVersion": "0",
            "templateName": "fargate-service"
        },
        {
            "arn": "arn:aws:proton:region-id:123456789012:service/MySimpleService/service-instance/my-other-instance",
            "createdAt": "2021-03-12T22:39:42.318000+00:00",
            "deploymentStatus": "SUCCEEDED",
            "environmentName": "simple-env",
            "lastDeploymentAttemptedAt": "2021-03-12T22:39:43.109000+00:00",
            "lastDeploymentSucceededAt": "2021-03-12T22:39:43.109000+00:00",
            "name": "my-other-instance",
            "serviceName": "MySimpleService",
            "templateMajorVersion": "1",
            "templateMinorVersion": "0",
            "templateName": "fargate-service"
        }
    ]
}
```

------

### 當您新增或移除服務執行個體時會發生什麼情況
<a name="ag-svc-add-delete"></a>

在您提交服務編輯以刪除和新增服務執行個體之後， 會 AWS Proton 採取下列動作。
+ 將服務設定為 `UPDATE_IN_PROGRESS`。
+ 如果服務有管道， 會將其狀態設定為 `IN_PROGRESS` 並封鎖管道動作。
+ 將要刪除的任何服務執行個體設定為 `DELETE_IN_PROGRESS`。
+ 封鎖服務動作。
+ 在標記為刪除的服務執行個體上封鎖動作。
+ 建立新的服務執行個體。
+ 刪除您列出要刪除的執行個體。
+ 嘗試移除刪除失敗的執行個體。
+ 新增和刪除完成後， 會重新佈建服務管道 （如果有的話），將您的服務設定為 ，`ACTIVE`並啟用服務和管道動作。

AWS Proton 會嘗試修復故障模式，如下所示。
+ 如果一或多個服務執行個體*無法建立*， 會 AWS Proton 嘗試取消佈建所有新建立的服務執行個體，並將 還原`spec`為先前的狀態。它*不會*刪除任何服務執行個體，也不會以任何方式**修改管道。
+ 如果一個或多個服務執行個體*無法刪除*，請 AWS Proton 重新佈建管道，而沒有已刪除的執行個體。`spec` 已更新以包含新增的執行個體，並排除標記為刪除的執行個體。
+ 如果*管道佈建失敗*，*則不會*嘗試回復，並且服務和管道都會反映失敗的更新狀態。

### 標記和服務編輯
<a name="ag-svc-update-tagging"></a>

當您新增服務執行個體做為服務編輯的一部分時， AWS 受管標籤會傳播至 ，並針對新執行個體和佈建的資源自動建立。如果您建立新的標籤，這些標籤只會套用至新的執行個體。現有的服務客戶受管標籤也會傳播到新的執行個體。如需詳細資訊，請參閱[AWS Proton 資源和標記](resources.md)。