

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

# AWS AppConfig エージェントローカル開発モードの使用
<a name="appconfig-agent-how-to-use-local-development"></a>

AWS AppConfig エージェントは*ローカル開発モード*をサポートしています。ローカル開発モードを有効にすると、エージェントはディスク上の指定されたディレクトリから設定データを読み取ります。から設定データを取得しません AWS AppConfig。指定されたディレクトリ内のファイルを更新することで、設定のデプロイをシミュレートできます。次のユースケースでは、ローカル開発モードをお勧めします。
+  AWS AppConfigを使用して、デプロイする前にさまざまな設定バージョンをテストする。
+ コードリポジトリに変更をコミットする前に、新機能のさまざまな設定オプションをテストする。
+ さまざまな設定シナリオをテストして、期待どおりに動作することを確認する。

**警告**  
本番稼働環境では、ローカル開発モードを使用しないでください。このモードは、デプロイの検証や自動ロールバックなどの重要な AWS AppConfig 安全機能をサポートしていません。

エージェントをローカル開発モードに設定する AWS AppConfig には、次の手順に従います。

**AWS AppConfig エージェントをローカル開発モードに設定するには**

1. コンピューティング環境で説明されている方法を使用して エージェントをインストールします。 AWS AppConfig エージェントは以下を使用します AWS のサービス。
   + [AWS Lambda](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-integration-lambda-extensions.html)
   + [Amazon EC2](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-integration-ec2.html)
   + [Amazon ECS と Amazon EKS](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-integration-containers-agent.html)

1. エージェントが実行中の場合は停止します。

1. 環境変数のリストに `LOCAL_DEVELOPMENT_DIRECTORY` を追加します。エージェントに読み取りアクセス許可を提供するファイルシステム上のディレクトリを指定します。例えば、`/tmp/local_configs`。

1. ディレクトリ内にファイルを作成します。ファイル名は以下のフォーマットを使用する必要があります。

   ```
   application_name:environment_name:configuration_profile_name
   ```

   以下がその例です。

   ```
   Mobile:Development:EnableMobilePaymentsFeatureFlagConfiguration
   ```
**注記**  
`LOCAL_DEVELOPMENT_DIRECTORY` ディレクトリ内のファイルに追加できる機能フラグのサンプルを表示するには、「[AWS AppConfig エージェントローカル開発モードの機能フラグのサンプル](appconfig-agent-how-to-use-local-development-samples.md)」を参照してください。
(オプション) ファイルで指定した拡張子に基づいて、エージェントが設定データに対して返すコンテンツタイプを制御できます。例えば、ファイルに .json 拡張子を付けると、アプリケーションがリクエストしたときにエージェントは `application/json` コンテンツタイプを返します。拡張子を省略すると、エージェントはコンテンツタイプに `application/octet-stream` を使用します。正確な制御が必要な場合は、`.type%subtype` 形式で拡張子を指定できます。エージェントは `.type/subtype` のコンテンツタイプを返します。

1. 次のコマンドを実行してエージェントを再起動し、設定データをリクエストします。

   ```
   curl http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name
   ```

エージェントは、エージェントに指定されたポーリング間隔でローカルファイルへの変更をチェックします。ポーリング間隔が指定されていない場合、エージェントはデフォルトの間隔である 45 秒を使用します。ポーリング間隔のこのチェックにより、エージェントはローカル開発環境で、 AWS AppConfig サービスとやり取りするように設定されている場合と同じ動作をします。

**注記**  
ローカル開発設定ファイルの新しいバージョンをデプロイするには、新しいデータでファイルを更新します。

# AWS AppConfig エージェントローカル開発モードの機能フラグのサンプル
<a name="appconfig-agent-how-to-use-local-development-samples"></a>

このセクションには、ローカル開発モードで AWS AppConfig エージェントで使用できる機能フラグのサンプルが含まれています。ローカル開発モードでは、データの取得時刻形式の機能フラグデータが想定されます。*取得時刻形式*は、フラグが [GetLatestConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_GetLatestConfiguration.html) API から取得されたときに返される形式であり、フラグの値のみが含まれます。取得時刻形式には、フラグの完全な定義は含まれません ([CreateHostedConfigurationVersion](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_CreateHostedConfigurationVersion.html) API に渡されます)。フラグの完全な定義には、属性名と値、制約、フラグの有効状態などの情報も含まれています。

