LoginSignup
0
0

More than 1 year has passed since last update.

AWS CDK - Environment

Posted at

Environment

環境 (env) は、スタックがデプロイされる AWS アカウントと AWS リージョンを表します。

AWS CDK は、現在の AWS CLI プロファイルでデフォルトのリージョンとアカウントを選択します。

デフォルトとは異なる値のセットを指定することで、明示的に手動で環境を上書きすることができます。

1.作成前に AWSアカウントと AWSリージョンを決定する

AWSアカウントと AWSリージョンをハードコーディングすると、スタックは常にその特定のアカウントとリージョンにデプロイされます。

次の例は、東京リージョンと大阪リージョンに作成する例です。

app.py
#!/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 オプションを使用して指定されたプロファイル、または指定しない場合はデフォルトプロファイルに基づいてデプロイされます。

app.py
#!/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 によって提供されるデフォルトの環境にフォールバックします。

app.py
#!/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()
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0