翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EC2およびオンプレミスマシンでの AWS AppConfig Agent の使用
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 に接続し、 HTTP GET を呼び出してデータを取得することで、データを取得できます。
*AWS AppConfig エージェントは、サービスが設定データを初めて取得したときにデータをキャッシュします。このため、データを取得する最初の呼び出しは、それ以降の呼び出しよりも時間がかかります。
トピック
ステップ 1: (必須) リソースの作成と権限の設定
Amazon EC2インスタンスで実行されているアプリケーション AWS AppConfig と統合するには、特徴量フラグやフリーフォーム設定データを含む AWS AppConfig アーティファクトと設定データを作成する必要があります。詳細については、「で機能フラグとフリーフォーム設定データを作成する AWS AppConfig」を参照してください。
がホストする設定データを取得するには AWS AppConfig、アプリケーションが AWS AppConfig データプレーンへのアクセスで設定されている必要があります。アプリケーションにアクセスを許可するには、Amazon EC2インスタンスロールに割り当てられたIAMアクセス許可ポリシーを更新します。具体的には、 appconfig:StartConfigurationSession
と appconfig:GetLatestConfiguration
ポリシーにとアクションを追加する必要があります。以下がその例です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "appconfig:StartConfigurationSession", "appconfig:GetLatestConfiguration" ], "Resource": "*" } ] }
ポリシーへのアクセス許可の追加の詳細については、IAM「 ユーザーガイド」のIAM「ID アクセス許可の追加と削除」を参照してください。
ステップ 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 EC2ユーザーガイド」の「起動時に Linux インスタンスでコマンドを実行する」を参照してください。さらに、「Amazon EC2 Auto Scaling ユーザーガイド」の「チュートリアル: インスタンスメタデータを介してターゲットライフサイクル状態を取得するようにユーザーデータを設定する」を参照してください。
-
このトピックの手順では、インスタンスにログインしてコマンドを実行することでエージェントをインストールするなどのアクションを実行する方法について説明します。の一機能である Run Command を使用して、ローカルクライアントマシンからコマンドを実行し、1 つ以上のインスタンスをターゲットにできます AWS Systems Manager。詳細については、AWS Systems Manager ユーザーガイドの「AWS Systems Manager 実行コマンド」を参照してください。
-
AWS AppConfig Amazon EC2 Linux インスタンスのエージェントは
systemd
サービスです。
インスタンスに AWS AppConfig エージェントをインストールして起動するには
-
Linux インスタンスにログインします。
-
ターミナルを開き、管理者アクセス許可を使用して次のいずれかのコマンドを実行します。
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
-
エージェントを開始するには、次のコマンドを実行します。
sudo systemctl start aws-appconfig-agent
-
エージェントが実行されていることを確認するには、次のコマンドを実行します。
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 Agent はログを に発行します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 ユーザーガイド」の「Amazon EC2インスタンスとオンプレミスサーバーから CloudWatch エージェントを使用してメトリクスとログを収集する」を参照してください。 CloudWatch Systems Manager の一機能であるクイックセットアップを使用して、 CloudWatch エージェントをすばやくインストールできます。詳細については、AWS Systems Manager ユーザーガイドの Quick Setup Host Managementを参照してください。
警告
CloudWatch エージェントを使用せずにログファイルをディスクに書き込む場合は、古いログファイルを削除する必要があります。 AWS AppConfig エージェントは 1 時間ごとにログファイルを自動的にローテーションします。古いログファイルを削除しないと、インスタンスのディスク容量が不足する可能性があります。
エージェントをインスタンス CloudWatch にインストールしたら、 CloudWatch エージェント設定ファイルを作成します。設定ファイルは、 CloudWatch エージェントログファイルの操作方法を AWS AppConfig エージェントに指示します。 CloudWatch エージェント設定ファイルの作成の詳細については、 CloudWatch 「 エージェント設定ファイルの作成」を参照してください。
次のlogs
セクションをインスタンスの CloudWatch エージェント設定ファイルに追加し、変更を保存します。
"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: (オプション) 環境変数を使用して AWS AppConfig Agent for Amazon を設定する EC2
AWS AppConfig Agent for Amazon は、環境変数EC2を使用して設定できます。systemd
サービスの環境変数を設定するには、ドロップインユニットファイルを作成します。次の例は、ドロップインユニットファイルを作成して AWS AppConfig エージェントのログ記録レベルを に設定する方法を示していますDEBUG
。
環境変数用のドロップインセルファイルの作成例
-
Linux インスタンスにログインします。
-
ターミナルを開き、管理者権限で以下のコマンドを実行します。このコマンドで設定ディレクトリを作成します。
sudo mkdir /etc/systemd/system/aws-appconfig-agent.service.d
-
次のコマンドを実行して、 ドロップインユニットファイルを作成します。置換
file_name
ファイルの名前。拡張子は.conf
でなければなりません。sudo touch /etc/systemd/system/aws-appconfig-agent.service.d/
file_name
.conf -
ドロップインユニットファイルに情報を入力します。次の例では、
Service
環境変数を定義するセクションを追加します。この例では、 AWS AppConfig エージェント ログレベルをDEBUG
に設定しています。[Service] Environment=LOG_LEVEL=DEBUG
-
システム設定を再読み込むには、次のコマンドを実行します。
sudo systemctl daemon-reload
-
エージェントを再起動するには、次のコマンドを実行します AWS AppConfig 。
sudo systemctl restart aws-appconfig-agent
AWS AppConfig Agent for Amazon は、ドロップインユニットファイルで次の環境変数を指定EC2することで設定できます。
環境変数 | 詳細 | デフォルト値 |
---|---|---|
|
この環境変数は、エージェントHTTPサーバーから設定データをリクエストするときに提供する必要があるトークンを定義します。トークンの値は、認証タイプが のHTTPリクエスト認証ヘッダーで設定する必要があります
|
なし |
|
この環境変数により、 AWS AppConfig エージェントは取得した各設定のバックアップを指定されたディレクトリに保存できます。 重要ディスクにバックアップされた設定は暗号化されません。設定に機密データが含まれている場合は、ファイルシステムアクセス許可で最小権限の原則を実践 AWS AppConfig することをお勧めします。詳細については、「のセキュリティ AWS AppConfig」を参照してください。 |
なし |
|
この環境変数は、エージェントのHTTPサーバーを実行するポートを指定します。 |
2772 |
|
この環境変数は、エージェントがログに記録する詳細レベルを指定します。各レベルには、現在レベルとそれより上位のすべてのレベルが含まれます。変数は、大文字と小文字が区別されます。ログレベルは |
|
|
ログが書き込まれるディスクがある場所。指定しない場合、ログは stderr に書き込まれます。 |
なし |
|
この環境変数は、マルチアカウント取得などの設定ごとの追加機能を活用し、設定をディスク に保存するように AWS AppConfig エージェントを設定します。次のいずれかの値を入力できます。
これらの機能の詳細については、「マニフェストを使用して追加の取得機能を有効にする」を参照してください。 |
true |
|
この環境変数は、エージェントが AWS AppConfigから設定を取得するために使用する最大接続数を設定します。 |
3 |
|
この環境変数は、エージェントが AWS AppConfig 更新された設定データをポーリングする頻度を制御します。間隔の秒数を指定できます。時間単位で数値を指定することもできます。s は秒、m は分、h は時間です。単位が指定されなかった場合、エージェントはデフォルトで秒になります。たとえば、60 、60 秒、1m の場合、ポーリング間隔は同じになります。 |
45 秒 |
|
この環境変数は、エージェントが開始 AWS AppConfig するとすぐにリクエストする設定データを指定します。 |
なし |
|
に設定すると |
true |
PROXY_HEADERS |
この環境変数は、PROXY_URL 環境変数で参照されるプロキシに必要なヘッダーを指定します。値は、コンマで区切られたヘッダーの一覧です。各ヘッダーは次の形式を使用します。
|
なし |
PROXY_URL |
この環境変数は、エージェントから への接続URLに使用するプロキシを指定します AWS AppConfig。 AWS のサービスHTTPS および はサポートHTTP URLsされています。 |
なし |
|
この環境変数は、エージェントが からの応答を待機する時間を制御します 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 サービスを呼び出すために使用する代替方法を指定します。未定義のままにすると、エージェントは現在のリージョンを特定しようとします。確認できない場合、エージェントは起動に失敗します。 | なし |
|
この環境変数は、起動を完了する前にマニフェストが処理されるまで待機するように AWS AppConfig エージェントを設定します。 |
true |
ステップ 5: (必須) 設定データの取得
HTTP ローカルホストコールを使用して、 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