Context
CloudFormation の Parameters のように使える機能。
コンテキスト値は、アプリ、スタック、コンストラクトに関連付けることができるキーと値のペアです。
キーは文字列で、値は JSON でサポートされている任意の型(数値、文字列、配列、オブジェクト)を使用することが可能。
Context の提供方法
6 つある。
- 現在の AWS アカウントから自動的に提供
- CDK コマンドの --context オプションで指定
- プロジェクトの cdk.context.json ファイルに記述
- プロジェクトの cdk.json ファイルの context キー
- ~/.cdk.json ファイルの context キー
- construct.node.setContext メソッドで使用
Context の取得方法
construct.node.tryGetContext
を使用して Context値を取得します。
Context methods
methods | 説明 |
---|---|
HostedZone.fromLookup | アカウント内のホストゾーンを取得する。 |
stack.availabilityZones | サポートされている AZ を取得します。 |
StringParameter.valueFromLookup | 現在のリージョンの Amazon EC2 Systems Manager Parameter Store から値を取得する。 |
Vpc.fromLookup | アカウント内の既存の Amazon VPC を取得する。 |
LookupMachineImage | Amazon VPC内 の AMI を検索する。 |
cdk context
コマンド | 説明 |
---|---|
cdk context | cdk.context.json ファイル内の情報を表示する。 |
cdk context --reset | 特定のコンテキスト値を削除する。 |
cdk context --clear | コンテキスト値をすべて消去する。 |
AWS CDK Toolkit --context flag
synth または deploy 時にコンテキスト値を CDK アプリに渡すには、--context (-c) オプションを使用します。
cdk synth --context key1=value1 --context key2=value2 MyStack
複数のスタックをデプロイする場合、指定したコンテキスト値は通常、すべてのスタックに渡されます。
必要であれば、コンテキスト値の前にスタック名を付けることで、各スタックに異なる値を指定することができます。
cdk synth --context Stack1:key=value --context Stack2:key=value Stack1 Stack2
Example
cdk.json
{
"context": {
"myKey": "myValue",
"anotherKey": "anotherValue"
}
}
from aws_cdk import core
class MyCdkStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
# cdk.jsonからContextを読み込む
my_value = self.node.try_get_context("myKey")
another_value = self.node.try_get_context("anotherKey")