Amazon EC2およびオンプレミスマシンでの AWS AppConfig エージェントの使用 - AWS AppConfig

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

Amazon EC2およびオンプレミスマシンでの AWS AppConfig エージェントの使用

AWS AppConfig エージェントを使用して、Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスで実行されているアプリケーション AWS AppConfig と統合できます。エージェントは、次の方法でアプリケーションの処理と管理を強化します。

  • エージェントは、 AWS Identity and Access Management (IAM) ロールを使用して設定データのローカルキャッシュを管理することで、 AWS AppConfig ユーザーに代わって を呼び出します。ローカルキャッシュから設定データを引き出すことで、アプリケーションが設定データを管理するために必要となるコードの更新が少なくなり、設定データをミリ秒単位で取得でき、そのようなデータの呼び出しを妨げるネットワークの問題による影響を受けなくなります。*

  • エージェントは、 AWS AppConfig 機能フラグを取得して解決するためのネイティブエクスペリエンスを提供します。

  • エージェントはすぐにキャッシュ戦略、ポーリング間隔、ローカル設定データの可用性に関するベストプラクティスを提供すると同時に、以降のサービスコールに必要な設定トークンを追跡します。

  • バックグラウンドで実行されている間、エージェントは定期的に AWS AppConfig データプレーンをポーリングして設定データを更新します。アプリケーションは、ポート 2772 (カスタマイズ可能なデフォルト値) で localhost に接続し、 HTTPGETを呼び出してデータを取得することでデータを取得できます。

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

ステップ 1: (必須) リソースの作成と権限の設定

Amazon EC2インスタンスで実行されているアプリケーション AWS AppConfig と統合するには、機能フラグやフリーフォーム設定データなどの AWS AppConfig アーティファクトと設定データを作成する必要があります。詳細については、「で機能フラグとフリーフォーム設定データを作成する AWS AppConfig」を参照してください。

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

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

ポリシーへのアクセス許可の追加の詳細については、「 ユーザーガイド」のIAM「ID アクセス許可の追加と削除IAM」を参照してください。

ステップ 2: (必須) Amazon EC2インスタンスに AWS AppConfig エージェントをインストールして起動する

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 ユーザーガイド」の「起動時に Linux インスタンスでコマンドを実行する」を参照してください。 EC2 さらに、「Amazon EC2 Auto Scaling ユーザーガイド」の「チュートリアル: インスタンスメタデータを介してターゲットライフサイクル状態を取得するようにユーザーデータを設定する」を参照してください。

  • このトピックの手順では、インスタンスにログインしてコマンドを実行することでエージェントをインストールするなどのアクションを実行する方法について説明します。の一機能である Run Command を使用して、ローカルクライアントマシンからコマンドを実行し、1 つ以上のインスタンスをターゲットにすることができます AWS Systems Manager。詳細については、AWS Systems Manager ユーザーガイドの「AWS Systems Manager 実行コマンド」を参照してください。

  • AWS AppConfig Amazon EC2 Linux インスタンス上のエージェントはsystemdサービスです。

インスタンスに AWS AppConfig エージェントをインストールして起動するには
  1. Linux インスタンスにログインします。

  2. ターミナルを開き、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 エージェントをインストールする場合は、 latestの をURL特定のバージョン番号に置き換えます。次に 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
  3. エージェントを開始するには、次のコマンドを実行します。

    sudo systemctl start aws-appconfig-agent
  4. エージェントが実行されていることを確認するには、次のコマンドを実行します。

    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 ログに送信する

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

ディスクへのロギングを有効にするには、 LOG_PATH で説明されているように「ステップ 4: (オプション) 環境変数を使用して AWS AppConfig Agent for Amazon を設定する EC2」環境変数を設定する必要があります。

CloudWatch エージェントの使用を開始するには、「Amazon ユーザーガイド」の CloudWatch 「エージェントを使用して Amazon EC2インスタンスとオンプレミスサーバーからメトリクスとログを収集する」を参照してください。 CloudWatch Systems Manager の一機能である高速セットアップを使用すると、 CloudWatch エージェントをすばやくインストールできます。詳細については、AWS Systems Manager ユーザーガイドの Quick Setup Host Managementを参照してください。

警告

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

インスタンスに CloudWatch エージェントをインストールしたら、 CloudWatch エージェント設定ファイルを作成します。設定ファイルは、 CloudWatch エージェントログファイルの操作方法を AWS AppConfig エージェントに指示します。 CloudWatch エージェント設定ファイルの作成の詳細については、 CloudWatch 「エージェント設定ファイルの作成」を参照してください。

インスタンスの 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 }, ... ] }, ... }, ... }

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

ステップ 4: (オプション) 環境変数を使用して AWS AppConfig Agent for Amazon を設定する EC2

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

環境変数用のドロップインセルファイルの作成例
  1. Linux インスタンスにログインします。

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

    sudo mkdir /etc/systemd/system/aws-appconfig-agent.service.d
  3. 次のコマンドを実行して、 ドロップインユニットファイルを作成します。置換 file_name ファイルの名前。拡張子は .conf でなければなりません。

    sudo touch /etc/systemd/system/aws-appconfig-agent.service.d/file_name.conf
  4. ドロップインユニットファイルに情報を入力します。次の例では、 Service 環境変数を定義するセクションを追加します。この例では、 AWS AppConfig エージェント ログレベルを DEBUG に設定しています。

    [Service] Environment=LOG_LEVEL=DEBUG
  5. システム設定を再読み込むには、次のコマンドを実行します。

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

    sudo systemctl restart aws-appconfig-agent

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

