

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

# Amazon EC2 およびオンプレミスマシンでの AWS AppConfig エージェントの使用
<a name="appconfig-integration-ec2"></a>

 AWS AppConfig エージェントを使用して、Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスで実行されているアプリケーション AWS AppConfig と統合できます。エージェントは、次の方法でアプリケーションの処理と管理を強化します。
+ エージェントは AWS AppConfig 、 AWS Identity and Access Management (IAM) ロールを使用して設定データのローカルキャッシュを管理することで、ユーザーに代わって を呼び出します。ローカルキャッシュから設定データを引き出すことで、アプリケーションが設定データを管理するために必要となるコードの更新が少なくなり、設定データをミリ秒単位で取得でき、そのようなデータの呼び出しを妨げるネットワークの問題による影響を受けなくなります。\*
+ エージェントは、 AWS AppConfig 機能フラグを取得して解決するためのネイティブエクスペリエンスを提供します。
+ エージェントはすぐにキャッシュ戦略、ポーリング間隔、ローカル設定データの可用性に関するベストプラクティスを提供すると同時に、以降のサービスコールに必要な設定トークンを追跡します。
+ バックグラウンドで実行中、エージェントは設定 AWS AppConfig データの更新のためにデータプレーンを定期的にポーリングします。アプリケーションは、ポート 2772 (カスタマイズ可能なデフォルトポート値) で localhost に接続し、HTTP GET を呼び出してデータを取得できます。

\*AWS AppConfig エージェントは、サービスが設定データを初めて取得したときにデータをキャッシュします。このため、データを取得する最初の呼び出しは、それ以降の呼び出しよりも時間がかかります。

