ステップ 3: 設定プロファイルと機能フラグの作成 - AWS AppConfig

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

ステップ 3: 設定プロファイルと機能フラグの作成

設定は、アプリケーションの動作に影響する設定のコレクションです。設定プロファイルにより AWS AppConfig は設定にアクセスできます。設定プロファイルには、次に示す情報が含まれます。

  • 設定が保存される URI の場所。

  • 設定へのアクセスを提供する AWS Identity and Access Management (IAM) ロール。

  • 構成データのバリデータ。JSON スキーマまたは AWS Lambda 関数のいずれかを使用して、設定プロファイルを検証できます。設定プロファイルは、最大 2 つのバリデータを持つことができます。

AWS AppConfigは、次のタイプの構成プロファイルをサポートします。

  • 機能フラグ: 機能フラグの設定を使用して、製品の発売や発表など、適切なタイミングでのデプロイが必要となる新機能をオンにします。

  • フリーフォーム: 自由形式の構成を使用して、アプリケーションに注意深く変更を加えてください。

設定例

AWS Systems Manager の機能である AWS AppConfig を使用して、アプリケーション設定を作成、管理し、迅速にデプロイします。設定は、アプリケーションの動作に影響する設定のコレクションです。次に例を示します。

機能フラグ設定

次の機能フラグ設定では、モバイル決済とデフォルト支払いを地域ごとに有効または無効にします。

JSON
{ "allow_mobile_payments": { "enabled": false }, "default_payments_per_region": { "enabled": true } }
YAML
--- allow_mobile_payments: enabled: false default_payments_per_region: enabled: true

運用環境設定

次のフリーフォーム構成では、アプリケーションが要求を処理する方法に制限が適用されます。

JSON
{ "throttle-limits": { "enabled": "true", "throttles": [ { "simultaneous_connections": 12 }, { "tps_maximum": 5000 } ], "limit-background-tasks": [ true ] } }
YAML
--- throttle-limits: enabled: 'true' throttles: - simultaneous_connections: 12 - tps_maximum: 5000 limit-background-tasks: - true

アクセス制御リストの設定

次のアクセス制御リストの自由形式構成では、アプリケーションにアクセスできるユーザーまたはグループを指定します。

JSON
{ "allow-list": { "enabled": "true", "cohorts": [ { "internal_employees": true }, { "beta_group": false }, { "recent_new_customers": false }, { "user_name": "Jane_Doe" }, { "user_name": "John_Doe" } ] } }
YAML
--- allow-list: enabled: 'true' cohorts: - internal_employees: true - beta_group: false - recent_new_customers: false - user_name: Jane_Doe - user_name: Ashok_Kumar

設定プロファイルの IAM ロールについて

次の手順で説明するように、AWS AppConfig を使用して、設定データへのアクセスを提供する IAM ロールを作成できます。自分で IAM ロールを作成して、リストから選択することもできます。AWS AppConfig を使用してロールを作成する場合、システムによってロールが作成され、選択した構成ソースのタイプに応じて、次のいずれかのアクセス許可ポリシーが指定されます。

設定ソースは SSM ドキュメント

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetDocument" ], "Resource": [ "arn:aws:ssm:AWS-Region:account-number:document/document-name" ] } ] }

設定ソースはパラメータストアパラメータ

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter" ], "Resource": [ "arn:aws:ssm:AWS-Region:account-number:parameter/parameter-name" ] } ] }

AWS AppConfig を使用してロールを作成する場合、システムはロールの次の信頼関係も作成します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "appconfig.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Amazon S3 に保存された設定について

設定は、Amazon Simple Storage Service (Amazon S3) バケットに保存できます。設定プロファイルの作成時には、バケット内の 1 つの S3 オブジェクトの URI を指定します。また、そのオブジェクトを取得するために AWS AppConfig のアクセス許可を付与する AWS Identity and Access Management (IAM) ロールの Amazon リソースネーム (ARN) を指定します。Amazon S3 オブジェクトの設定プロファイルを作成する場合は、次の制限事項に注意してください。

制限 詳細

サイズ

S3 オブジェクトとして保存できる設定のサイズは最大 1 MB です。

オブジェクト暗号化

設定プロファイルは、SSE-S3 で暗号化されたオブジェクトのみ対象にすることができます。

ストレージクラス

AWS AppConfig は、S3 ストレージクラスとして、STANDARDINTELLIGENT_TIERINGREDUCED_REDUNDANCYSTANDARD_IAONEZONE_IA をサポートしています。次のクラスはサポートされていません。すべての S3 Glacier クラス (GLACIERおよびDEEP_ARCHIVE)