環境変数 詳細 デフォルト値

ACCESS_TOKEN

この環境変数は、エージェントHTTPサーバーから設定データをリクエストするときに指定する必要があるトークンを定義します。トークンの値は、認証タイプが のHTTPリクエスト認証ヘッダーで設定する必要がありますBearer。以下はその例です。

GET /applications/my_app/... Host: localhost:2772 Authorization: Bearer <token value>
なし

BACKUP_DIRECTORY

この環境変数により、 AWS AppConfig エージェントは取得した各設定のバックアップを指定されたディレクトリに保存できます。

重要

ディスクにバックアップされた設定は暗号化されません。設定に機密データが含まれている場合は、ファイルシステムのアクセス許可で最小特権の原則を実践 AWS AppConfig することをお勧めします。詳細については、「のセキュリティ AWS AppConfig」を参照してください。

なし

HTTP_PORT

この環境変数は、エージェントのHTTPサーバーが実行されるポートを指定します。

2772

LOG_LEVEL

この環境変数は、エージェントがログに記録する詳細レベルを指定します。各レベルには、現在レベルとそれより上位のすべてのレベルが含まれます。変数は、大文字と小文字が区別されます。ログレベルは debug, info, warn, error, none.情報など、エージェントに関する詳細情報が含まれます。Debug には、エージェントに関する時間情報などの詳細情報が含まれます。

info

LOG_PATH

ログが書き込まれるディスクがある場所。指定しない場合、ログは stderr に書き込まれます。

なし

MANIFEST

この環境変数は、マルチアカウント取得ディスク への設定の保存など、設定ごとに追加の機能を利用するように AWS AppConfig エージェントを設定します。次のいずれかの値を入力できます。

  • "app:env:manifest-config"

  • "file:/fully/qualified/path/to/manifest.json"

これらの機能の詳細については、「マニフェストを使用して追加の取り出し機能を有効にする」を参照してください。

true

MAX_CONNECTIONS

この環境変数は、エージェントが AWS AppConfigから設定を取得するために使用する最大接続数を設定します。

3

POLL_INTERVAL

この環境変数は、エージェントが AWS AppConfig 更新された設定データをポーリングする頻度を制御します。間隔の秒数を指定できます。時間単位で数値を指定することもできます。s は秒、m は分、h は時間です。単位が指定されなかった場合、エージェントはデフォルトで秒になります。たとえば、60 、60 秒、1m の場合、ポーリング間隔は同じになります。

45 秒

PREFETCH_LIST

この環境変数は、エージェントが起動 AWS AppConfig するとすぐにリクエストする設定データを指定します。

なし

PRELOAD_BACKUPS

に設定するとtrue、 AWS AppConfig Agent は で見つかった設定バックアップをメモリBACKUP_DIRECTORYにロードし、サービスから新しいバージョンが存在するかどうかをすぐに確認します。に設定するとfalse、 AWS AppConfig エージェントは、サービスから設定データを取得できない場合にのみ、設定バックアップからコンテンツをロードします。例えば、ネットワークに問題がある場合などです。

true
PROXY_HEADERS この環境変数は、PROXY_URL 環境変数で参照されるプロキシに必要なヘッダーを指定します。値は、コンマで区切られたヘッダーの一覧です。各ヘッダーは次の形式を使用します。
"header: value"
なし
PROXY_URL この環境変数は、エージェントから URLへの接続に使用するプロキシを指定します AWS AppConfig。 HTTPSと AWS のサービスHTTPURLsがサポートされています。 なし

REQUEST_TIMEOUT

この環境変数は、エージェントが からの応答を待機する時間を制御します AWS AppConfig。サービスが応答しない場合、リクエストは失敗となります。

リクエストが初期データ取得に関するものである場合、エージェントはアプリケーションにエラーを返します。

更新データのバックグラウンドチェック中にタイムアウトが発生した場合、エージェントはエラーを記録し、しばらくしてから再試行します。

タイムアウトのミリ秒数を指定できます。時間単位で数値を指定することもできます。msはミリ秒、sは秒を表します。単位が指定されなかった場合、エージェントはデフォルトでミリ秒になります。たとえば、5000 、5000 ミリ秒、5 秒の場合、リクエストのタイムアウト値は同じになります。

3000 ミリ秒
ROLE_ARN この環境変数は、 IAMロールの Amazon リソースネーム (ARN) を指定します。 AWS AppConfig エージェントはこのロールを引き受けて設定データを取得します。 なし
ROLE_EXTERNAL_ID この環境変数は、引き受けたロール で使用する外部 ID を指定しますARN。 なし
ROLE_SESSION_NAME この環境変数は、引き受けたIAMロールの認証情報に関連付けるセッション名を指定します。 なし
SERVICE_REGION この環境変数は、 AWS リージョン エージェントが AWS AppConfig サービスを呼び出すために使用する代替 AWS AppConfig 手段を指定します。未定義のままにすると、エージェントは現在のリージョンを特定しようとします。確認できない場合、エージェントは起動に失敗します。 なし

WAIT_ON_MANIFEST

この環境変数は、起動を完了する前にマニフェストが処理されるまで待機するように AWS AppConfig エージェントを設定します。

true

ステップ 5: (必須) 設定データの取得

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

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

$ 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 エージェントの更新を自動化する

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