バリデータを理解する
設定プロファイルを作成する場合、最大 2 つのバリデータを指定できます。バリデータは、設定データが構文的かつ意味的に正しいことを保証します。バリデータを使用する場合は、設定プロファイルを作成する前にバリデーターを作成する必要があります。AWS AppConfig では次の種類のバリデータがサポートされています。
-
AWS Lambda 関数: 機能フラグとフリーフォーム設定をサポートします。
-
JSON スキーマ: フリーフォーム設定をサポートします。 (AWS AppConfig は JSON スキーマと照合して自動的に機能フラグを検証します)。
AWS Lambda 関数バリデータ
Lambda 関数バリデータは、次のイベントスキーマで設定する必要があります。AWS AppConfig はこのスキーマを使用して Lambda 関数を呼び出します。内容は base64 でエンコードされた文字列で、URI は文字列です。
{ "applicationId": "
The application ID of the configuration profile being validated
", "configurationProfileId": "The ID of the configuration profile being validated
", "configurationVersion": "The version of the configuration profile being validated
", "content": "Base64EncodedByteString", "uri": "The configuration uri
" }
AWS AppConfig は、Lambda X-Amz-Function-Error
ヘッダーが応答に設定されていることを検証します。Lambda は、関数が例外をスローした場合にこのヘッダーを設定します。X-Amz-Function-Error
の詳細については、「AWS Lambda デベロッパーガイド」の「エラー処理と AWS Lambda での自動再試行」を参照してください。
検証を成功させる Lambda 応答コードの簡単な例を以下に示します。
import json def handler(event, context): #Add your validation logic here print("We passed!")
検証を失敗させる Lambda 応答コードの簡単な例を以下に示します。
def handler(event, context): #Add your validation logic here raise Exception("Failure!")
設定パラメータが素数の場合にのみ有効とする、別の例を次に示します。
function isPrime(value) { if (value < 2) { return false; } for (i = 2; i < value; i++) { if (value % i === 0) { return false; } } return true; } exports.handler = async function(event, context) { console.log('EVENT: ' + JSON.stringify(event, null, 2)); const input = parseInt(Buffer.from(event.content, 'base64').toString('ascii')); const prime = isPrime(input); console.log('RESULT: ' + input + (prime ? ' is' : ' is not') + ' prime'); if (!prime) { throw input + "is not prime"; } }
AWS AppConfig は、StartDeployment
および ValidateConfigurationActivity
API オペレーションを呼び出すときに検証 Lambda を呼び出します。 Lambda を呼び出すには、appconfig.amazonaws.com
アクセス許可を提供する必要があります。詳細については、「AWS のサービスへのアクセス権限を関数に付与する」を参照してください。AWS AppConfig は検証 Lambda の実行時間を、起動レイテンシーを含めて 15 秒に制限します。
JSON スキーマバリデータ
SSM ドキュメントで設定を作成する場合は、その設定の JSON スキーマを指定または作成する必要があります。JSON スキーマは、アプリケーション構成設定ごとに許可されるプロパティを定義します。この JSON スキーマは、新規または更新された構成設定がアプリケーションに必要なベストプラクティスに準拠するようにするための一連のルールのように機能します。以下はその例です。
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "$id$", "description": "BasicFeatureToggle-1", "type": "object", "additionalProperties": false, "patternProperties": { "[^\\s]+$": { "type": "boolean" } }, "minProperties": 1 }
SSM ドキュメントから設定を作成すると、その設定がスキーマの要件を満たしているかどうかをシステムが自動的に検証します。そうでない場合は、AWS AppConfig は、検証エラーを返します。
重要
JSON スキーマ検証ツールについては、次の重要事項に留意してください。
-
SSM ドキュメントに保存された設定データは、設定をシステムに追加する前に、関連付けられた JSON スキーマに対して検証する必要があります。SSM パラメータには検証方式は必要ありませんが、AWS Lambda を使用して、新規または更新された SSM パラメータ設定の検証チェックを作成することを推奨します。
-
SSM ドキュメントの設定では
ApplicationConfiguration
ドキュメントタイプを使用します。対応する JSON スキーマはApplicationConfigurationSchema
ドキュメントタイプを使用します。 -
AWS AppConfig は、インラインスキーマの JSON スキーマバージョン 4.X をサポートします。アプリケーション設定で JSON スキーマの異なるバージョンが必要な場合は、Lambda バリデータを作成する必要があります。