バージョニング

AWS AppConfig では、S3 オブジェクトでバージョニングが使用されている必要があります。

Amazon S3 オブジェクトとして保存する設定のアクセス許可の設定

S3 オブジェクトとして保存する設定の設定プロファイルを作成する場合は、そのオブジェクトを取得するアクセス許可を AWS AppConfig に付与する IAM ロールの ARN を指定する必要があります。このロールには、以下のアクセス許可が含まれている必要があります。

S3 オブジェクトに対するアクセス許可

  • 3:GetObject

  • 3:GetObjectVersion

S3 オブジェクトを一覧表示するアクセス許可

3:ListAllMyBuckets

オブジェクトを保存する S3 バケットへのアクセス許可

  • 3:GetBucketLocation

  • 3:GetBucketVersioning

  • 3:ListBucket

  • 3:ListBucketVersions

以下の手順を実行して、S3 オブジェクトに保存されている設定を AWS AppConfig が取得できるようにするロールを作成します。

S3 オブジェクトにアクセスするための IAM ポリシーの作成

S3 オブジェクトに保存されている設定を AWS AppConfig が取得できるようにする IAM ポリシーを作成するには、以下の手順に従います。

S3 オブジェクトにアクセスするための IAM ポリシーを作成するには
  1. https://console.aws.amazon.com/iam/ で IAM コンソール を開きます。

  2. ナビゲーションペインで [Policies] (ポリシー) を選択してから [Create policy] (ポリシーの作成) を選択します。

  3. [Create policy] (ポリシーの作成) ページで、[JSON] タブを選択します。

  4. S3 バケットおよび設定オブジェクトについての情報を、次のサンプルポリシーで更新します。次に、そのポリシーを [JSON] タブのテキストフィールドに貼り付けます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::my-bucket/my-configurations/my-configuration.json" }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetBucketVersioning", "s3:ListBucketVersions", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-bucket" ] }, { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" } ] }
  5. [Review policy] (ポリシーの確認) を選択します。

  6. [ポリシーの確認] ページの [名前] ボックスに名前を入力し、続いて説明を入力します。

  7. [Create policy] (ポリシーを作成) を選択します。[Roles] (ロール) ページが再度表示されます。

S3 オブジェクトにアクセスするための IAM ロールの作成

S3 オブジェクトに保存されている設定を AWS AppConfig が取得できるようにする IAM ロールを作成するには、以下の手順に従います。

Amazon S3 オブジェクトにアクセスするための IAM ポリシーを作成するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles] (ロール) を選択してから、[Create role] (ロールを作成する) を選択します。

  3. [Select type of trusted entity] (信頼するエンティティのタイプを選択) で [AWS service] (AWS サービス) を選択します。

  4. ユースケースの選択」セクションの「一般的なユースケース」で、「EC2」を選択し、「次へ」を選択します。アクセス許可.

  5. [アクセス権限ポリシーをアタッチする] ページで、検索ボックスに前の手順で作成したポリシーの名前を入力します。

  6. ポリシーを選択し、[次へ] を選択します。タグ

  7. [タグの追加 (オプション)] ページで、キーとオプション値を入力し、[次へ] を選択します。確認.

  8. [Review (確認)] ページの [ロール名] フィールドに名前を入力し、続いて説明を入力します。

  9. [Create role] (ロールの作成) を選択します。[Roles] (ロール) ページが再度表示されます。

  10. [Roles] ページで作成したロールを選択して、[Summary] ページを開きます。[ロール名] と [ロール ARN] を書き留めます。このロール ARN は、このトピックで後述する設定プロファイルの作成時に指定します。

信頼関係の作成

次の手順を使用して、先ほど作成したロールが AWS AppConfig を信頼するように設定します。

信頼関係を追加するには
  1. 作成したロールの [Summary] ページで [Trust Relationships] タブを選択し、[Edit Trust Relationship] を選択します。

  2. 次の例に示すように、"ec2.amazonaws.com" を削除して "appconfig.amazonaws.com" を追加します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "appconfig.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  3. [Update Trust Policy] (信頼ポリシーの更新) をクリックします。

バリデータについて

設定および設定プロファイルを作成する場合、最大 2 つのバリデータを指定できます。バリデータは、設定データが構文的かつ意味的に正しいことを保証します。バリデータは、JSON スキーマで、または AWS Lambda 関数として作成できます。

重要

