Environment
環境 (env) は、スタックがデプロイされる AWS アカウントと AWS リージョンを表します。
AWS CDK は、現在の AWS CLI プロファイルでデフォルトのリージョンとアカウントを選択します。
デフォルトとは異なる値のセットを指定することで、明示的に手動で環境を上書きすることができます。
1.作成前に AWSアカウントと AWSリージョンを決定する
AWSアカウントと AWSリージョンをハードコーディングすると、スタックは常にその特定のアカウントとリージョンにデプロイされます。
次の例は、東京リージョンと大阪リージョンに作成する例です。
#!/usr/bin/env python3
import aws_cdk as cdk
from pysample.pysample_stack import PysampleStack
app = cdk.App()
env_tokyo = cdk.Environment(account="123456789012", region="ap-northeast-1")
env_osaka = cdk.Environment(account="123456789012", region="ap-northeast-3")
PysampleStack(app, "PysampleStack1", env=env_tokyo)
PysampleStack(app, "PysampleStack3", env=env_osaka)
app.synth()
cdk synth
を実行する場合は、次のように ID を指定する必要があります。
cdk synth PysampleStack1
cdk synth PysampleStack3
cdk deploy
で全てのスタックをデプロイする場合は、--all
、
特定のスタックをデプロイする場合は、ID を指定します。
cdk deploy --all
cdk deploy PysampleStack1
cdk deploy PysampleStack3
2.作成時に AWSアカウントと AWSリージョンを決定する
スタックを別の AWS アカウントと AWS リージョンにデプロイできるようにしつつ、作成時に AWSアカウントと AWSリージョンを決定するには、AWS CDK CLI が提供する 2 つの環境変数、CDK_DEFAULT_ACCOUNT
及び CDK_DEFAULT_REGION
を利用します。
これらの変数は、AWS--profile
オプションを使用して指定されたプロファイル、または指定しない場合はデフォルトプロファイルに基づいてデプロイされます。
#!/usr/bin/env python3
import aws_cdk as cdk
import os
from pysample.pysample_stack import PysampleStack
app = cdk.App()
PysampleStack(app, "dev", env=cdk.Environment(
account=os.environ["CDK_DEFAULT_ACCOUNT"],
region=os.environ["CDK_DEFAULT_REGION"]))
app.synth()
3.2 つの追加の環境変数をサポートするようにスタックを記述して、作成時にオーバーライドする
有効な式を使用して、好きなように env を設定できます。
たとえば、2 つの追加の環境変数をサポートするようにスタックを記述して、合成時にアカウントとリージョンをオーバーライドできるようにすることができます。
次のスタックの環境では、代替の環境変数が設定されている場合に使用されます。
設定されていない場合、AWS CDK によって提供されるデフォルトの環境にフォールバックします。
#!/usr/bin/env python3
import aws_cdk as cdk
import os
from pysample.pysample_stack import PysampleStack
PysampleStack(app, "dev", env=cdk.Environment(
account=os.environ.get("CDK_DEPLOY_ACCOUNT", os.environ["CDK_DEFAULT_ACCOUNT"]),
region=os.environ.get("CDK_DEPLOY_REGION", os.environ["CDK_DEFAULT_REGION"])
app.synth()