**Topics**
+ [基本的な機能フラグのサンプル](#appconfig-agent-how-to-use-local-development-samples-basic)
+ [マルチバリアント機能フラグのサンプル](#appconfig-agent-how-to-use-local-development-samples-multi-variant)

## 基本的な機能フラグのサンプル
<a name="appconfig-agent-how-to-use-local-development-samples-basic"></a>

ローカル開発モードで AWS AppConfig エージェントで次の基本機能フラグサンプルを使用します。

**注記**  
エージェントがローカル機能フラグデータのコンテンツタイプを `application/json` (ローカル開発モードではない環境で からフラグデータを取得する場合と同様に) としてレポートする場合は、ローカル機能フラグファイル AWS AppConfig で .json 拡張機能を使用する必要があります。例えば、`Local:MyFeatureFlags:SampleB1.json`。

**サンプル 1**: UI 更新を表す単一のフラグ。

```
{
    "ui_refresh": {
        "enabled": true,
        "new_styleguide_colors": true
    }
}
```

**サンプル 2**: 運用機能フラグを表す複数のフラグ。

```
{
   "background_worker": {
        "enabled": true,
        "num_threads": 4,
        "queue_name": "MyWorkQueue"
   },
   "emergency_shutoff_switch": {
        "enabled": false
   },
   "logger_settings": {
        "enabled": true,
        "level": "INFO"
   }
}
```

## マルチバリアント機能フラグのサンプル
<a name="appconfig-agent-how-to-use-local-development-samples-multi-variant"></a>

マルチバリアント機能フラグを少なくとも 1 つ含む機能フラグ設定の取得時刻形式は、JSON データではなく [Amazon Ion](https://amazon-ion.github.io/ion-docs/) データとして表されます。この形式では、マルチバリアントフラグは注釈付きリストとして表され、基本フラグは注釈付き文字列として表されます。マルチバリアントフラグのリスト要素は、単一のバリアントを表すタプル (長さが 2 のリスト) またはデフォルトのバリアントを表す文字列です。バリアントタプル内では、最初の要素はバリアントのルールを表す s 式で、2 番目の要素はバリアントのコンテンツを表す文字列です。

エージェントがこれらのファイルを適切に解釈するには、ローカルの機能フラグファイルは次の拡張子を使用する必要があります: `application%ion%type=AWS.AppConfig.FeatureFlags`。例えば、`Local:MyFeatureFlags:SampleMV1.application%ion%type=AWS.AppConfig.FeatureFlags`。

**サンプル 1**: 新機能の階層型リリースを表すマルチバリアントフラグ。

```
'tiered_release'::[
  [
    (or (and (eq $group "Tier1") (split by::$userId pct::1 seed::"2025.01.01")) (and (eq $group "Tier2") (split by::$userId pct::7 seed::"2025.01.01"))),
    '''{"_variant": "ShowFeature", "enabled": true}'''
  ],
  '''{"_variant": "HideFeature", "enabled": false}'''
]
```

**サンプル 2**: ユーザーの ID に基づいて異なる UX 表示を表す複数のフラグ。最初の 2 つのフラグはマルチバリアントで、最後のフラグは基本フラグです。

```
'colorway'::[
  [
    (contains $userId "beta"),
    '''{"_variant": "BetaTesters", "enabled": true, "background": "blue", "foreground": "red"}''',
  ],
  [
    (split by::$userId pct::10),
    '''{"_variant": "SplitRollOutRedAndBlue", "enabled": true, "background": "blue", "foreground": "red"}''',
  ],
  '''{"_variant": "default", "enabled": true, "background": "green", "foreground": "green"}''',
]

'simple_feature'::[
  [
    (contains $userId "beta"),
    '''{"_variant": "BetaTesters", "enabled": true}'''
  ],
  '''{"_variant": "default", "enabled": false}'''
]

'button_color'::'''{"enabled": true, "color": "orange"}'''
```