SSM ドキュメントに保存された設定データは、設定をシステムに追加する前に、関連付けられた JSON スキーマに対して検証する必要があります。SSM パラメータには検証方式は必要ありませんが、AWS Lambda を使用して、新規または更新された SSM パラメータ設定の検証チェックを作成することを推奨します。

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 スキーマバリデーターに関する以下の情報に注意してください。

  • SSMApplicationConfiguration ドキュメントの設定はドキュメントタイプを使用します。対応する JSON スキーマは、ApplicationConfigurationSchemaドキュメントタイプを使用します。

  • AWS AppConfig は、インラインスキーマの JSON スキーマバージョン 4.X をサポートします。アプリケーション設定で JSON スキーマの異なるバージョンが必要な場合は、Lambda バリデータを作成する必要があります。

AWS Lambda バリデータ

Lambda 関数バリデータは、次のイベントスキーマで設定する必要があります。AWS AppConfig はこのスキーマを使用して Lambda 関数を呼び出します。中身は base64 でエンコードされた文字列で、URI は文字列です。

{ "ApplicationId": "The application Id of the configuration profile being validated", "ConfigurationProfileId": "The configuration profile Id of the configuration profile being validated", "ConfigurationVersion": "The configuration version of the configuration profile being validated", "Content": "Base64EncodedByteString", "Uri": "The uri of the configuration" }

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 秒に制限します。

機能フラグ設定プロファイルの作成

機能フラグを使用して、アプリケーション内の機能を有効または無効にしたり、フラグ属性を使用してアプリケーション機能のさまざまな特性を設定したりできます。AWS AppConfig は、機能フラグ設定を、フラグとフラグ属性に関するデータおよびメタデータを含む機能フラグ形式で、AWS AppConfig でホストされた設定ストアに保存します。AWS AppConfig でホストされた設定ストアの詳細については、「AWS AppConfig でホストされた設定ストアについて」のセクションを参照してください。

重要

機能フラグの設定データを取得するには、アプリケーションがGetLatestConfiguration API を呼び出す必要があります。機能フラグの設定データを呼び出して取得することはできませんがGetConfiguration、これは非推奨です。詳細については、AWS AppConfig API リファレンスの「GetLatestConfiguration」を参照してください。

機能フラグおよび機能フラグ設定プロファイルの作成 (コンソール)

AWS AppConfig コンソールを使用して AWS AppConfig 機能フラグの設定プロファイルと機能フラグ設定を作成するには、次の手順に従います。

設定プロファイルを作成するには
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/appconfig/) を開きます。

  2. [Applications] (アプリケーション) タブで、AWS AppConfig 設定を作成するで作成したアプリケーションを選択し、[Configuration profiles and feature flags] (設定プロファイルと機能フラグ) タブを選択します。

  3. [作成] を選択します。

  4. [Feature flag] (機能フラグ) を選択します。

機能フラグを作成する
  1. 作成した設定で、[Add new flag] (新しいフラグを追加する) を選択します。

  2. [Flag name] (フラグの名前) と (オプションで) [Description] (説明) を入力します。フラグキーは、入力した名前のスペースをアンダースコアに置き換えることで自動入力されます。別の値または形式を使用する場合は、フラグキーを編集できます。フラグを作成した後、フラグ名は編集できますが、フラグキーは編集できません。

  3. トグルボタンを使用して、機能フラグが [Enabled] (有効) または [Disabled] (無効) のいずれであるかを指定します。

  4. (オプション) 機能フラグに [Attributes] (属性) と [Constraints] (制約) を追加します。属性を使用すると、フラグ内に追加の値を指定できます。オプションで、属性値を指定した制約と比較して検証することができます。制約により、予期しない値がアプリケーションにデプロイされないようにします。

    AWS AppConfig 機能フラグでは、次のタイプの属性および対応する制約をサポートします。

    タイプ 制約事項 説明
    [String] (文字列) 正規表現

    文字列の正規表現パターン

    列挙型

    文字列に許容される値のリスト

    数値 最小

    属性の最小数値

    [Maximum] (最大)

    属性の最大数値

    [Boolean] (ブール値) なし なし
    文字列配列 正規表現 配列の要素の正規表現パターン
    列挙型 配列の要素に許容される値のリスト
    数値配列 最小 配列の要素の最小数値
    [Maximum] (最大) 配列の要素の最大数値
    注記

    [Required value] (必須の値) を選択して、属性値が必須かどうかを指定します。

  5. [Save new version] (新しいバージョンを保存する) を選択します。

