

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

# 步驟 3：建立自訂 AWS AppConfig 延伸模組
<a name="working-with-appconfig-extensions-creating-custom-extensions"></a>



延伸定義一或多個在 AWS AppConfig 工作流程期間執行的動作。例如， AWS 撰寫的`AWS AppConfig deployment events to Amazon SNS`擴充功能包含將通知傳送至 Amazon SNS 主題的動作。當您與 互動或 代表您 AWS AppConfig 執行程序 AWS AppConfig 時，會叫用每個動作。這些稱為*動作點*。 AWS AppConfig extensions 支援下列動作點：

**PRE\_\* 動作點**：在請求驗證之後，但在 執行與`PRE_*`動作點名稱對應的活動之前 AWS AppConfig ，會套用在動作點上設定的延伸動作。這些動作叫用會與請求同時處理。如果提出多個請求，動作調用會依序執行。另請注意，`PRE_*`動作點接收並可以變更組態的內容。 `PRE_*`動作點也可以回應錯誤並防止動作發生。
+ `PRE_CREATE_HOSTED_CONFIGURATION_VERSION`
+ `PRE_START_DEPLOYMENT`

**ON\_\* 動作點**：延伸項目也可以使用`ON_*`動作點與 AWS AppConfig 工作流程平行執行。 `ON_*` 動作點會以非同步方式叫用。 `ON_*`動作點不會接收組態的內容。如果延伸模組在`ON_*`動作點期間發生錯誤，服務會忽略錯誤並繼續工作流程。
+ `ON_DEPLOYMENT_START`
+ `ON_DEPLOYMENT_STEP`
+ `ON_DEPLOYMENT_BAKING`
+ `ON_DEPLOYMENT_COMPLETE`
+ `ON_DEPLOYMENT_ROLLED_BACK`

**AT\_\* 動作點**：在`AT_*`動作點上設定的延伸動作會與工作流程同步並行 AWS AppConfig 叫用。如果延伸模組在`AT_*`動作點期間發生錯誤，服務會停止工作流程並復原部署。
+ `AT_DEPLOYMENT_TICK`

`AT_DEPLOYMENT_TICK` 動作點支援第三方監控整合。 `AT_DEPLOYMENT_TICK` 在組態部署處理協調期間調用 。如果您使用第三方監控解決方案 （例如 Datadog 或 New Relic)，您可以建立 AWS AppConfig 擴充功能，在`AT_DEPLOYMENT_TICK`動作點檢查警示，並在觸發警示時復原部署，做為安全防護機制。

如果您使用 Datadog 或 New Relic 等第三方監控解決方案，您可以建立 AWS AppConfig 擴充功能，在`AT_DEPLOYMENT_TICK`動作點檢查警示，並在觸發警示時復原部署，做為安全防護機制。如需詳細資訊，請參閱 GitHub 上的下列 Datadog 和 New Relic 整合範例：
+ [Datadog](https://github.com/aws-samples/aws-appconfig-tick-extn-for-datadog)
+ [New Relic](https://github.com/aws-samples/sample-aws-appconfig-tick-extn-for-newrelic)

如需 AWS AppConfig 延伸模組的詳細資訊，請參閱下列主題：
+ [使用延伸模組擴展 AWS AppConfig 工作流程](working-with-appconfig-extensions.md)
+ [逐步解說：建立自訂 AWS AppConfig 擴充功能](working-with-appconfig-extensions-creating-custom.md)

**擴充功能範例**  
下列範例延伸定義一個呼叫動作點`PRE_CREATE_HOSTED_CONFIGURATION_VERSION`的動作。在 `Uri`欄位中，動作會指定本演練稍早所建立 `MyS3ConfigurationBackUpExtension` Lambda 函數的 Amazon Resource Name (ARN)。此動作也會指定本演練稍早建立的 AWS Identity and Access Management (IAM) 擔任角色 ARN。

**擴充 AWS AppConfig 功能範例**

```
{
    "Name": "MySampleExtension",
    "Description": "A sample extension that backs up configurations to an S3 bucket.",
    "Actions": {
        "PRE_CREATE_HOSTED_CONFIGURATION_VERSION": [
            {
                "Name": "PreCreateHostedConfigVersionActionForS3Backup",
                "Uri": "arn:aws:lambda:{{aws-region}}:111122223333:function:MyS3ConfigurationBackUpExtension",
                "RoleArn": "arn:aws:iam::111122223333:role/ExtensionsTestRole"
            }
        ]
    },
    "Parameters" : {
        "S3_BUCKET": {
            "Required": false
        }
    }
}
```

**注意**  
若要在建立擴充功能時檢視請求語法和欄位描述，請參閱 *AWS AppConfig API 參考*中的 [CreateExtension](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_CreateExtension.html) 主題。

**建立擴充功能 （主控台）**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/appconfig/](https://console.aws.amazon.com/systems-manager/appconfig/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **AWS AppConfig**。

1. 在**延伸項目**索引標籤上，選擇**建立延伸項目**。

1. 針對**延伸項目名稱**，輸入唯一的名稱。為了本演練的目的，請輸入 **MyS3ConfigurationBackUpExtension**。或者，輸入描述。

1. 在**動作**區段中，選擇**新增動作**。

1. 在**名稱**欄位中輸入唯一的名稱。為了本演練的目的，請輸入 **PreCreateHostedConfigVersionActionForS3Backup**。此名稱說明 動作所使用的動作點和延伸用途。

1. 在**動作點**清單中，選擇 **PRE\_CREATE\_HOSTED\_CONFIGURATION\_VERSION**。

1. 針對 **Uri**，選擇 **Lambda 函數**，然後在 **Lambda 函數**清單中選擇函數。如果您沒有看到函數，請確認您位於建立函數 AWS 區域 的相同位置。

1. 針對 **IAM 角色**，選擇您在此演練中稍早建立的角色。

1. 在**延伸參數 （選用）** 區段中，選擇**新增參數**。

1. 針對**參數名稱**，輸入名稱。為了本演練的目的，請輸入 **S3\_BUCKET**。

1. 重複步驟 5–11，為動作點建立第二個`PRE_START_DEPLOYMENT`動作。

1. 選擇**建立延伸**模組。