**Topics**
+ [ステップ 1: (必須) リソースの作成と権限の設定](#appconfig-integration-ec2-resources-and-permissions)
+ [ステップ 2: (必須) Amazon EC2 インスタンスでの AWS AppConfig エージェントのインストールと起動](#appconfig-integration-ec2-installing)
+ [ステップ 3：CloudWatch ログへのログファイルの送信(オプション、推奨)](#appconfig-integration-ec2-logs)
+ [ステップ 4: (オプション) 環境変数を使用して Amazon EC2 の AWS AppConfig エージェントを設定する](#appconfig-integration-ec2-configuring)
+ [ステップ 5: (必須) 設定データの取得](#appconfig-integration-ec2-retrieving-data)
+ [ステップ 6 (オプション、ただし推奨): AWS AppConfig エージェントの更新を自動化する](#appconfig-integration-ec2-updating-agent)

## ステップ 1: (必須) リソースの作成と権限の設定
<a name="appconfig-integration-ec2-resources-and-permissions"></a>

Amazon EC2 インスタンスで実行されているアプリケーション AWS AppConfig と統合するには、機能フラグやフリーフォーム設定データを含む AWS AppConfig アーティファクトと設定データを作成する必要があります。詳細については、「[で機能フラグとフリーフォーム設定データを作成する AWS AppConfig](creating-feature-flags-and-configuration-data.md)」を参照してください。

によってホストされる設定データを取得するには AWS AppConfig、アプリケーションが AWS AppConfig データプレーンにアクセスできるように設定されている必要があります。アプリケーションにアクセス権を付与するには、Amazon EC2 インスタンスロールに割り当てられている IAM アクセス権限ポリシーを更新してください。具体的には、 `appconfig:StartConfigurationSession` と `appconfig:GetLatestConfiguration` ポリシーにとアクションを追加する必要があります。以下がその例です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "appconfig:StartConfigurationSession",
                "appconfig:GetLatestConfiguration"
            ],
            "Resource": "*"
        }
    ]
}
```

------

ポリシーに権限を追加する方法の詳細については、「*IAM ユーザーガイド*」の「[IAM ID 権限の追加と削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。‬‬

## ステップ 2: (必須) Amazon EC2 インスタンスでの AWS AppConfig エージェントのインストールと起動
<a name="appconfig-integration-ec2-installing"></a>

AWS AppConfig エージェントは、 が管理する Amazon Simple Storage Service (Amazon S3) バケットでホストされます AWS。Linuxインスタンスで最新バージョンの エージェントをダウンロードしてインストールするには、次の手順を使用します。アプリケーションが複数のインスタンスに分散されている場合は、アプリケーションをホストする各インスタンスでこの手順を実行する必要があります。

**注記**  
以下の情報に注意してください。  
AWS AppConfig エージェントは、カーネルバージョン 4.15 以降を実行している Linux オペレーティングシステムで使用できます。Ubuntu などの Debian ベースのシステムはサポートされていません。
このエージェントは x86\_64 および ARM64 アーキテクチャをサポートしています。
分散アプリケーションでは、インストールコマンドと起動コマンドを Auto Scaling グループの Amazon EC2 ユーザーデータに追加することをお勧めします。追加すると、各インスタンスがコマンドを自動的に実行します。詳細については、「*Amazon EC2 ユーザーガイド*」の「[起動時に Linux インスタンスでコマンドを実行する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)」を参照してください。さらに、「*Amazon EC2 Auto Scaling ユーザーガイド*」の「[チュートリアル:インスタンスメタデータを通してターゲットライフサイクルステートを取得するためのユーザーデータの設定](https://docs.aws.amazon.com/autoscaling/ec2/userguide/tutorial-lifecycle-hook-instance-metadata.html)」を参照してください。‬‬‬‬
このトピックの手順では、インスタンスにログインしてコマンドを実行することでエージェントをインストールするなどのアクションを実行する方法について説明します。ローカルクライアントマシンからコマンドを実行し、実行コマンドを使用して 1 つ以上のインスタンスをターゲットにすることができます。これは AWS Systems Managerのツールです。詳細については、*AWS Systems Manager ユーザーガイド*の「[AWS Systems Manager 実行コマンド](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html)」を参照してください。
AWS AppConfig Amazon EC2 Linux インスタンスのエージェントは`systemd`サービスです。

**インスタンスに AWS AppConfig エージェントをインストールして起動するには**

1. Linux インスタンスにログインします。

1. ターミナルを開き、管理者権限で以下のコマンドを実行します。

   **x86\_64**

   ```
   sudo yum install https://s3.amazonaws.com/aws-appconfig-downloads/aws-appconfig-agent/linux/x86_64/latest/aws-appconfig-agent.rpm
   ```

   **ARM64**

   ```
   sudo yum install https://s3.amazonaws.com/aws-appconfig-downloads/aws-appconfig-agent/linux/arm64/latest/aws-appconfig-agent.rpm
   ```

   特定のバージョンの AWS AppConfig エージェントをインストールする場合は、URL `latest`の を特定のバージョン番号に置き換えます。次に x86\_64 の例を示します。

   ```
   sudo yum install https://s3.amazonaws.com/aws-appconfig-downloads/aws-appconfig-agent/linux/x86_64/2.0.2/aws-appconfig-agent.rpm
   ```

1. エージェントを開始するには、次のコマンドを実行します。

   ```
   sudo systemctl start aws-appconfig-agent
   ```

1. エージェントが実行されていることを確認するには、次のコマンドを実行します。

   ```
   sudo systemctl status aws-appconfig-agent
   ```

   成功した場合、このコマンドは次のような情報を返します。

   ```
   aws-appconfig-agent.service - aws-appconfig-agent
     ...
     Active: active (running) since Mon 2023-07-26 00:00:00 UTC; 0s ago
     ...
   ```

**注記**  
エージェントを停止するには、次のコマンドを実行します。  

```
sudo systemctl stop aws-appconfig-agent
```

## ステップ 3：CloudWatch ログへのログファイルの送信(オプション、推奨)
<a name="appconfig-integration-ec2-logs"></a>

デフォルトでは、 AWS AppConfig エージェントは STDERR にログを発行します。Systemd は Linux インスタンスで実行されているすべてのサービスの STDOUT と STDERR を systemd ジャーナルにリダイレクトします。 AWS AppConfig エージェントを 1 つまたは 2 つのインスタンスでのみ実行している場合は、systemd ジャーナルのログデータを表示および管理できます。より優れたソリューションとして、分散アプリケーションのソリューションを強く推奨します。それは、ログファイルをディスクに書き込み、Amazon CloudWatch エージェントを使って AWS クラウドにログデータをアップロードすることです。さらに、インスタンスから古いログファイルを削除するように CloudWatch エージェントを設定でき、インスタンスのディスク容量が不足するのを防ぐことができます。

ディスクへのロギングを有効にするには、 `LOG_PATH` で説明されているように「[ステップ 4: (オプション) 環境変数を使用して Amazon EC2 の AWS AppConfig エージェントを設定する](#appconfig-integration-ec2-configuring)」環境変数を設定する必要があります。

CloudWatch エージェントを使い始めるには、「‬*Amazon CloudWatch ユーザーガイド*」‬の「[‬CloudWatch エージェントを使用した Amazon EC2 インスタンスとオンプレミスサーバーからのメトリクスとログの収集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)‬」を参照してください。‬‬‬‬ Systems Manager のツールである Quick Setup を使用すると、CloudWatch エージェントをすばやくインストールできます。詳細については、「*AWS Systems Manager ユーザーガイド*」の「[Quick Setup Host Management](https://docs.aws.amazon.com/systems-manager/latest/userguide/quick-setup-host-management.html)」を参照してください。

**警告**  
CloudWatch エージェントを使用せずにログファイルをディスクに書き込む場合は、古いログファイルを削除する必要があります。 AWS AppConfig Agent は 1 時間ごとにログファイルを自動的にローテーションします。古いログファイルを削除しないと、インスタンスのディスク容量が不足する可能性があります。

インスタンスに CloudWatch エージェントをインストールした後、CloudWatch エージェント設定ファイルを作成します。設定ファイルは、エージェントのログファイルの操作方法を CloudWatch AWS AppConfig エージェントに指示します。CloudWatch エージェント設定ファイルの作成に関する詳細については、「[‬CloudWatch エージェント設定ファイルを作成](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file.html)‬」を参照してください。‬‬

インスタンスの CloudWatch `logs` エージェント設定ファイルに次のセクションを追加し、変更を保存します。

```
"logs": {
  "logs_collected": {
    "files": {
      "collect_list": [
        {
          "file_path": "/{{path_you_specified_for_logging}}",
          "log_group_name": "${{{YOUR_LOG_GROUP_NAME}}}/aws-appconfig-agent.log",
          "auto_removal": true
        },
        ...
      ]
    },
    ...
  },
  ...
}
```

の値が `auto_removal`の場合`true`、CloudWatch エージェントはローテーションされた AWS AppConfig エージェントのログファイルを自動的に削除します。

## ステップ 4: (オプション) 環境変数を使用して Amazon EC2 の AWS AppConfig エージェントを設定する
<a name="appconfig-integration-ec2-configuring"></a>

Agent AWS AppConfig for Amazon EC2 は、環境変数を使用して設定できます。`systemd` サービスの環境変数を設定するには、ドロップインユニットファイルを作成します。次の例は、ドロップインユニットファイルを作成して AWS AppConfig エージェントのログ記録レベルを に設定する方法を示しています`DEBUG`。

**環境変数用のドロップインセルファイルの作成例**

1. Linux インスタンスにログインします。

1. ターミナルを開き、管理者権限で以下のコマンドを実行します。このコマンドで設定ディレクトリを作成します。

   ```
   sudo mkdir /etc/systemd/system/aws-appconfig-agent.service.d
   ```

1. 次のコマンドを実行して、 ドロップインユニットファイルを作成します。{{file\_name}} をファイルの名前に置き換えます。拡張子は `.conf` でなければなりません。

   ```
   sudo touch /etc/systemd/system/aws-appconfig-agent.service.d/{{file_name}}.conf
   ```

1. ドロップインユニットファイルに情報を入力します。次の例では、 `Service` 環境変数を定義するセクションを追加します。この例では、 AWS AppConfig エージェント ログレベルを `DEBUG` に設定しています。

   ```
   [Service]
   Environment=LOG_LEVEL=DEBUG
   ```

1. システム設定を再読み込むには、次のコマンドを実行します。

   ```
   sudo systemctl daemon-reload
   ```

1.  AWS AppConfig エージェントを再起動するには、次のコマンドを実行します。

   ```
   sudo systemctl restart aws-appconfig-agent
   ```

 AWS AppConfig Agent for Amazon EC2 を設定するには、ドロップインユニットファイルで次の環境変数を指定します。

**注記**  
次のテーブルに、**[サンプル値]** の列を示します。モニターの解像度によっては、テーブルの下部までスクロールし、右にスクロールして列を表示する必要がある場合があります。


****  

| 環境変数 | 詳細 | デフォルトの値 | サンプル値 | 
| --- | --- | --- | --- | 
| `ACCESS_TOKEN` | この環境変数は、エージェント HTTP サーバーに設定データをリクエストするときに指定する必要があるトークンを定義します。トークンの値は、認可タイプ`Bearer`のHTTP リクエスト認可ヘッダーに設定する必要があります。以下はその例です。<pre>GET /applications/my_app/...<br />                  Host: localhost:2772<br />                  Authorization: Bearer <token value></pre> | なし | MyAccessToken | 
| `BACKUP_DIRECTORY` | この環境変数により、 AWS AppConfig エージェントは取得した各設定のバックアップを指定されたディレクトリに保存できます。 ディスクにバックアップされた設定は暗号化されません。設定に機密データが含まれている場合は、ファイルシステムのアクセス許可で最小特権の原則を実践 AWS AppConfig することをお勧めします。詳細については、「[のセキュリティ AWS AppConfig](appconfig-security.md)」を参照してください。  | なし | /path/to/backups | 
| `HTTP_PORT` | この環境変数は、エージェントの HTTP サーバーが実行されるポートを指定します。 | 2772 | 2772 | 
| `HTTP_HOST` | HTTP\_HOST 変数は、 AWS AppConfig エージェントがネットワークインターフェイスにどのようにバインドするかを制御します。バインディングの動作は、ランタイム環境によって異なり、最適なセキュリティとアクセシビリティを確保します。 |  ECS、EKS [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/appconfig/latest/userguide/appconfig-integration-ec2.html)<br />EC2 とオンプレミス[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/appconfig/latest/userguide/appconfig-integration-ec2.html) | カスタム設定オプション。これらの値を使用して、デフォルトの動作を上書きできます。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/appconfig/latest/userguide/appconfig-integration-ec2.html) | 
| `LOG_LEVEL` | この環境変数は、エージェントがログに記録する詳細レベルを指定します。各レベルには、現在レベルとそれより上位のすべてのレベルが含まれます。値は大文字小文字を区別しません。ログレベルは、詳細度が高い順に次のとおりです。`trace`、`debug`、`info`、`warn`、`error`、`fatal`、`none`。`trace` ログには、タイミング情報など、エージェントに関する詳細情報が含まれます。 | 情報 | trace<br />デバッグ<br />情報<br />warn<br />エラー<br />fatal<br />なし | 
| `LOG_PATH` | ログが書き込まれるディスクがある場所。指定しない場合、ログは stderr に書き込まれます。 | なし | /path/to/logs/agent.log | 
| `MANIFEST` | この環境変数は、マルチアカウントの取得やディスクへの設定の保存など、設定ごとに追加の機能を利用するように AWS AppConfig エージェントを設定します。これらの機能の詳細については、「[マニフェストを使用して追加の取得機能を有効にする](appconfig-agent-how-to-use-additional-features.md)」を参照してください。 | なし | マニフェストとして AWS AppConfig 設定を使用する場合: `MyApp:MyEnv:MyManifestConfig`。<br />ディスクからマニフェストをロードする場合: `file:/path/to/manifest.json` | 
| `MAX_CONNECTIONS` | この環境変数は、エージェントが AWS AppConfigから設定を取得するために使用する最大接続数を設定します。 | 3 | 3 | 
| `POLL_INTERVAL` | この環境変数は、エージェントが AWS AppConfig 更新された設定データをポーリングする頻度を制御します。間隔の秒数を指定できます。時間単位で数値を指定することもできます。s は秒、m は分、h は時間です。単位が指定されなかった場合、エージェントはデフォルトで秒になります。たとえば、60 、60 秒、1m の場合、ポーリング間隔は同じになります。 | 45 秒 | 45<br />45 秒<br />5m<br />1 時間 | 
| `PREFETCH_LIST` | この環境変数は、エージェントが起動 AWS AppConfig するとすぐにリクエストする設定データを指定します。複数の設定識別子は、カンマ区切りリストで指定できます。 | なし | MyApp:MyEnv:MyConfig<br />abcd123:efgh456:ijkl789<br />MyApp:MyEnv:Config1、MyApp:MyEnv:Config2 | 
| `PRELOAD_BACKUPS` | に設定すると`true`、 AWS AppConfig Agent は で見つかった設定バックアップをメモリ`BACKUP_DIRECTORY`にロードし、サービスから新しいバージョンが存在するかどうかをすぐに確認します。`false` に設定すると、 AWS AppConfig エージェントは、ネットワークに問題があるなど、サービスから設定データを取得できない場合にのみ、設定バックアップからコンテンツをロードします。 | true | true<br />false | 
| PROXY\_HEADERS | この環境変数は、PROXY\_URL 環境変数で参照されるプロキシに必要なヘッダーを指定します。値は、コンマで区切られたヘッダーの一覧です。 | なし | ヘッダー: 値<br />h1: v1、h2: v2 | 
| PROXY\_URL | この環境変数は、エージェントから への接続に使用するプロキシ URL を指定します AWS AppConfig。 AWS のサービスHTTPSおよび HTTP URLsがサポートされています。 | なし | http://localhost:7474<br />https://my-proxy.example.com | 
| `REQUEST_TIMEOUT` | この環境変数は、エージェントがレスポンスを待機する時間を制御します AWS AppConfig。サービスが応答しない場合、リクエストは失敗となります。<br />リクエストが初期データ取得に関するものである場合、エージェントはアプリケーションにエラーを返します。<br />更新データのバックグラウンドチェック中にタイムアウトが発生した場合、エージェントはエラーを記録し、しばらくしてから再試行します。<br />タイムアウトのミリ秒数を指定できます。時間単位で数値を指定することもできます。msはミリ秒、sは秒を表します。単位が指定されなかった場合、エージェントはデフォルトでミリ秒になります。たとえば、5000 、5000 ミリ秒、5 秒の場合、リクエストのタイムアウト値は同じになります。 | 3000 ミリ秒 | 3000<br />3000 ミリ秒<br />5 秒 | 
| ROLE\_ARN | この環境変数は、IAM ロールの Amazon リソースネーム (ARN) を指定します。 AWS AppConfig エージェントはこのロールを引き受けて設定データを取得します。 | なし | arn:aws:iam::123456789012:role/MyRole | 
| ROLE\_EXTERNAL\_ID | この環境変数は、引き受けたロール ARN で使用する外部 ID を指定します。 | なし | MyExternalId | 
| ROLE\_SESSION\_NAME | この環境変数は、引き受ける IAM ロールの認証情報に関連付けるセッション名を指定します。 | なし | AWSAppConfigAgentSession | 
| SERVICE\_REGION | この環境変数は、 AWS リージョン エージェントが AWS AppConfig サービスを呼び出すために使用する代替 AWS AppConfig 手段を指定します。未定義のままにすると、エージェントは現在のリージョンを特定しようとします。確認できない場合、エージェントは起動に失敗します。 | なし | us-east-1<br />eu-west-1 | 
| `WAIT_ON_MANIFEST` | この環境変数は、起動が完了する前にマニフェストが処理されるまで待機するように AWS AppConfig エージェントを設定します。 | true | true<br />false | 

## ステップ 5: (必須) 設定データの取得
<a name="appconfig-integration-ec2-retrieving-data"></a>

エージェントから設定データを取得するには、HTTP localhost 呼び出し AWS AppConfig を使用します。以下の例は HTTP クライアントで `curl` を使用しています。アプリケーション言語または AWS SDK を含む使用可能なライブラリでサポートされている任意の HTTP クライアントを使用してエージェントを呼び出すことができます。

**デプロイされた設定内容をすべて取得するには**

```
$ curl "http://localhost:2772/applications/{{application_name}}/environments/{{environment_name}}/configurations/{{configuration_name}}"
```

** AWS AppConfig タイプの `Feature Flag` 設定から個々のフラグとその属性を取得します。**

```
$ curl "http://localhost:2772/applications/{{application_name}}/environments/{{environment_name}}/configurations/{{configuration_name}}?flag={{flag_name}}"
```

** AWS AppConfig タイプの `Feature Flag` 設定から複数のフラグとその属性にアクセスします。**

```
$ curl "http://localhost:2772/applications/{{application_name}}/environments/{{environment_name}}/configurations/{{configuration_name}}?flag={{flag_name_one}}&flag={{flag_name_two}}"
```

## ステップ 6 (オプション、ただし推奨): AWS AppConfig エージェントの更新を自動化する
<a name="appconfig-integration-ec2-updating-agent"></a>

AWS AppConfig エージェントは定期的に更新されます。インスタンスで最新バージョンの AWS AppConfig エージェント を実行していることを確認するために、Amazon EC2 ユーザーデータに次のコマンドを追加することをお勧めします。コマンドは、インスタンスまたは EC2 Auto Scaling グループのユーザーデータに追加できます。このスクリプトは、インスタンスが起動または再起動するたびに、最新バージョンのエージェントをインストールして起動します。

```
#!/bin/bash
# install the latest version of the agent
yum install -y https://s3.amazonaws.com/aws-appconfig-downloads/aws-appconfig-agent/linux/x86_64/latest/aws-appconfig-agent.rpm
# optional: configure the agent
mkdir /etc/systemd/system/aws-appconfig-agent.service.d
echo "${{{MY_AGENT_CONFIG}}}" > /etc/systemd/system/aws-appconfig-agent.service.d/overrides.conf 
systemctl daemon-reload
# start the agent
systemctl start aws-appconfig-agent
```