ステップ 4 に進みます。デプロイ戦略の作成。

機能フラグおよび機能フラグ設定プロファイルの作成 (コマンドライン)

以下の手順では、AWS Command Line Interface (Linux または Windows の場合) または Tools for Windows PowerShell を使用して、AWS AppConfigの機能フラグの設定プロファイルを作成する方法について説明します。必要に応じて、AWS CloudShellを使用して以下のコマンドを実行できます。詳細については、AWS CloudShell ユーザーガイドの「AWS CloudShell とは何か」を参照してください。

機能フラグの設定をステップバイステップで作成する
  1. AWS CLI をインストールして設定します。詳細については、「AWS コマンドラインツールをインストールまたはアップグレードする」を参照してください。

  2. [Type] (タイプ) に AWS.AppConfig.FeatureFlags を指定して、機能フラグの設定プロファイルを作成します。設定プロファイルでは、ロケーション URI に hosted を使用する必要があります。

    Linux
    aws appconfig create-configuration-profile \ --application-id The_application_ID \ --name A_name_for_the_configuration_profile \ --location-uri hosted \ --type AWS.AppConfig.FeatureFlags
    Windows
    aws appconfig create-configuration-profile ^ --application-id The_application_ID ^ --name A_name_for_the_configuration_profile ^ --location-uri hosted ^ --type AWS.AppConfig.FeatureFlags
    PowerShell
    New-APPCConfigurationProfile ` -Name A_name_for_the_configuration_profile ` -ApplicationId The_application_ID ` -LocationUri hosted ` -Type AWS.AppConfig.FeatureFlags
  3. 機能フラグの設定データを作成します。データは JSON 形式であり、AWS.AppConfig.FeatureFlags JSON スキーマに準拠していることが必要です。スキーマの詳細については、「AWS のタイプリファレンス。 AppConfig。 FeatureFlags」を参照してください。

  4. CreateHostedConfigurationVersion API を使用して、機能フラグの設定データを AWS AppConfig に保存します。

    Linux
    aws appconfig create-hosted-configuration-version \ --application-id The_application_ID \ --configuration-profile-id The_configuration_profile_id \ --content-type "application/json" \ --content file://path/to/feature_flag_configuration_data \ file_name_for_system_to_store_configuration_data
    Windows
    aws appconfig create-hosted-configuration-version ^ --application-id The_application_ID ^ --configuration-profile-id The_configuration_profile_id ^ --content-type "application/json" ^ --content file://path/to/feature_flag_configuration_data ^ file_name_for_system_to_store_configuration_data
    PowerShell
    New-APPCHostedConfigurationVersion ` -ApplicationId The_application_ID ` -ConfigurationProfileId The_configuration_profile_id ` -ContentType "application/json" ` -Content file://path/to/feature_flag_configuration_data ` file_name_for_system_to_store_configuration_data

    システムが以下のような情報を返します。

    Linux
    {
       "ApplicationId"          : "The application ID",
       "ConfigurationProfileId" : "The configuration profile ID",
       "VersionNumber"          : "The configuration version number",
       "ContentType"            : "application/json"
    }
    Windows
    {
       "ApplicationId"          : "The application ID",
       "ConfigurationProfileId" : "The configuration profile ID",
       "VersionNumber"          : "The configuration version number",
       "ContentType"            : "application/json"
    }
    PowerShell
    ApplicationId          : The application ID
    ConfigurationProfileId : The configuration profile ID
    VersionNumber          : The configuration version number
    ContentType            : application/json

    service_returned_content_file には、AWS AppConfig によって生成されたメタデータをいくつか含む設定データが含まれます。

    注記

    ホストされた設定バージョンを作成すると、AWS AppConfig は、データが AWS.AppConfig.FeatureFlags JSON スキーマに準拠していることを検証します。さらに、AWS AppConfig は、データ内の各機能フラグ属性が、各属性に定義された制約を満たすことを検証します。

AWS のタイプリファレンス。 AppConfig。 FeatureFlags

AWS.AppConfig.FeatureFlags JSON スキーマを、機能フラグの設定データを作成するためのリファレンスとして使用します。

