Code Monkey home page Code Monkey logo

cdk-workshop-ecs-fargate-python's Introduction

AWS CDK コンテナ構築シリーズ WebApp 開発編 with Python

AWS CDK と Python による コンテナの WebApp 構築を学ぶためのコンテンツです

ハンズオンの準備

環境準備に不安な方向け

AWS アカウント

AWS アカウントをご準備下さい AWS にサインアップ

もし新規作成される場合、クレジットカードの登録が必要になりますが、今回のハンズオンでは無料枠の範囲となりますので、過度な操作をしない限り、支払いは不要となる見込みです。

GitPod

このコンテンツでは、GitPod の利用を推奨しています。

以下の手順に従って、GitPod の準備を行なって下さい。

  1. GitHub アカウントを作成する
  2. Chrome 拡張機能 Gitpod - Always ready to code をインストールする。
  3. cdk-workshop-ecs-fargate-python にアクセスし、表示されている Gitpod ボタンをクリックする。
  4. 作成した GitHub アカウントでログインし、GitHub と GitPod の連携を承認する。
  5. ブラウザで IDE が起動される。
  6. 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 で、任意のコンテナを立ち上げて頂きます。

ただ、どうやらソースコードに不具合があるようなので、あなたはそれらを解決する必要があります。

1. AWS CDK でアクセスする

AWS CDK で あなたの AWS アカウント にアクセスしたいのですが、どうやら設定値がおかしいようです…

  • 以下コマンドを実行し、エラー内容を確認して、何とか正常終了させて下さい
  • ただし、コマンドにオプションは追加しないでください!
$ cdk bootstrap  ## このまま実行して、正常終了させましょう!

2. プライベートサブネットの追加

それでは VPC ネットワークを作成しましょう!

ただ、現在のコードではバプリックネットワークしか作成されません…

  • AWS ECS fargate をデプロイするために、プライベートサブネットを作成するコードを追加し、以下コマンドでデプロイして下さい
  • サブネットの名前にも注意して下さいね!
$ cdk deploy cocrea-dev-network-stack

3. WebAppStack の準備

ネットワークは正常に作成できましたでしょうか?

次に、サンプルのコンテナを AWS ECS fargate でデプロイしましょう!

ただ、ECS fargate 用のスタックはこのファイルで準備されているようですが、どうやら aws cdk で認識されていないようです…

  • app.pyを修正し、cdk list を実行した時に、以下2つのスタックが表示されるようにして下さい
$ cdk list
cocrea-dev-network-stack
cocrea-dev-webapp-stack

4. WebAppStack の修正とデプロイ

さて、それでは AWS ECS fargate をデプロイしましょう!

上手くいけばよいのですが、もしかしたら何かコードに誤りがあるかもしれません…

$ cdk deploy cocrea-dev-webapp-stack

正常にデプロイされれば10分程度で完了し、アクセス URL が発行されます!(なかなか完了しない場合は、ECSでコンテナが作成・廃棄され続けてるかも…)

image

5. コンテナイメージの変更

無事に AWS ECS fargate はデプロイされましたでしょうか!?

上手く出来た方は、少し構成を変えてみましょう!

  • 表示される Web 画面を Nginx に変更してください

image

ハンズオンの終了

お疲れ様でした!

最後に、AWS リソースの削除を忘れないようにして下さいね!

CDK でデプロイしたリソースの削除

$ cdk destroy --all

CloudFormation

スタックにて、CDK Toolkit を削除して下さい。 (もし今後作業する予定がある方は、そのままで大丈夫です)

image

Dynamodb

もしテーブルが残った場合、以下の手順で削除可能です。

image

IAM

ユーザー(cdk-workshop)は削除されませんので、不要な方は削除お願いします。

CDK help

シンプルですが、タブ補完も実装しています!

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

cdk-workshop-ecs-fargate-python's People

Contributors

degiple avatar

Stargazers

Radek Tomšej avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.