AWS CDK(Python)でサンプルアプリをデプロイしてみる
AWSのリソースを管理する方法はterraformとかCloudFormationとか色々あります。
そんな中で、わたくしごとですがAWS CDKにハマっているので、
使ったことがない方向けに「CDKだとこんな感じにデプロイできますよー」ということを書こうと思います。
何がしたいの?
ゼロから aws cdk でサンプルアプリをデプロイします。
ちょっと言葉たらずで、コマンド優先で記事を書きますが、もし不明点とか質問があればTwitterとかで質問していただければ幸いですー
前提
npm
コマンドが叩けるpython3
が動くaws-cli
が使える環境
では 作っていきましょう👻
CDK の導入
$ npm install -g aws-cdk
動作確認
$ cdk --version
1.72.0 (build c2f38e8)
上記のようにversion番号が表示されれば大丈夫です。
ただし下記のように表示されたら、ちがうcdkが入ってます。
$ cdk --version
cdk
これは同名のpythonのライブラリーが入っちゃっているので$ pip uninstall cdk
で削除してからターミナルを再起動してください👍
新規アプリを作る
開発用にディレクトを作成します
$ mkdir cdk-my-template
$ cd cdk-my-template
サンプルアプリを作成します
$ cdk init sample-app --language python
そうするとこんな感じにファイルが作られます
.
├── .git
│ └── 略...
├── .gitignore
├── .venv
│ └── 略...
├── README.md
├── app.py # <== アプリのエントリーポイント
├── cdk.json
├── 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
.gitも.venvも用意されているというありがたさですね。
ということで早速.venv
の仮想環境を使います。
$ source .venv/bin/activate
$ pip install -r requirements.txt
これでほぼサンプルアプリが完成してます(笑)
サンプルアプリでデプロイされる内容を確認する
デプロイされるされる内容は下記のファイルの中にあります。
from aws_cdk import (
aws_iam as iam,
aws_sqs as sqs,
aws_sns as sns,
aws_sns_subscriptions as subs,
core
)
class CdkMyTemplateStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
queue = sqs.Queue( # <== SQSのキューを作成する
self, "CdkMyTemplateQueue", # <== CloudFormationで使われる名前
visibility_timeout=core.Duration.seconds(300), # <== 可視性タイムアウト300秒
)
topic = sns.Topic( # <== SNSのトピックを作成する
self, "CdkMyTemplateTopic" # <== CloudFormationで使われる名前
)
topic.add_subscription(subs.SqsSubscription(queue)) # <== 作ったトピックのサブスクライバーとしてキューを追加
作成する
という表現正しくないかもですね🤔
まぁ、新規でデプロイするときには作成されます。2回め以降なら更新されます。
デプロイしてみましょう
まずブートストラップスタックをデプロイします。
公式によると、これはAWSのリージョン毎に初めてcdkを使うときに作らないとだめなツールセットとのころです。
$ cdk bootstrap
からのデプロイ
$ cdk deploy
こんな(↓)確認がでるのでy
でデプロイします👍
ちなみにオレゴン(us-west-2)にデプロイされます(笑)
ということで、コンソールにログインして確認してみましょう😊
たぶん、このあたり(↓)のURLからデプロイされたトピックを選択し、、、
https://us-west-2.console.aws.amazon.com/sns/v3/home?region=us-west-2#/topics
こんな感じでメッセージを作って、メッセージを送信します。
たぶん下記のURLらへんにデプロイされたキューをクリックして、キューに溜まったアイテムを確認します。
https://us-west-2.console.aws.amazon.com/sqs/v2/home?region=us-west-2#/queues
右上の「メッセージ送受信」から「メッセージをポーリング」をクリックしてー、、
ポーリングされたメッセージをクリックすると、こんな感じ
はい、SNSに送ったメッセージがきちんと取得されましたね👍
削除
$ cdk destroy
以上(笑)
まとめ
今回はAWS CDKを使ってAWSのリソース管理を体験するために、
Pythonを使ってゼロからサンプルのリソースをデプロイしました。
そしてデプロイしたリソースを、AWSのコンソール上から使ってみました。
個人的にはかなり直感的にリソースをいじれるので、その便利さが伝われば幸いかなーと思います😊
以上、ししぃでしたーノシ
今回のリポジトリはこちら
。。。
流石にこれをリポジトリにそのまま上げるのは意味ないですね😅
サンプルを何一つもいじってないので(笑)
リポジトリなしでーす👍