{ "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "flagSetDefinition": { "type": "object", "properties": { "version": { "$ref": "#/definitions/flagSchemaVersions" }, "flags": { "$ref": "#/definitions/flagDefinitions" }, "values": { "$ref": "#/definitions/flagValues" } }, "required": ["version", "flags"], "additionalProperties": false }, "flagDefinitions": { "type": "object", "patternProperties": { "^[a-z][a-zA-Z\\d-_]{0,63}$": { "$ref": "#/definitions/flagDefinition" } }, "maxProperties": 100, "additionalProperties": false }, "flagDefinition": { "type": "object", "properties": { "name": { "$ref": "#/definitions/customerDefinedName" }, "description": { "$ref": "#/definitions/customerDefinedDescription" }, "_createdAt": { "type": "string" }, "_updatedAt": { "type": "string" }, "_deprecation": { "type": "object", "properties": { "status": { "type": "string", "enum": ["planned"] } }, "additionalProperties": false }, "attributes": { "$ref": "#/definitions/attributeDefinitions" } }, "additionalProperties": false }, "attributeDefinitions": { "type": "object", "patternProperties": { "^[a-z][a-zA-Z\\d-_]{0,63}$": { "$ref": "#/definitions/attributeDefinition" } }, "maxProperties": 25, "additionalProperties": false }, "attributeDefinition": { "type": "object", "properties": { "description": { "$ref": "#/definitions/customerDefinedDescription" }, "constraints": { "oneOf": [ { "$ref": "#/definitions/numberConstraints" }, { "$ref": "#/definitions/stringConstraints" }, { "$ref": "#/definitions/arrayConstraints" }, { "$ref": "#/definitions/boolConstraints" } ] } }, "additionalProperties": false }, "flagValues": { "type": "object", "patternProperties": { "^[a-z][a-zA-Z\\d-_]{0,63}$": { "$ref": "#/definitions/flagValue" } }, "maxProperties": 100, "additionalProperties": false }, "flagValue": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "_createdAt": { "type": "string" }, "_updatedAt": { "type": "string" } }, "patternProperties": { "^[a-z][a-zA-Z\\d-_]{0,63}$": { "$ref": "#/definitions/attributeValue", "maxProperties": 25 } }, "required": ["enabled"], "additionalProperties": false }, "attributeValue": { "oneOf": [ { "type": "string", "maxLength": 1024 }, { "type": "number" }, { "type": "boolean" }, { "type": "array", "oneOf": [ { "items": { "type": "string", "maxLength": 1024 } }, { "items": { "type": "number" } } ] } ], "additionalProperties": false }, "stringConstraints": { "type": "object", "properties": { "type": { "type": "string", "enum": ["string"] }, "required": { "type": "boolean" }, "pattern": { "type": "string", "maxLength": 1024 }, "enum": { "type": "array", "type": "array", "maxLength": 100, "items": { "oneOf": [ { "type": "string", "maxLength": 1024 }, { "type": "integer" } ] } } }, "required": ["type"], "not": { "required": ["pattern", "enum"] }, "additionalProperties": false }, "numberConstraints": { "type": "object", "properties": { "type": { "type": "string", "enum": ["number"] }, "required": { "type": "boolean" }, "minimum": { "type": "integer" }, "maximum": { "type": "integer" } }, "required": ["type"], "additionalProperties": false }, "arrayConstraints": { "type": "object", "properties": { "type": { "type": "string", "enum": ["array"] }, "required": { "type": "boolean" }, "elements": { "$ref": "#/definitions/elementConstraints" } }, "required": ["type"], "additionalProperties": false }, "boolConstraints": { "type": "object", "properties": { "type": { "type": "string", "enum": ["boolean"] }, "required": { "type": "boolean" } }, "required": ["type"], "additionalProperties": false }, "elementConstraints": { "oneOf": [ { "$ref": "#/definitions/numberConstraints" }, { "$ref": "#/definitions/stringConstraints" } ] }, "customerDefinedName": { "type": "string", "pattern": "^[^\\n]{1,64}$" }, "customerDefinedDescription": { "type": "string", "maxLength": 1024 }, "flagSchemaVersions": { "type": "string", "enum": ["1"] } }, "type": "object", "$ref": "#/definitions/flagSetDefinition", "additionalProperties": false }
重要

機能フラグの設定データを取得するには、アプリケーションがGetLatestConfiguration API を呼び出す必要があります。機能フラグの設定データを呼び出して取得することはできませんがGetConfiguration、これは非推奨です。詳細については、AWS AppConfig API リファレンスの「GetLatestConfiguration」を参照してください。

アプリケーションが呼び出してGetLatestConfiguration、新しくデプロイされた設定を受信すると、機能フラグと属性を定義する情報が削除されます。簡略化された JSON には、指定された各フラグキーに一致するキーのマップが含まれています。簡略化された JSON には、truefalseenabled属性のマップ値または属性値も含まれています。enabledフラグがに設定されるとtrue、フラグの属性も存在することになります。次の JSON スキーマは、JSON 出力の形式を記述します。

{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "patternProperties": { "^[a-z][a-zA-Z\\d-_]{0,63}$": { "$ref": "#/definitions/attributeValuesMap" } }, "maxProperties": 100, "additionalProperties": false, "definitions": { "attributeValuesMap": { "type": "object", "properties": { "enabled": { "type": "boolean" } }, "required": ["enabled"], "patternProperties": { "^[a-z][a-zA-Z\\d-_]{0,63}$": { "$ref": "#/definitions/attributeValue" } }, "maxProperties": 25, "additionalProperties": false }, "attributeValue": { "oneOf": [ { "type": "string","maxLength": 1024 }, { "type": "number" }, { "type": "boolean" }, { "type": "array", "oneOf": [ { "items": { "oneOf": [ { "type": "string", "maxLength": 1024 } ] } }, { "items": { "oneOf": [ { "type": "number" } ] } } ] } ], "additionalProperties": false } } }

フリーフォーム設定プロファイルの作成

フリーフォーム設定プロファイルにより、AWS AppConfig は指定されたソースロケーションから設定にアクセスすることができます。フリーフォーム設定を保存できる形式と場所は次のとおりです。

  • AWS AppConfig でホストされた設定ストア内の YAML、JSON、またはテキストドキュメント。

  • Amazon Simple Storage Service (Amazon S3) バケット内のオブジェクト。

  • Systems Manager ドキュメントストア内のドキュメント。

  • 統合ソースアクションはすべて AWS CodePipeline のサポート対象です。

AWS AppConfig でホストされた設定ストアまたは SSM ドキュメントに保存するフリーフォーム設定の場合、設定プロファイルの作成時に Systems Manager コンソールを使用してフリーフォーム設定を作成できます。このプロセスについては、このトピックの後半で説明します。

SSM パラメータまたは S3 に保存する設定の場合は、最初にパラメータまたはオブジェクトを作成してから、パラメータストアまたは S3 に追加する必要があります。パラメータまたはオブジェクトを作成したら、このトピックの手順に従って設定プロファイルを作成できます。パラメータストアでのパラメータの作成方法については、「AWS Systems Manager ユーザーガイド」の「Systems Manager パラメータを作成する」を参照してください。

設定ストアのクォータと制限について

AWS AppConfig でサポートされる設定ストアには、以下のクォータと制限があります。

AWS AppConfig でホストされた設定ストア S3 パラメータストア ドキュメントストア AWS CodePipeline

設定サイズの制限

1 MB

1 MB

S3 ではなく AWS AppConfig によって適用

4 KB (無料利用枠)/8 KB (詳細パラメータ)

64 KB

1 MB

強制するがAWS AppConfig、強制しない CodePipeline

リソースストレージの制限

1 GB

無制限

10,000 パラメータ (無料利用枠)/100,000 パラメータ (詳細パラメータ)

500 ドキュメント

アプリケーションごとの設定プロファイルの数によって制限される (アプリケーションあたり 100 プロファイル)

サーバー側の暗号化

はい

SSE-S3

いいえ

いいえ

はい

AWS CloudFormation のサポート

はい

データの作成または更新用ではありません

はい

いいえ

はい

create または update API アクションを検証する

サポート外

サポート外

サポートされている正規表現

すべての put および update API アクションに必要な JSON スキーマ

サポート外

料金表

無料

Amazon S3 の料金」を参照してください

AWS Systems Manager 料金表」を参照してください

無料

AWS CodePipeline 料金表」を参照してください

AWS AppConfig でホストされた設定ストアについて

AWS AppConfig には、内部の設定ストアまたはホストされた設定ストアが含まれています。構成は 1 MB 以下である必要があります。AWS AppConfig でホストされた構成ストアには、他の構成ストアオプションと比べて次のような利点があります。

  • Amazon Simple Storage Service (Amazon S3) やパラメータストアなど、他のサービスをセットアップして設定する必要はありません。

  • 設定ストアを使用するために AWS Identity and Access Management (IAM) アクセス許可を設定する必要はありません。

  • 設定を YAML、JSON、またはテキストドキュメントとして保存できます。

  • ストアを使用してもコストは発生しません。

  • 構成プロファイルを作成したら、作成した構成をストアに追加できます。

フリーフォーム設定および設定プロファイルの作成

このセクションでは、フリーフォーム設定および設定プロファイルの作成方法について説明します。開始する前に、次の情報に注意してください。

  • 次の手順では、選択した設定ストアの設定データに AWS AppConfig がアクセスできるように、IAM サービスロールを指定する必要があります。AWS AppConfig でホストされた設定ストアを使用する場合、このロールは必要ありません。S3、パラメータストア、または Systems Manager のドキュメントストアを選択した場合は、既存の IAM ロールを選択するか、システムによってロールを自動的に作成するオプションを選択する必要があります。詳細については、「設定プロファイルの IAM ロールについて」を参照してください。

  • S3 に保存されている設定用の設定プロファイルを作成する場合は、アクセス許可を設定する必要があります。S3 を設定ストアとして使用するためのアクセス許可およびその他の要件の詳細については、「Amazon S3 に保存された設定について」を参照してください。

  • バリデータを使用する場合は、バリデータを使用するための詳細と要件を確認してください。詳細については、「バリデータについて」を参照してください。

AWS AppConfig フリーフォーム設定プロファイルの作成 (コンソール)

AWS Systems Manager コンソールを使用して AWS AppConfig フリーフォーム設定プロファイルと (オプションで) フリーフォーム設定を作成するには、次の手順に従います。

設定プロファイルを作成するには
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/appconfig/) を開きます。

  2. [Applications] (アプリケーション) タブで、AWS AppConfig 設定を作成するで作成したアプリケーションを選択し、[Configuration profiles and feature flags] (設定プロファイルと機能フラグ) タブを選択します。

  3. [Create freeform configuration profile] (フリーフォーム設定プロファイルの作成) を選択します。

  4. [Name (名前)] に、設定プロファイルの名前を入力します。

  5. [Description (説明)] に、設定プロファイルに関する情報を入力します。

  6. [Select configuration source (設定のソースの選択)] ページで、オプションを選択します。

    • [AWS AppConfig hosted configuration] (AWS AppConfig でホストされた設定) を選択した場合は、[YAML][JSON]、または [Text] (テキスト) のいずれかを選択し、フィールドに設定を入力します。[次へ] を選択し、この手順のステップ 10 に進みます。

    • [Amazon S3 object] (Amazon S3 オブジェクト) を選択した場合は、オブジェクトの URI を入力します。[Next] (次へ) を選択します。

    • [AWS Systems Manager parameter] (AWS Systems Manager パラメータ) を選択した場合は、リストからパラメータの名前を選択します。[Next] (次へ) を選択します。

    • [AWS CodePipeline] を選択した場合、[Next] (次へ) を選択して、この手順のステップ 10 に進みます。

    • [AWS Systems Manager document] (AWS Systems Manager ドキュメント) を選択した場合は、次の手順を実行します。

    1. [Document source (ドキュメントのソース)] セクションで、[Saved document (保存されたドキュメント)] または [New document (新しいドキュメント)] を選択します。

    2. [Saved document] (保存されたドキュメント) を選択した場合は、リストから SSM ドキュメントを選択します。[New document (新しいドキュメント)] を選択すると、[Details (詳細)] セクションと [Content (コンテンツ)] セクションが表示されます。

    3. [Details (詳細)] セクションで、新しいアプリケーション設定の名前を入力します。

    4. [Application configuration schema (アプリケーション設定スキーマ)] セクションで、リストを使用して JSON スキーマを選択するか、[Create schema (スキーマの作成)] を選択します。[Create schema] (スキーマの作成) を選択すると、Systems Manager は [Create schema] (スキーマの作成) ページを開きます。[Content (コンテンツ)] セクションにスキーマの詳細を入力し、[Create schema (スキーマの作成)] を選択します。

      
                      AWS AppConfig 設定の詳細を入力する
    5. [Application configuration schema version (アプリケーション設定スキーマのバージョン)] では、リストからバージョンを選択するか、[Update schema (スキーマを更新)] を選択してスキーマを編集し、新しいバージョンを作成します。

    6. [Content (コンテンツ)] セクションで、[YAML] または [JSON] を選択し、フィールドに設定データを入力します。

    7. [Next] (次へ) を選択します。

  7. [Service role] (サービスロール) セクションで、[New service role] (新しいサービスロール) を選択して AWS AppConfig によって、設定データへのアクセスを提供する IAM ロールを作成します。AWS AppConfig は前に入力した名前を基に自動的に [Role name] (ロール名) フィールドに入力します。または、IAM に既に存在するロールを選択するには、[Existing service role] (既存のサービスロール) を選択します。[Role ARN (ロール ARN)] リストを使用してロールを選択します。

  8. [Add validators (バリデータの追加)] ページで、[JSON Schema (JSON スキーマ)] または [AWS Lambda] を選択します。[JSON Schema (JSON スキーマ)] を選択した場合、フィールドに JSON スキーマを入力します。[AWS Lambda] を選択した場合は、リストから関数 Amazon リソースネーム (ARN) とバージョンを選択します。

    重要

    SSM ドキュメントに保存された設定データは、設定をシステムに追加する前に、関連付けられた JSON スキーマに対して検証する必要があります。SSM パラメータには検証方式は必要ありませんが、AWS Lambda を使用して、新規または更新された SSM パラメータ設定の検証チェックを作成することを推奨します。

  9. [Tags (タグ)] セクションで、キーとオプションの値を入力します。1 つのリソースに対して最大 50 個のタグを指定できます。

  10. [Create configuration profile (設定プロファイルの作成)] を選択します。

