AWS CDK と Python による コンテナの WebApp 構築を学ぶためのコンテンツです
環境準備に不安な方向け
AWS アカウントをご準備下さい AWS にサインアップ
もし新規作成される場合、クレジットカードの登録が必要になりますが、今回のハンズオンでは無料枠の範囲となりますので、過度な操作をしない限り、支払いは不要となる見込みです。
このコンテンツでは、GitPod の利用を推奨しています。
以下の手順に従って、GitPod の準備を行なって下さい。
- GitHub アカウントを作成する
- Chrome 拡張機能 Gitpod - Always ready to code をインストールする。
- cdk-workshop-ecs-fargate-python にアクセスし、表示されている Gitpod ボタンをクリックする。
- 作成した GitHub アカウントでログインし、GitHub と GitPod の連携を承認する。
- ブラウザで IDE が起動される。
- AWS CLI の手順に沿って、IDE で CLI のクレデンシャルを設定する。
以下コマンドを実行し、それぞれ正常終了することを確認して下さい。
- aws 認証情報が正しいかどうか
$ aws iam list-users
{
"Users": [
{
"Path": "/",
"UserName": "~",
"UserId": "~",
"Arn": "~",
"CreateDate": "~"
},
~
]
}
- cdk コマンドが正しく動作するかどうか
$ cdk list
cocrea-dev-network-stack
さて、これからあなたには AWS ECS fargate で、任意のコンテナを立ち上げて頂きます。
ただ、どうやらソースコードに不具合があるようなので、あなたはそれらを解決する必要があります。
AWS CDK で あなたの AWS アカウント にアクセスしたいのですが、どうやら設定値がおかしいようです…
- 以下コマンドを実行し、エラー内容を確認して、何とか正常終了させて下さい
- ただし、コマンドにオプションは追加しないでください!
$ cdk bootstrap ## このまま実行して、正常終了させましょう!
それでは VPC ネットワークを作成しましょう!
ただ、現在のコードではバプリックネットワークしか作成されません…
- AWS ECS fargate をデプロイするために、プライベートサブネットを作成するコードを追加し、以下コマンドでデプロイして下さい
- サブネットの名前にも注意して下さいね!
$ cdk deploy cocrea-dev-network-stack
ネットワークは正常に作成できましたでしょうか?
次に、サンプルのコンテナを AWS ECS fargate でデプロイしましょう!
ただ、ECS fargate 用のスタックはこのファイルで準備されているようですが、どうやら aws cdk で認識されていないようです…
- app.pyを修正し、cdk list を実行した時に、以下2つのスタックが表示されるようにして下さい
$ cdk list
cocrea-dev-network-stack
cocrea-dev-webapp-stack
さて、それでは AWS ECS fargate をデプロイしましょう!
上手くいけばよいのですが、もしかしたら何かコードに誤りがあるかもしれません…
$ cdk deploy cocrea-dev-webapp-stack
正常にデプロイされれば10分程度で完了し、アクセス URL が発行されます!(なかなか完了しない場合は、ECSでコンテナが作成・廃棄され続けてるかも…)
無事に AWS ECS fargate はデプロイされましたでしょうか!?
上手く出来た方は、少し構成を変えてみましょう!
- 表示される Web 画面を Nginx に変更してください
お疲れ様でした!
最後に、AWS リソースの削除を忘れないようにして下さいね!
$ cdk destroy --all
スタックにて、CDK Toolkit を削除して下さい。 (もし今後作業する予定がある方は、そのままで大丈夫です)
もしテーブルが残った場合、以下の手順で削除可能です。
ユーザー(cdk-workshop)は削除されませんので、不要な方は削除お願いします。
シンプルですが、タブ補完も実装しています!
Usage: cdk -a <cdk-app> COMMAND
Commands:
cdk list [STACKS..] Lists all stacks in the app [aliases: ls]
cdk synthesize [STACKS..] Synthesizes and prints the CloudFormation
template for this stack [aliases: synth]
cdk bootstrap [ENVIRONMENTS..] Deploys the CDK toolkit stack into an AWS
environment
cdk deploy [STACKS..] Deploys the stack(s) named STACKS into your
AWS account
cdk import [STACK] Import existing resource(s) into the given
STACK
cdk watch [STACKS..] Shortcut for 'deploy --watch'
cdk destroy [STACKS..] Destroy the stack(s) named STACKS
cdk diff [STACKS..] Compares the specified stack with the deployed
stack or a local template file, and returns
with status 1 if any difference is found
cdk metadata [STACK] Returns all metadata associated with this
stack
cdk acknowledge [ID] Acknowledge a notice so that it does not show
up anymore [aliases: ack]
cdk notices Returns a list of relevant notices
cdk init [TEMPLATE] Create a new, empty CDK project from a
template.
cdk context Manage cached context values
cdk docs Opens the reference documentation in a browser
[aliases: doc]
cdk doctor Check your set-up for potential problems