

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

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

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

**AT\$1\$1 動作點**：在`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\$1CREATE\$1HOSTED\$1CONFIGURATION\$1VERSION**。

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

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

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

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

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

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

# 自訂 AWS 撰寫的通知擴充功能
<a name="working-with-appconfig-extensions-creating-custom-notification"></a>

您不需要建立 Lambda 或擴充功能，即可使用[AWS 撰寫的通知擴充功能](https://docs.aws.amazon.com/appconfig/latest/userguide/working-with-appconfig-extensions-about-predefined.html)。您可以直接建立延伸關聯，然後執行呼叫其中一個支援動作點的操作。根據預設， AWS 撰寫的通知延伸支援下列動作點：
+ `ON_DEPLOYMENT_START`
+ `ON_DEPLOYMENT_COMPLETE`
+ `ON_DEPLOYMENT_ROLLED_BACK`

如果您建立`AWS AppConfig deployment events to Amazon SNS`擴充功能和`AWS AppConfig deployment events to Amazon SQS`擴充功能的自訂版本，您可以指定要接收通知的動作點。

**注意**  
`AWS AppConfig deployment events to EventBridge` 延伸模組不支援`PRE_*`動作點。如果您想要移除指派給 AWS 撰寫版本的一些預設動作點，您可以建立自訂版本。

如果您建立撰寫的通知延伸項目的自訂版本， AWS 則不需要建立 Lambda 函數。您只需在新延伸版本的 `Uri` 欄位中指定 Amazon Resource Name (ARN)。
+ 對於自訂 EventBridge 通知延伸，在`Uri`欄位中輸入 EventBridge 預設事件的 ARN。
+ 對於自訂 Amazon SNS 通知延伸，在`Uri`欄位中輸入 Amazon SNS 主題的 ARN。
+ 對於自訂 Amazon SQS 通知延伸，在`Uri`欄位中輸入 Amazon SQS 訊息佇列的 ARN。