重要

の設定プロファイルを作成した場合AWS CodePipeline、次にデプロイ戦略を作成してから、次のセクションで説明するとおり、デプロイプロバイダー CodePipeline AWS AppConfigとして指定するパイプラインを作成する必要があります。AWS AppConfigデプロイプロバイダーとして指定するパイプラインの作成については、「チュートリアル」を参照してください。AWS AppConfigAWS CodePipelineユーザーガイドでデプロイプロバイダーとして使用するパイプラインを作成します

ステップ 4: デプロイ戦略の作成 に進みます。

AWS AppConfigフリーフォーム設定プロファイルの作成 (コマンドライン)

以下の手順では、AWS CLI (Linux または Windows の場合) またはAWS Tools for PowerShellを使用してAWS AppConfigフリーフォーム設定プロファイルを作成する方法について説明します。必要に応じて、AWS CloudShellを使用して以下のコマンドを実行できます。詳細については、AWS CloudShell ユーザーガイドの「AWS CloudShell とは何か」を参照してください。

設定プロファイルをステップバイステップで作成するには
  1. AWS CLI をインストールして設定します。詳細については、「AWS コマンドラインツールをインストールまたはアップグレードする」を参照してください。

  2. 次のコマンドを実行して、フリーフォーム設定プロファイルを作成します。

    Linux
    aws appconfig create-configuration-profile \ --application-id The_application_ID \ --name A_name_for_the_configuration_profile \ --description A_description_of_the_configuration_profile \ --location-uri A_URI_to_locate_the_configuration or hosted \ --retrieval-role-arn The_ARN_of_the_IAM_role_with_permission_to_access_the_configuration_at_the_specified_LocationUri \ --tags User_defined_key_value_pair_metadata_of_the_configuration_profile \ --validators "Content=JSON_Schema_content_or_the_ARN_of_an_AWS Lambda_function,Type=JSON_SCHEMA or LAMBDA"
    Windows
    aws appconfig create-configuration-profile ^ --application-id The_application_ID ^ --name A_name_for_the_configuration_profile ^ --description A_description_of_the_configuration_profile ^ --location-uri A_URI_to_locate_the_configuration or hosted ^ --retrieval-role-arn The_ARN_of_the_IAM_role_with_permission_to_access_the_configuration_at_the_specified_LocationUri ^ --tags User_defined_key_value_pair_metadata_of_the_configuration_profile ^ --validators "Content=JSON_Schema_content_or_the_ARN_of_an_AWS Lambda_function,Type=JSON_SCHEMA or LAMBDA"
    PowerShell
    New-APPCConfigurationProfile ` -Name A_name_for_the_configuration_profile ` -ApplicationId The_application_ID ` -Description Description_of_the_configuration_profile ` -LocationUri A_URI_to_locate_the_configuration or hosted ` -RetrievalRoleArn The_ARN_of_the_IAM_role_with_permission_to_access_the_configuration_at_the_specified_LocationUri ` -Tag Hashtable_type_user_defined_key_value_pair_metadata_of_the_configuration_profile ` -Validators "Content=JSON_Schema_content_or_the_ARN_of_an_AWS Lambda_function,Type=JSON_SCHEMA or LAMBDA"
注記

AWS AppConfigホストされている構成ストアで構成を作成した場合は、CreateHostedConfigurationVersionAPI アクションを使用して構成の新しいバージョンを作成できます。この APIAWS CLI アクションの詳細とサンプルコマンドを確認するには、create-hosted-configuration-versionAWS CLIコマンドリファレンスのを参照してください