

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

# バリデータを理解する


設定プロファイルを作成する場合、最大 2 つのバリデータを指定できます。バリデータは、設定データが構文的かつ意味的に正しいことを保証します。バリデータを使用する場合は、設定プロファイルを作成する前に作成する必要があります。 は、次のタイプのバリデータ AWS AppConfig をサポートしています。
+ **AWS Lambda 関数**: 機能フラグとフリーフォーム設定でサポートされています。
+ **JSON スキーマ**: フリーフォーム設定でサポートされています (JSON スキーマに対して機能フラグAWS AppConfig を自動的に検証します）。

**Topics**
+ [

## AWS Lambda 関数の検証
](#appconfig-creating-configuration-and-profile-validators-lambda)
+ [

## JSON スキーマバリデータ
](#appconfig-creating-configuration-and-profile-validators-json-schema)

## 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での自動再試行](https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html)」を参照してください。

検証を成功させる 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 「Services](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html#permissions-resource-serviceinvoke). AWS AppConfig limits the validation Lambda run time to 15 seconds, including start-up latency」を参照してください。

## 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 パラメータには検証方法は必要ありませんが、 を使用して新規または更新された SSM パラメータ設定の検証チェックを作成することをお勧めします AWS Lambda。
SSM ドキュメントの設定では `ApplicationConfiguration` ドキュメントタイプを使用します。対応する JSON スキーマは `ApplicationConfigurationSchema` ドキュメントタイプを使用します。
AWS AppConfig は、インラインスキーマの JSON スキーマバージョン 4.X をサポートしています。アプリケーション設定で JSON スキーマの異なるバージョンが必要な場合は、Lambda バリデータを作成する必要があります。