

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ステップ 3: カスタム AWS AppConfig 拡張機能を作成する
<a name="working-with-appconfig-extensions-creating-custom-extensions"></a>



拡張機能は、 AWS AppConfig ワークフロー中に実行する 1 つ以上のアクションを定義します。たとえば、 AWS 作成された`AWS AppConfig deployment events to Amazon SNS`拡張機能には、Amazon SNS トピックに通知を送信するアクションが含まれています。各アクションは、 を操作するとき、 AWS AppConfig または AWS AppConfig がユーザーに代わってプロセスを実行するときに呼び出されます。これらは*アクションポイント*と呼ばれます。 AWS AppConfig 拡張機能は次のアクションポイントをサポートします。

**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 など) を使用する場合は、`AT_DEPLOYMENT_TICK`アクションポイントでアラームをチェックする AWS AppConfig 拡張機能を作成し、アラームをトリガーした場合、安全ガードレールとしてデプロイをロールバックできます。

Datadog や New Relic などのサードパーティーのモニタリングソリューションを使用する場合は、`AT_DEPLOYMENT_TICK`アクションポイントでアラームをチェックする AWS AppConfig 拡張機能を作成し、アラームをトリガーした場合、安全ガードレールとしてデプロイをロールバックできます。詳細については、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 リソースネーム (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://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` アクションポイントに 2 つ目のアクションを作成します。

1. **拡張機能の作成** を選択します。

# AWS オーサリングされた通知拡張機能のカスタマイズ
<a name="working-with-appconfig-extensions-creating-custom-notification"></a>

[AWS オーサリングの通知拡張機能を使用するために、Lambdaまたは拡張機能を作成する必要はありません](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関数を作成する必要はありません。新しい拡張機能のフィールドで、Amazon リソースネーム (ARN) を`Uri` で指定するだけで、新しい拡張機能の使用できます。
+ カスタムEventBridge 通知拡張の場合は、イベントブリッジのデフォルトイベントの ARN を `Uri` フィールドに入力します。
+ Amazon SNS の通知拡張機能の使用するには、`Uri` フィールドに Amazon SNS トピックの ARN を入力します。
+ Amazon SQS の通知拡張機能の使用するには、`Uri` フィールドに Amazon SQS メッセージキューの ARN を入力します。