Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CDK + ecspressoでお手軽コンテナ3分クッキング

akita
May 28, 2023

CDK + ecspressoでお手軽コンテナ3分クッキング

2023-05-29(月)AWS-UG名古屋 のLT資料です。

akita

May 28, 2023
Tweet

Other Decks in Technology

Transcript

  1. JAWS-UG 名古屋 AWS Demo-1グランプリ
    2023/05/29 あきた(yoyoyo_pg)
    CDK + ecspresso でお手軽
    コンテナ3分クッキング

    View Slide

  2. ● あきた(@yoyoyo_pg)
    https://qiita.com/yoyoyo_pg
    ● 名古屋在住
    ● Javaのバックエンド開発を2年
    ● AWS歴は1年半
    ● 好きなAWSサービス:AWS CDK
    ● 社外のLT初登壇です!
    自己紹介

    View Slide

  3. ● 5/20(土)にCDK Conferenceに現地参加してきました!
    ● CDKの盛り上がりが凄い...!
    発表の前に👀

    View Slide

  4. ● パブリックサブネットにALB
    ● プライベートサブネットにECSコンテナ(nginx)
    本日の献立🍽

    View Slide

  5. ● AWS CDK v2
    ○ ECSサービス、タスク以外を定義
    ○ VPC,SG,ALB,TG,ECSクラスター,各種ロール etc…
    ● コンテナデプロイツールのecspresso☕
    ○ ECSサービス、タスクを定義
    本日の材料🍽

    View Slide

  6. ● AWS Cloud Development Kit (AWS CDK)
    ○ 既存のプログラミング言語を利用し、AWSインフラ
    リソースの定義が可能
    ○ cdk deploy スタック名でコードを基に
    CloudFormationスタックがデプロイ
    ● 個人的に便利だと感じる点
    ○ リソースに応じたIAMロール、ポリシーが自動生成
    される点
    ○ 条件分岐やコンストラクトを利用する事で、複数環
    境・アプリケーションの展開が容易な点
    AWS CDKとは

    View Slide

  7. ● Amazon ECSのデプロイツール(OSS)
    ○ ECSサービス、タスクに関わる最小限のリソースを
    コード管理する事が可能
    ○ ecspresso initで既存サービス、タスク定義を設定
    ファイルとしてインポート
    ○ ecspresso deployで、ファイルを基にデプロイ
    ● 個人的に便利だと感じる点
    ○ ファイル内でCloudFormationのスタックのOutput
    やSSMパラメータストアの参照が可能
    ecspressoとは☕

    View Slide

  8. ● AWS CDK + ecspressoの構成ファイルを用意します。
    ● devcontainerの設定ファイルを準備した上で、
    Github Codespacesを立ち上げます。
    ● Github Codespaces上でクレデンシャルを設定しま
    す。
    ● cdk deploy と ecspresso deploy を実行すれば完成!
    構築レシピ📖

    View Slide

  9. ➔ AWS CDK + ecspressoの構成ファイルを用意します。
    ● devcontainerの設定ファイルを準備した上で、
    Github Codespacesを立ち上げます。
    ● Github Codespaces上でクレデンシャルを設定しま
    す。
    ● cdk deploy と ecspresso deploy を実行すれば完成!
    構築レシピ📖

    View Slide

  10. ➔ AWS CDK + ecspressoの構成ファイルを用意します。
    構築レシピ📖

    View Slide

  11. 構築のポイント
    ● AWS CDK側:生成した各種リソースのパラメータを
    SSMパラメータストアに格納
    ● ecspresso側:SSMパラメータストアの値を参照

    View Slide

  12. 構築のポイント
    ● AWS CDK側:生成した各種リソースのパラメータを
    SSMパラメータストアに格納
    ● ecspresso側:SSMパラメータストアの値を参照
    ➔ CDKでコンテナ関連リソースを構築し直しても、
    ecspresso deploy時に動的に参照先を切り替えられる

    View Slide

  13. 構築のポイント
    ● AWS CDK側:生成した各種リソースのパラメータを
    SSMパラメータストアに格納
    ● ecspresso側:SSMパラメータストアの値を参照
    ➔ CDKでコンテナ関連リソースを構築し直しても、
    ecspresso deploy時に動的に参照先を切り替えられる
    ➔ CDKベストプラクティスの1つである「自動で生成され
    るリソース名」が使いやすくなる

    View Slide

  14. 構築のポイント
    ● AWS CDK側:生成した各種リソースのパラメータを
    SSMパラメータストアに格納
    cdk-ecspresso-stack.ts

    View Slide

  15. 構築のポイント
    ● ecspresso側:SSMパラメータストアの値を参照
    ecspresso.yml ecs-service-def.json

    View Slide

  16. ● AWS CDK + ecspressoの構成ファイルを用意します。
    ➔ devcontainerの設定ファイルを準備した上で、
    Github Codespacesを立ち上げます。
    ● Github Codespaces上でクレデンシャルを設定しま
    す。
    ● cdk deploy と ecspresso deploy を実行すれば完成!
    構築レシピ📖

    View Slide

  17. ● AWS CDK + ecspressoの構成ファイルを用意します。
    ➔ devcontainerの設定ファイルを準備した上で、
    Github Codespacesを立ち上げます。
    構築レシピ📖

    View Slide

  18. Dockerfile🐋
    ● Codespaces立ち上げ時に、CDKとecspressoの環境構

    View Slide

  19. ● AWS CDK + ecspressoの構成ファイルを用意します。
    ● devcontainerの設定ファイルを準備した上で、
    Github Codespacesを立ち上げます。
    ➔ Github Codespaces上でクレデンシャルを設定しま
    す。
    ● cdk deploy と ecspresso deploy を実行すれば完成!
    構築レシピ📖

    View Slide

  20. ● AWS CDK + ecspressoの構成ファイルを用意します。
    ● devcontainerの設定ファイルを準備した上で、
    Github Codespacesを立ち上げます。
    ➔ Github Codespaces上でクレデンシャルを設定しま
    す。
    事前に設定済!
    構築レシピ📖

    View Slide

  21. 本日Demoするのは...🍽
    ● AWS CDK + ecspressoの構成ファイルを用意します。
    ● devcontainerの設定ファイルを準備した上で、
    Github Codespacesを立ち上げます。
    ● Github Codespaces上でクレデンシャルを設定しま
    す。
    ➔ cdk deploy と ecspresso deploy を実行すれば完成!
    Github Codespacesの立ち上げ後、3コマンドで構築
    完了
    cdk deploy CdkEcspressoStack
    cd ecspresso
    ecspresso deploy

    View Slide

  22. Demo内容

    View Slide

  23. ● Code > Codespaces > 準備したコンテナを選択
    Github Codespacesの立ち上げ

    View Slide

  24. cdk deploy(確認で'y'を選択しEnter)

    View Slide

  25. cdk deploy(デプロイ中)

    View Slide

  26. cdk deploy(デプロイ完了)

    View Slide

  27. cdk deploy(CloudFormation上で結果を確認)
    ※ SSMパラメータ数が多いと、案外リソース数も多くなるので注意

    View Slide

  28. ecspresso deploy(デプロイ完了)
    ※ ecs-task-def.jsonでdesiredCount:1としているので、タスクが1
    台起動

    View Slide

  29. ecspresso deploy(デプロイ完了)
    ※ ALBのDNS名:8080でnginxコンテナへアクセス

    View Slide

  30. ● 実行コマンドを逆順に実行していくのみ
    ● まず、ECSタスク`nginx`の停止(マネコン上)
    ● 次に、ecspresso deleteの実行
    ● 最後に、cdk destroy CdkEcspressoStackの実行
    おまけ:片付け手順

    View Slide

  31. ● Githubでサンプルコードを公開しています。
    ● 今回のデモと同様の手順を試せる状態となっています
    ので、宜しければお試しください!
    https://github.com/yoyoyo-pg/cdk-ecspresso
    おまけ:サンプルコード

    View Slide

  32. ● AWS CDKでクラウドアプリケーションを開発するため
    のベストプラクティス - Amazon Web Services ブログ
    https://aws.amazon.com/jp/blogs/news/best-prac
    tices-for-developing-cloud-applications-with-aws-
    cdk/
    ● ecspresso handbook v2対応版 - Zenn
    https://zenn.dev/fujiwara/books/ecspresso-handb
    ook-v2
    参考文献

    View Slide