AWS CDK(python)のサンプルアプリから不要な要素を削除してまっさらスタックを作る
AWS CDKでかつPythonを使ったドキュメントって結構すくないかなー?
と個人的に感じたので、自分が作ったリソースを部分的に晒していければーと思いますがー、、
そのためにはまっさらなテンプレートが必要なので、つくっていきたいと思います。
何がしたいの?
今後さっくりCDKの動作を確認したので、何も入ってないクリアなテンプレートを作成する
前提
前回の記事のサンプルアプリから不要な要素を削っていきます(笑)
⚠ 削除しかたや、ファイルの不要/必要の判断は各々異なると思いますで、ここに書くにはあくまでも私の判断です
では 作っていきましょう👻(削っていきましょう❓)
隠しファイルを非表示でサンプルアプリのファイルを一覧を確認します
.
├── README.md
├── app.py
├── cdk.json
├── cdk.out
│ └── 略...
├── cdk_my_template
│ ├── __init__.py
│ └── cdk_my_template_stack.py
├── requirements.txt
├── setup.py
├── source.bat
└── tests
├── __init__.py
└── unit
├── __init__.py
└── test_cdk_my_template_stack.py
tests
ディレクトリを削除
テストディレクトリを削除します。
このサンプルアプリのテストですが、CloudFormationのテンプレートを取得して、そこに自分が作りたいリソースは追加されてるよね?
ってことを確認するコードのようですが、個人的には「私達がテストしたいテストはそれじゃない」感がかなり強いので削除します。
ノシ
$ rm -rf tests
README.md
削除
デフォルトのREADMEには色々説明が書いてあってありがたいです。
が、「不要な要素をクリアする」という目的の前だったら削除です。
$ rm README.md
必要なモジュールをrequirements.txt
に集める
requirements.txt
を開くと、たった一言こんなことが書いてあります。
-e .
pytest
ちなみにこれ、私の理解の範囲を超えて挙動が分からず調べました😅
pipのリファレンスを読み返してみるとsetuptools
でインストールをするオプションとのこと。
はいはいーsetuptools
、、、ファイルだとsetup.py
が対応してますね。
次はこっちのドキュメントを読んでいく感じです。
ぱっと読んだ感じメタ情報追加したり 依存関係を列挙してインストールしてくれる感じですね
ということでsetup.py
の依存関係(install_requires
)をコピーしてきてrequirements.txt
に貼っ付ける感じですね。
aws-cdk.core==1.72.0
aws-cdk.aws_iam==1.72.0
aws-cdk.aws_sqs==1.72.0
aws-cdk.aws_sns==1.72.0
aws-cdk.aws_sns_subscriptions==1.72.0
aws-cdk.aws_s3==1.72.0
こんな(↑)感じですね。
後pytest
も削除してます。さっきtests
ディレクトリ削除したので(笑)
で、ここでsetup.py
も不要にあったのでノシです。
$ rm setup.py
後、まっさらなテンプレート(AWSのリソース無しのテンプレート)をいったん作りたいので、aws-cdk.core
以外不要なので削除です
aws-cdk.core==1.72.0
となると、最終的にrequirements.txt
はこんな(↑)感じ
source.bat
を削除する
このファイルを開いて、コメントを読むとWindowsで仮想環境を使うのに使うっぽいですが、
Mac or Linux 以外で動かす予定がないので削除します
※ Windowsで動かすにしろ、Windowsの中にLinux入れてそこで動かします(笑)
$ rm source.bat
aws cliで設定してるリージョンにデプロイされる用にエントリーポイントを修正する
詳細はこのあたり(↓)
https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Stack.html#env
デフォルトだとオレゴンにデプロイするので、それをaws cliで設定している設定の場所にデプロイするように変更します。
※ 個人的にはこの設定はやらなくても良い気がします。テストで遊ぶ的な環境なので値段の安いバージニアあたりにデプロイするのが個人的には良いかと。
import os
from aws_cdk import core
from cdk_my_template.cdk_my_template_stack import CdkMyTemplateStack
app = core.App()
env = core.Environment(
account=os.getenv("CDK_DEFAULT_ACCOUNT"), region=os.getenv("CDK_DEFAULT_REGION")
)
CdkMyTemplateStack(app, "cdk-my-template", env=env)
app.synth()
とりあえず一旦こんな(↑)感じで。
テンプレート名とかディレクトリ名とかが好みでないので変える
完全に好みの話(笑)
# スタックを保存してるディレクトリ名を変更
$ mv cdk_my_template stacks
# Stack定義のファイル名を変更
$ mv stacks/cdk_my_template_stack.py stacks/clear_stack.py
stackのファイルのパスを引き直す&無駄なリソースを削除
from aws_cdk import core
class ClearStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
エントリーポイントのパスを変える
import os
from aws_cdk import core
from stacks.clear_stack import ClearStack
app = core.App()
env = core.Environment(
account=os.getenv("CDK_DEFAULT_ACCOUNT"), region=os.getenv("CDK_DEFAULT_REGION")
)
ClearStack(app, "clear-stack", env=env)
app.synth()
.git
を初期化
そのまま.git
使おうかなと思ったのですが、よく考えると$ mv
とかで普通に動かしちゃったので面倒になったのです初期化します(笑)
$ rm -rf .git
$ git init
完了したのでデプロイしてみる
デプロイするとこんな感じです
※ 「エラーがでるかな?」と思ってたらそのままデプロイできてしまった😅
コンソールで確認
空っぽなテンプレートがデプロイされていることを、確認できました👍
まとめ
たたき台で使う空のStackをCDKを使ってAWSにデプロイしました。
想像より長文になりまいしたが、全然大したことをしていないという😅
今回のリポジトリはこちら
https://github.com/sisi100/cdk-my-template/tree/20201107.0
最終的にリポジトリに入ったファイルは下記の6個です(笑)
.
├── .gitignore
├── app.py
├── requirements.txt
└── stacks
├── __init__.py
└── clear_stack.py
以上、おつかれさまでした👻