LoginSignup
2
0

More than 1 year has passed since last update.

AWS CDK の実行時に StackName を動的に指定する

Posted at

はじめに

AWS CDK のエントリーポイントを見ると、以下の様に実行するスタック名がハードコーディングされている。

app.py
app = core.App()
CdkPythonStack(app, "CdkPythonStack")

しかし、例えば「開発環境」と「本番環境」同一のテンプレートを使って複数のスタックを構築したい場合もあると思う。 そのような場合にスタック名を動的に指定して環境構築をしたい。

解決策

同様の質問が StackOverflow で見つかった。

こちらでは、システムの環境変数を使って実行時に引き渡す方法を採っている。
もうちょっといい方法はないかと思って cdk コマンドを探したり、app.pyargparse を追加してみたが、調べた限りではコマンドラインの値をそのまま app.py に引き渡す方法は見当たらなかった。 そのため、上記質問の回答に倣って環境変数を使う方法で対処する。

app.py
import os

STACK_NAME = os.environ.get('STACK_NAME') or 'CDKPythonStack'

app = cdk.App()
CdkPythonStack(app, 'CDKPythonStack', stack_name=STACK_NAME)

Python で書くとスタック生成時のパラメータとして stack_name を渡せばよい。 ここでは単に環境変数を使っているが、さらに踏み込んで環境変数をベースにメタファイルを読み込んで名前を決定してもよい。

# スタック名指定
$ export STACK_NAME=CustomNameStack && pipenv run cdk deploy

# スタック名未指定 (デフォルトを利用)
$ export STACK_NAME= && pipenv run cdk deploy

これら2つを実行することで、別名のスタックを作成できた。

SnapCrab_NoName_2021-9-29_17-36-41_No-00.png

2
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
2
0