はじめに
本書の目的
このドキュメントは、AWSでの「環境変数」の使い方をわかりやすく説明します。基本的な概念から、AWS Lambda、Amazon ECS、Elastic Beanstalkといった主要サービスでの設定方法、さらにWindowsでのAWS CLI用環境変数まで順を追って学べます。実務での設定例を交えて、コード変更を最小限に抑える運用方法を紹介します。
誰に向けているか
クラウド環境でアプリを動かす開発者や運用担当者を想定しています。初心者にも読みやすいように専門用語は最小限にし、具体例で補足します。
本書で学べること
- 環境変数がなぜ便利か(例:開発・本番で設定を切り替える)
- 各AWSサービスでの設定方法の実践手順と注意点
- WindowsでのAWS CLI設定方法とトラブル対策
読み方のヒント
章ごとに実際の操作手順やコマンド例を載せます。まずは第2章で基本を押さしてから、使いたいサービスの章に進んでください。
環境変数の基本概念
環境変数とは
環境変数は「キー」と「値」の組み合わせで、プログラムからその値を取り出して使える仕組みです。ソースコードを直接書き換えずに設定だけ変えられるため、動作を切り替えやすくなります。
何が便利か
同じコードを本番・検証・ローカルで共通利用できます。例えば、データベース名や外部APIのエンドポイントを環境ごとに変えるだけで済みます。コンテナイメージや関数を再ビルドせずに環境を変更できる点が特に便利です。
具体例
- KEY: DATABASE_URL、VALUE: prod-db.example.com
- KEY: API_KEY、VALUE: AbCdEf123
プログラム側ではキー名を参照して値を読み取ります(例: process.env[“DATABASE_URL”]や getenv(“DATABASE_URL”)など)。
注意点と運用のコツ
- 秘密情報(パスワードやAPIキー)は平文で管理しないでください。専用のシークレット管理サービスを使うのが安全です。
- 同じキー名を環境ごとに揃うようにすると運用が楽になります。
- 変更は即時反映されない場合があるので、再起動やデプロイ方法に合わせて運用してください。
AWS Lambdaでの環境変数設定
概要
AWS Lambdaでは、関数の設定に環境変数を追加して実行時にパラメータを渡せます。コード側は標準ライブラリで利用できるため、実装が簡単です。
コンソールでの設定方法
Lambda管理画面から関数を選び「環境変数」セクションでキーと値を追加・編集できます。変更は次回の実行から反映されます。機密情報は平文で保存されるため、必要に応じてKMSで暗号化してください。
Pythonでの取得例
Pythonではos.environから取得します。存在しない場合はデフォルトを使うと安全です。
import os
import boto3
sns = boto3.client('sns')
SNS_TOPIC_ARN = os.environ.get('SNS_TOPIC_ARN')
def lambda_handler(event, context):
message = '処理が完了しました'
if SNS_TOPIC_ARN:
sns.publish(TopicArn=SNS_TOPIC_ARN, Message=message)
return {'status': 'ok'}
上の例ではSNSトピックARNを環境変数で管理し、コードの変更なく通知先を切り替えられます。
AWS CDKでの設定
CDKを使う場合、Lambda関数のコンストラクタにaddEnvironment()で値をセットします。例(TypeScript):
const fn = new lambda.Function(this, 'MyFunc', { ... });
fn.addEnvironment('SNS_TOPIC_ARN', 'arn:aws:sns:region:acct-id:topic');
この方法ならデプロイ時に環境を切り替えられ、アプリコードを変更する必要がありません。
注意点
- 機密情報は環境変数に平文で置かないでください。KMSやAWS Secrets Managerの利用を検討してください。
- 環境変数のサイズ制限(合計値の上限)があるため、大きなデータは格納しないでください。
以上がLambdaでの基本的な使い方です。
Amazon ECSでの環境変数設定
概要
Amazon ECSでは、コンテナに渡す環境変数を「タスク定義の直接記述」「Secrets Manager」「Parameter Store(SSM)」で設定できます。直接記述は簡単ですが平文になるため機密情報には向きません。Parameter Storeは同一イメージを複数環境で使うときに便利です。
主な方法
- タスク定義のenvironment: 単純なキー=値を設定します(平文)。
- secrets(Secrets Manager / Parameter Store): 値を参照してコンテナ起動時に注入します。機密管理に適します。
Parameter Storeを使う手順(例)
- SSM Parameter Storeでパラメータを作成(例: /myapp/dev/DB_HOST)。
- ECSタスク実行ロールにssm:GetParameters権限を付与します。
- タスク定義のsecretsでValueFromにパラメータARNを指定します。
- サービスをデプロイして動作確認します。
タスク定義例(抜粋)
"secrets": [
{"name": "DB_HOST", "valueFrom": "arn:aws:ssm:ap-northeast-1:123456789012:parameter/myapp/dev/DB_HOST"}
]
環境別の使い分け
環境ごとにパラメータ名を分ける(/myapp/dev/, /myapp/prod/)と、同じコンテナイメージをそのまま使えて運用が楽になります。
注意点
- Parameter Storeのパーミッションを忘れると取得に失敗します。
- 平文で良い設定はenvironmentに、機密はsecrets経由で管理してください。
AWS Elastic Beanstalkでの環境変数設定
概要
Elastic Beanstalkでは「環境プロパティ」を使って、エンドポイントやデバッグ設定などをアプリケーションに渡せます。コンソール画面かコード側の設定ファイルから登録できます。
コンソールでの手順(簡単)
- AWSマネジメントコンソールでElastic Beanstalkを開きます。
- 対象の環境を選び「Configuration(設定)」をクリックします。
- 「Software」または「ソフトウェア設定」を編集し、Environment Properties(環境プロパティ)欄にキーと値を追加します。
- 追加後に「Apply」等で保存すると環境に反映されます。
例: API_ENDPOINT=https://api.example.com、DEBUG=false
EB CLIでの設定
ローカルからは eb setenv KEY=値 KEY2=値2 のように設定できます。コンソールで設定を確認すると反映済みが分かります。
設定ファイルでの管理
リポジトリに保存したい場合は .ebextensions や .platform 配下で option_settings を使えます。バージョン管理と一緒に運用できます。
注意点
- 機密情報は平文で保存しないでください。Secrets ManagerやParameter Storeを検討してください。
- 環境変数を変更するとアプリケーションの再デプロイや再起動で反映されます。アプリ側で環境変数を読み取る実装を確認してください。
Windows環境でのAWS CLI環境変数設定
概要
WindowsでAWS CLIを使うときは、インストール先をPATHに追加するとどのフォルダからでもコマンドを実行できます。また、アクセスキーやリージョンなどを環境変数に設定する方法もあります。ここではPowerShellによるスクリプト例と、GUIでの手順を丁寧に説明します。
PowerShellでPATHを追加(一時・恒久)
-
一時(現在のセッションのみ有効)
$env:Path += “;C:\Program Files\Amazon\AWSCLIV2\”
この方法はウィンドウを閉じると消えます。 -
恒久(ユーザー領域に追加)
管理者権限があれば”Machine”を指定して全ユーザーに設定できます。
-
setxを使う例(注意:既存のPATHを切り詰める可能性があるため注意)
setx PATH “$($env:Path);C:\Program Files\Amazon\AWSCLIV2\”
変更後は新しいPowerShellウィンドウを開き、aws –versionで確認してください。
PowerShellでAWS関連の環境変数を設定
-
一時(セッションのみ)
$env:AWS_ACCESS_KEY_ID = “YOUR_ACCESS_KEY”
$env:AWS_SECRET_ACCESS_KEY = “YOUR_SECRET_KEY”
$env:AWS_DEFAULT_REGION = “ap-northeast-1” -
恒久(ユーザー)
setx AWS_ACCESS_KEY_ID “YOUR_ACCESS_KEY”
setx AWS_SECRET_ACCESS_KEY “YOUR_SECRET_KEY”
setx AWS_DEFAULT_REGION “ap-northeast-1”
環境変数は新しいセッションで有効になります。
GUIでの設定手順
- スタートメニューで「環境変数」と入力し、「システム環境変数の編集」を開きます。
- 「環境変数(N)…」ボタンをクリックします。
- ユーザー環境変数かシステム環境変数を選び、Pathを選んで「編集」→「新規」でAWS CLIのパス(例:C:\Program Files\Amazon\AWSCLIV2\)を追加します。
- アクセスキーなどは「新規」で変数名(AWS_ACCESS_KEY_ID等)と値を入力して追加します。
- OKを押して設定を保存し、新しいターミナルを開いて反映を確認します。
注意点
- 環境変数にシークレットを直接置くと安全上のリスクがあります。共有PCでは特に注意してください。
- aws configureコマンドは、認証情報をファイルに保存する別の方法です。必要に応じて使い分けてください。
まとめ
振り返り
本書では、環境変数の基本から、AWSの主要サービス(Lambda、ECS、Elastic Beanstalk)での設定方法、そしてWindows環境でのAWS CLI設定までを扱いました。環境変数を使うと、コードを直接変えずに動作を切り替えでき、開発・検証・本番の差を管理しやすくなります。
実践のコツ
- 用途を分ける:設定値(例:APIのエンドポイント)と機密情報(例:パスワード)は分けて管理します。
- 機密情報は専用サービスへ:AWS Secrets ManagerやSSMパラメータストアを使うと安全です。
- 環境ごとの設定管理:ステージごとに値を変え、デプロイ時に自動で反映すると手間が減ります。例:DB_HOST、FEATURE_X_ENABLED
- インフラコードで定義:TerraformやCloudFormationで環境変数を管理すると再現性が高まります。
運用上の注意
- 環境変数をソース管理に含めないでください。
- ログに機密値が出ないように注意します。
- IAM権限を最小化して必要なサービスだけが参照できるようにします。
最後に、環境変数の導入は小さな改善から始めて、徐々に自動化とセキュリティを強化すると、堅牢で保守しやすい運用が実現できます。












