Amazon EC2およびオンプレミスマシンでの AWS AppConfig Agent の使用 - AWS AppConfig

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

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:StartConfigurationSessionappconfig: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 エージェントをインストールして起動するには
  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 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_removaltrue、 CloudWatch エージェントはローテーションされた 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。 AWS のサービスHTTPSおよび はサポート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 ローカルホストコールを使用して、 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