環境変数
環境変数は Service が実行されている Environment に応じてサービスから利用可能な変数です。Service は自身で定義することなくそれらの変数を参照できます。環境変数は特定の Environment に固有のデータを Service へ渡したい場合に便利です。例として、テスト用と本番用で接続するデータベースの名前を切り替える場合などです。
環境変数へのアクセス方法は通常、利用しているプログラミング言語によって決まります。ここではいくつかのプログラミング言語で DATABASE_NAME
という環境変数を取得する例を示します。
Go
dbName := os.Getenv("DATABASE_NAME")
Javascript
var dbName = process.env.DATABASE_NAME;
Python
database_name = os.getenv('DATABASE_NAME')
デフォルト環境変数とは
デフォルトで、AWS Copilot CLI はサービスが利用できるいくつかの環境変数を提供します。
COPILOT_APPLICATION_NAME
- この Service を実行している Application 名COPILOT_ENVIRONMENT_NAME
- Service が実行されている Environment 名(例: test、prod)COPILOT_SERVICE_NAME
- 現在の Service 名COPILOT_LB_DNS
- (存在する場合)ロードバランサー名。例: kudos-Publi-MC2WNHAIOAVS-588300247.us-west-2.elb.amazonaws.com 注: カスタムドメイン名を利用している場合でも、この値はロードバランサーの DNS 名を保持しますCOPILOT_SERVICE_DISCOVERY_ENDPOINT
- サービスディスカバリを介して、Environment の中で他の Service と通信するために Service 名の後に追加されるエンドポイント。値は{env name}.{app name}.local
となります。サービスディスカバリについてのより詳しい情報はサービスディスカバリのガイド を参照してください
環境変数を追加する方法
環境変数を追加するのは簡単です。Manifest の variables
セクションに直接追加できます。 下記のスニペットでは、LOG_LEVEL
という変数を debug
という値で Service に渡しています。
# copilot/{service name}/manifest.yml の一部
variables:
LOG_LEVEL: debug
Environment に応じて、特定の環境変数の値を渡すこともできます。上記と同じ例で、ログレベルを設定し、production の Environment の時だけ値を info
に書き換えてみます。Manifest の変更は、それをデプロイした時に反映されるので、ローカルでの変更は安全です。
# copilot/{service name}/manifest.yml の一部
variables:
LOG_LEVEL: debug
environments:
production:
variables:
LOG_LEVEL: info
ここでは、Manifest を編集して、環境変数を Application に追加する方法の簡単なガイドを紹介しています。👇
さらに、環境変数をまとめて追加したい場合、 env file に環境変数を追加します。そして、ファイルパス (Workspace の root からのファイルパス) を Manifest の env_file
フィールドに記述します。
メインコンテナのワークスペースのルートや、任意のサイドカーコンテナ定義、logging
フィールド下に、env_file を指定して、FireLens サイドカーコンテナに環境変数ファイルを設定できます。
# in copilot/{service name}/manifest.yml
env_file: log.env
log.env
では、次の様に記述します。
#This is a comment and will be ignored
LOG_LEVEL=debug
LOG_INFO=all
sidecars:
nginx:
image: nginx:latest
env_file: ./nginx.env
port: 8080
ロギングコンテナにおいては、次の様に記述します:
logging:
retention: 1
destination:
Name: cloudwatch
region: us-west-2
log_group_name: /copilot/logs/
log_stream_prefix: copilot/
env_file: ./logging.env
DynamoDB テーブルやS3 バケット、RDS データベースなどの名前を確認する方法
Copilot CLI を使って、DynamoDB テーブルや S3 バケット、データベースなどの追加の AWS リソースをプロビジョニングする場合、出力の値は環境変数として、Application に渡されます。より詳しい情報は、AWS リソースを追加するを確認してください。