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

Java アプリとAWS の良い関係 - AWS でJava アプリを実行する一番簡単な方法教えます / AWS for Javarista

Java アプリとAWS の良い関係 - AWS でJava アプリを実行する一番簡単な方法教えます / AWS for Javarista

JJUG CCC 2022 Spring の登壇資料です。AWS でJava アプリ実行する方法について、ご紹介しています。

kanamsasa

June 19, 2022
Tweet

More Decks by kanamsasa

Other Decks in Programming

Transcript

  1. © 2022, Amazon Web Services, Inc. or its affiliates.
    © 2022, Amazon Web Services, Inc. or its affiliates.
    Java アプリとAWS の良い関係
    AWS でJava アプリを実⾏する
    ⼀番簡単な⽅法教えます
    宇賀神 みずき、下川 賢介、⾦森 政雄
    ソリューションアーキテクト
    アマゾン ウェブ サービス ジャパン合同会社

    View Slide

  2. • ⽇常に⾝近なテーマで
    AWSを試せるハンズオン
    • 初⼼者向け解説コンテンツ
    • グラレコでAWSサービス解説
    • クラウド最新技術動向の解説記事
    メールメンバー登録で、
    毎⽉クレジットコードを受け取ることもできま
    す。
    builders.flash ~デベロッパーのための AWS 公式ウェブマガジン~
    AWS のエンジニアたちによる
    楽しみながら学べる 最新記事を毎⽉掲載 !
    https://go.aws/3miM3Os

    View Slide

  3. © 2022, Amazon Web Services, Inc. or its affiliates.
    こんにちは!
    宇賀神 みずき
    @syobochim
    ⾦森 政雄
    @masaosaan
    下川 賢介
    @_kensh

    View Slide

  4. © 2022, Amazon Web Services, Inc. or its affiliates.
    このセッションの対象者
    • Javaを使ったアプリケーション開発をしている
    • アプリケーションを簡単に公開したい
    • AWSのことはなんとなく知ってる / 興味がある
    • インフラの管理はしたくない 🧑💻👩💻

    View Slide

  5. © 2022, Amazon Web Services, Inc. or its affiliates.
    このセッションのゴール
    • AWSでJavaのアプリケーションを
    簡単に開発 / 公開する⽅法がわかる!
    • JavaのアプリケーションをAWSを活⽤して
    より良くしていくための⽅法がわかる!
    AWSでJava良さそう!
    使ってみるか!って
    思っていただけると
    嬉しいです!

    View Slide

  6. © 2022, Amazon Web Services, Inc. or its affiliates.
    クラウドを使うって…開発が楽になるとは⾔うけど…
    • Kubernetesとか覚えないとダメなんでしょ?
    それはハードルが⾼いし…
    • AWSのサービスっていっぱいあってよくわからない…
    • AWSのサンプルもNode.jsとかPythonばっかりじゃない?
    • 仮想マシンを今更使うのも…
    • ネットワークの設定とかも⾯倒…
    🤔
    結局アプリ開発者がやるのは⼤変そう…

    View Slide

  7. © 2022, Amazon Web Services, Inc. or its affiliates.
    もっとッッッッッッ
    簡単にッッッッッッ
    ⼿早くッッッッッッ
    いい感じにッッッ
    動かしたいッッッッ!!!!!!!

    View Slide

  8. © 2022, Amazon Web Services, Inc. or its affiliates.
    AWS サービスを組み合わせてインフラを構築
    🙆 柔軟性は高い
    VPC (ネットワーク)
    Fargate (コンピュート)
    ECS (オーケストレーション)
    ALB (ロードバランサ)
    AWS Auto Scaling (オートスケール)
    CodeBuild (CI/CD)
    😅 手間がかかる

    View Slide

  9. © 2022, Amazon Web Services, Inc. or its affiliates.
    • ⼿元で動くアプリケーションを⼿軽にクラウド上にデプロイしたい
    • アプリケーションを動かしたいのであってインフラを組み⽴てたいわけではない
    • AWS おすすめの構成であらかじめ出来上がったインフラを使いたい
    • ソースコードやコンテナイメージをプッシュしたらそのままデプロイ
    Java開発者の皆さんがやりたいこと

    View Slide

  10. © 2022, Amazon Web Services, Inc. or its affiliates.
    VPC (ネットワーク)
    Fargate (コンピュート)
    ECS (オーケストレーション)
    ALB (ロードバランサ)
    AWS Auto Scaling (オートスケール)
    CodeBuild (CI/CD)

    View Slide

  11. © 2022, Amazon Web Services, Inc. or its affiliates.
    AWS App Runner
    インフラや AWS についての経験がなくても、
    コンテナ化されたウェブアプリケーションや API を
    簡単かつ迅速に AWS 上で動かせるサービス
    構築済みのインフラにすぐにデプロイ

    View Slide

  12. © 2022, Amazon Web Services, Inc. or its affiliates.
    ソースコード
    リポジトリ
    既存ツールを用いた
    コンテナイメージのビル

    コンテナイメージを
    ECR にプッシュ
    開発チーム
    App Runner による
    アプリケーションのビルド自動実行
    アプリケーションの
    デプロイ
    or
    AWS Copilot CLI からのデプロイにも対応
    柔軟なアプリケーションのビルドとデプロイ

    View Slide

  13. © 2022, Amazon Web Services, Inc. or its affiliates.
    App Runnerを使えばアプリをサクッと公開できる!
    AWS App Runner

    View Slide

  14. © 2022, Amazon Web Services, Inc. or its affiliates.
    こんな時はどうすればいい?
    例)ショッピングサイトで
    画像をアップロードしたらスマホ⽤・PC⽤にリサイズしたい
    ・アップロード処理の中で画像をリサイズする?
    ・夜間にバッチ処理で⼀括リサイズする?

    View Slide

  15. © 2022, Amazon Web Services, Inc. or its affiliates.
    サーバーレスで⾮同期処理を簡単に追加できる!
    AWS App Runner
    Amazon S3
    AWS
    Lambda
    例えば
    画像をAmazon S3に格納してそこからAWS Lambdaを呼び出す
    画像のリサイズ

    View Slide

  16. © 2022, Amazon Web Services, Inc. or its affiliates.
    AWS Lambda
    • サーバーのプロビジョニング/管理なしでプログラムを実⾏できるサービス
    • コードの実⾏やスケーリングに必要なことは、Lambda 側で実施するので
    開発者の⽅はコードを書くことにより集中できる
    • リクエストベースの料⾦体系
    実⾏回数
    (無料枠あり)
    実⾏時間
    (単価は確保したメモリによる)
    (無料枠あり)
    https://go.aws/3mXNy4Q
    参考) AWS Lambda の料⾦

    View Slide

  17. © 2022, Amazon Web Services, Inc. or its affiliates.
    https://xxxxx.execute-api.
    <>.
    amazonaws.com/Prod/
    構成・設定
    - URL
    - 認証
    - キャッシュ
    - 関数紐付け
    ※ デフォルトURL
    カスタムURL設定可能
    public class App implements RequestHandlerAPIGatewayProxyResponseEvent> {
    public APIGatewayProxyResponseEvent handleRequest(final
    APIGatewayProxyRequestEvent input, final Context context) {
    Map headers = new HashMap<>();
    headers.put("Content-Type", "application/json");
    headers.put("X-Custom-Header", "application/json");
    APIGatewayProxyResponseEvent response = new
    APIGatewayProxyResponseEvent()
    .withHeaders(headers);
    try {
    final String pageContents =
    this.getPageContents("https://checkip.amazonaws.com");
    String output = String.format("{ ¥"message¥": ¥"hello world¥", ¥"location¥":
    ¥"%s¥" }", pageContents);
    return response
    .withStatusCode(200)
    .withBody(output);
    } catch (IOException e) {
    return response
    .withBody("{}")
    .withStatusCode(500);
    }
    }
    private String getPageContents(String address) throws IOException{
    URL url = new URL(address);
    try(BufferedReader br = new BufferedReader(new
    InputStreamReader(url.openStream()))) {
    return br.lines().collect(Collectors.joining(System.lineSeparator()));
    }
    }
    }
    ※ Java の場合
    getAllItemsFunction
    - テーブル
    - データ
    - テーブル
    - データ
    or
    RDS
    AWS Lambda
    DynamoDB

    View Slide

  18. © 2022, Amazon Web Services, Inc. or its affiliates.
    AWS Lambda のスケールの仕組み
    f(x) = {…}
    g(x) = {…}
    h(x) = {…}
    f(x)
    g(x)
    h(x)
    リソース管理
    (cpu/ memory/ version)
    f(x)
    リトライ管理
    ログ出力
    トレース管理
    g(x) h(x)
    API呼び出し
    イベント
    データ変更
    イベント
    ファイル配置
    イベント
    デプロイメント
    管理
    Amazon API Gateway
    Amazon DynamoDB Amazon S3

    View Slide

  19. © 2022, Amazon Web Services, Inc. or its affiliates.
    SAM による Serverless 構築の流れ
    SAM
    template CloudFormation
    AWSリソース
    ロード 作成/変更/削除
    トランスパイル
    SAM
    CloudFormation
    Stack

    View Slide

  20. © 2022, Amazon Web Services, Inc. or its affiliates.
    AWS SAM とは?
    AWS SAM transform AWS SAM CLI
    • リソースとイベントソースマッピ
    ングを表現するための短縮構⽂
    • サーバーレスアプリケーションの
    コード (IaC) としての
    インフラストラクチャを提供
    • サーバーレスアプリケーションの
    ローカル開発、デバッグ、ビル
    ド、パッケージ化、デプロイのた
    めのツールを提供
    AWSでサーバーレスアプリケーションを構築するための
    オープンソースのフレームワーク → 2つの要素で構成

    View Slide

  21. © 2022, Amazon Web Services, Inc. or its affiliates.
    AWS SAM CLI
    1) アプリケーションのひな形を⽣成
    2) ローカル環境でビルド
    3) ビルド後にAWS へデプロイ
    SAM CLI
    $ sam init --runtime java11
    $ cd sam-app
    $ sam build
    $ sam deploy --guided

    View Slide

  22. © 2022, Amazon Web Services, Inc. or its affiliates.
    SAM による Serverless 構築の流れ
    SAM
    template CloudFormation
    AWSリソース
    ロード 作成/変更/削除
    トランスパイル
    SAM
    CloudFormation
    Stack
    $ sam init $ sam build $ sam deploy

    View Slide

  23. © 2022, Amazon Web Services, Inc. or its affiliates.
    AWS SAM CLI での ローカルテスト
    1. ローカル起動用の Dummy Event データ生成
    2. ローカルでLambdaを eventデータを指定して実行
    SAM CLI
    $ sam local invoke -e event.json
    $ sam local generate-event ¥
    apigateway aws-proxy ¥
    --path datadog_report ¥
    --method GET > event.json
    event.json

    View Slide

  24. © 2022, Amazon Web Services, Inc. or its affiliates.
    [再掲] サーバーレスで⾮同期処理を簡単に追加できる!
    AWS App Runner
    Amazon S3
    AWS
    Lambda
    例えば
    画像をAmazon S3に格納してそこからAWS Lambdaを呼び出す
    画像のリサイズ

    View Slide

  25. © 2022, Amazon Web Services, Inc. or its affiliates.
    Prediction One: AI-supported software development takes hold
    Software development is a creative process, but one that has many repetitive
    tasks. In 2022, ML will begin to play a major role in augmenting software
    developers’ workstreams, helping them create more secure and reliable code.
    ソフトウェア開発はクリエイティブなプロセスですが、多くの繰り返し作業が
    あります。2022年には、ソフトウェア開発者のワークストリームを強化し、
    より安全で信頼性の高いコードの作成を支援する上で、MLが大きな役割を
    果たすようになり始めていくでしょう。
    「Tech Predictions for 2022 and Beyond 」 Werner Vogels (CTO, Amazon.com)
    https://www.allthingsdistributed.com/2021/12/tech-prediction-for-2022-and-beyond.html

    View Slide

  26. © 2022, Amazon Web Services, Inc. or its affiliates.
    Amazon CodeGuru
    コードに⽋陥がある部分やアプリケーションで
    最も実⾏コストが⾼い箇所を特定し、
    改善⽅法含め推奨事項を⽣成する
    機械学習をベースとした開発者向けのサービス

    View Slide

  27. © 2022, Amazon Web Services, Inc. or its affiliates.
    Amazon CodeGuru Profiler
    Amazon CodeGuru Reviewer
    • アプリケーションのパフォーマンス状況
    を可視化し、最も実⾏コストが⾼いコー
    ド⾏を特定
    • 改善⽅法を提⽰することでインフラスト
    ラクチャ費⽤の削減に繋がる
    • 機械学習を駆使し、クリティカルな
    問題や発⾒が困難なバグを特定
    • 改善⽅法を提⽰することでコード品
    質の維持に繋がる
    CodeGuruが提供する2つの機能

    View Slide

  28. © 2022, Amazon Web Services, Inc. or its affiliates.
    ⼀般的な開発フローにおけるCodeGuruの⽴ち位置
    本番環境でパフォーマンス
    とコストにおける改善点を
    容易に特定
    Amazon CodeGuru Profiler
    最も実⾏コストが⾼
    いコード⾏の検知及
    び最適化
    実⽤的な推奨事項を
    ⽣成するビルトイン
    のコードレビュー
    Amazon CodeGuru Reviewer
    コーディング
    + レビュー
    ビルド
    + テスト
    デプロイ 計測 改善

    View Slide

  29. © 2022, Amazon Web Services, Inc. or its affiliates.
    © 2022, Amazon Web Services, Inc. or its affiliates.
    Amazon CodeGuru Reviewer
    32

    View Slide

  30. © 2022, Amazon Web Services, Inc. or its affiliates.
    コードレビュープロセスは煩雑である
    レビュアー
    コードレビュー
    PULL
    REQUEST
    承認
    GitHub
    Atlassian
    Bitbucket
    AWS Cloud9
    AWS CodeCommit

    View Slide

  31. © 2022, Amazon Web Services, Inc. or its affiliates.
    Amazon CodeGuru Reviewer
    • Amazon CodeGuru Reviewerにより、開発者は機械学習のメリットを享受し、
    ⾃動的にベストプラクティに沿っていない問題箇所を特定することができ、
    本番環境に影響を与える可能性のある問題を未然に防ぐことができる
    • Amazon CodeGuru Reviewer ではコードの具体的な改善⽅法も推奨事項に
    含まれており、開発者はコード例や関連ドキュメントを参照することが可能
    • 開発者はAmazon CodeGuru Reviewerをコードレビュアーの⼀員として
    みなすことができ、追加のソフトウェアのインストールは不要、
    現在のの開発ワークフローに変更なく簡単に利⽤を始められる

    View Slide

  32. © 2022, Amazon Web Services, Inc. or its affiliates.
    コードレビュープロセスは煩雑である
    コードレビュー
    PULL
    REQUEST
    承認
    GitHub
    Atlassian
    Bitbucket
    AWS Cloud9
    AWS CodeCommit
    CodeGuru
    Reviewer

    View Slide

  33. © 2022, Amazon Web Services, Inc. or its affiliates.
    Amazon CodeGuru Reviewer 推奨事項のサンプル
    • 導⼊作業はリポジトリを
    Amazon CodeGuru
    Reviewerに紐付けるのみ
    • Pull Requestに対して
    CodeGuru Reviewerがコ
    メントを残す
    • リポジトリ解析の場合、
    マネジメントコンソール
    もしくはAPIで結果を確認
    できる
    • 各推奨事項には改善⽅法
    も提⽰される

    View Slide

  34. © 2022, Amazon Web Services, Inc. or its affiliates.
    Amazon CodeGuru Detector Library
    • CodeGuru Reviewer の検出項⽬が詳しく解説されているリソース集
    New!
    https://go.aws/3xC4NNQ

    View Slide

  35. © 2022, Amazon Web Services, Inc. or its affiliates.
    Amazon CodeGuru Detector Library
    New!
    各検出項目のページでは以下の情報を
    確認できます:
    • 検出項目の概要
    • 検出項目の重大性 (Critical, High,
    Medium, Low, Infor の5段階)
    • 関連する CWE (Common Weakness
    Enumeration)
    • 問題が該当する実装例
    • 問題を回避できる実装例

    View Slide

  36. © 2022, Amazon Web Services, Inc. or its affiliates.
    [再掲] このセッションのゴール
    • AWSでJavaのアプリケーションを
    簡単に開発 / 公開する⽅法がわかる!
    • JavaのアプリケーションをAWSを活⽤して
    より良くしていくための⽅法がわかる!
    AWSでJava良さそう!
    使ってみるか!って
    思っていただけると
    嬉しいです!

    View Slide

  37. © 2022, Amazon Web Services, Inc. or its affiliates.
    さらに学びたい⽅は

    View Slide

  38. • ⽇常に⾝近なテーマで
    AWSを試せるハンズオン
    • 初⼼者向け解説コンテンツ
    • グラレコでAWSサービス解説
    • クラウド最新技術動向の解説記事
    メールメンバー登録で、
    毎⽉クレジットコードを受け取ることもできます。
    builders.flash ~デベロッパーのための AWS 公式ウェブマガジン~
    AWS のエンジニアたちによる
    楽しみながら学べる 最新記事を毎⽉掲載 !
    https://go.aws/3miM3Os

    View Slide

  39. © 2022, Amazon Web Services, Inc. or its affiliates.
    AWS Hands-on for Beginners
    • 動画にそって実際に ⼿を動かしながら
    AWS の使い⽅を学ぶ 無償コンテンツ
    • オンデマンド 形式で公開しており、
    いつでもどこでもご視聴いただける
    • 短い動画 x 5-10本 という形式で
    スキマ時間でも学ぶことが可能
    • 現在、22 のコンテンツを公開中
    https://go.aws/3Hvj2bX
    ▲ 「AWS ハンズオン」で検索 or
    クラウド活⽤資料集 > ハンズオン資料

    View Slide

  40. © 2022, Amazon Web Services, Inc. or its affiliates.
    Thank you!
    © 2022, Amazon Web Services, Inc. or its affiliates.

    View Slide

  41. © 2022, Amazon Web Services, Inc. or its affiliates.
    © 2022, Amazon Web Services, Inc. or its affiliates.
    Appendix.

    View Slide

  42. © 2022, Amazon Web Services, Inc. or its affiliates.
    © 2022, Amazon Web Services, Inc. or its affiliates.
    セッションに関連する
    AWS Blog / Builders.flash記事

    View Slide

  43. © 2022, Amazon Web Services, Inc. or its affiliates.
    AWS Blog
    • AWS App2Container と AWS App Runner の統合によるモダナイゼーションシ
    ナリオの拡充
    URL: https://go.aws/3HEucv1
    • AWS App Runner の VPC ネットワーキングに Dive Deep する
    URL: https://go.aws/3mWK8iF
    Builders.flash
    • ⼤量リクエストを低コストでさばく AWS Lambda 関数を JVM で実現
    URL: https://go.aws/3QqDXAZ
    • 機械学習でコードレビューを⾃動化 ! Amazon CodeGuru 3 分間クッキング
    URL: https://go.aws/3b9B7A3

    View Slide

  44. © 2022, Amazon Web Services, Inc. or its affiliates.
    © 2022, Amazon Web Services, Inc. or its affiliates.
    もう少しだけ
    AWS App Runner について
    47

    View Slide

  45. © 2022, Amazon Web Services, Inc. or its affiliates.
    App Runner のアーキテクチャ
    AWS App Runner
    お客様のアプリケーション
    フロントエンド API
    オーケストレーションワークフロー
    ビルド
    (CodeBuild)
    ホスティング
    (Fargate, VPC)
    ロードバランサとヘルスチェック
    (Envoy)
    カスタムドメイン
    (NLB)
    オートスケール
    (Request-based)
    CICD
    (Webhook, CloudWatch Events)
    安全なデプロイ
    (Blue-green)
    実行環境へのパッチ適用
    (ECR)
    ホストマシンへのパッチ適用
    (Fargate)
    Deployment & Application Logs
    (CW Logs)
    メトリクス
    (CloudWatch Metrics)
    暗号化
    (KMS)
    App Runner によりお客様が管理しなくてよくなるもの
    ECR public ECR private
    GitHub

    View Slide

  46. © 2022, Amazon Web Services, Inc. or its affiliates.
    オートスケール
    同時実⾏数*1 に応じてオートスケール
    しきい値とコンテナの最⼩/最⼤数を決めるだけ
    *1: https://go.aws/39vcGN5

    View Slide

  47. © 2022, Amazon Web Services, Inc. or its affiliates.
    同時実⾏数について
    50
    ロードバランサー
    アプリケーションコンテナ
    キュー
    リクエスト
    クライアント
    同時リクエスト数が閾値に到達
    スケールアウト開始
    キュー アプリケーションコンテナ

    View Slide

  48. © 2022, Amazon Web Services, Inc. or its affiliates.
    コンテナインスタンス課⾦
    プロビジョンドインスタンス
    z
    z
    Z
    アクティブインスタンス
    ・アイドル状態のインスタンス
    ・メモリに対して時間課金が発生
    ・リクエスト処理中のインスタンス
    ・CPU とメモリに対して時間課金が発生
    ・$0.009/GB/時 ・$0.081/vCPU/時, $0.009/GB/時
    ※ 2022 年 3 月時点の情報です
    ※ 東京リージョンの価格です

    View Slide

  49. © 2022, Amazon Web Services, Inc. or its affiliates.
    アクティブインスタンス
    コンテナインスタンス
    ロードバランサー
    ネットワーク (VPC)
    App Runner
    ・CPU とメモリに対して時間課金が発生
    ・オートスケールによって増減
    ・リクエスト処理中のインスタンス

    View Slide

  50. © 2022, Amazon Web Services, Inc. or its affiliates.
    プロビジョンドインスタンス
    コンテナインスタンス
    ロードバランサー
    ネットワーク (VPC)
    App Runner
    ・アイドル状態のインスタンス
    ・メモリに対して時間課金が発生
    ・レイテンシを抑える狙い
    ・オートスケール設定の最小台数
    z
    z
    z
    z
    z
    z

    View Slide

  51. © 2022, Amazon Web Services, Inc. or its affiliates.
    © 2022, Amazon Web Services, Inc. or its affiliates.
    App Runner VPC サポート
    54

    View Slide

  52. © 2022, Amazon Web Services, Inc. or its affiliates.
    VPC ネットワーキングモードの始め⽅
    • VPC コネクタを作成する
    § VPC
    § サブネット
    § セキュリティグループ
    • App Runner サービスを起動するときに作成した VPC コネクタを
    選択する
    トラフィックがどう流れるかは次のスライドで👉

    View Slide

  53. © 2022, Amazon Web Services, Inc. or its affiliates.
    VPC ネットワーキングモード
    56
    App Runner VPC Fargate VPC
    Task
    Task
    ENI
    NLB
    ENI
    NAT
    Gateway
    ECR
    App Runner
    Request Router
    コンテナイメージの
    pull は ENI 経由
    ENI
    ENI
    Customer VPC
    Subnet A
    Subnet B
    ENI
    ENI
    Fargate VPC から
    Customer VPC へのルーティングは
    AWS Hyperplane を使用
    Aurora
    Aurora
    Internet
    Gateway

    View Slide

  54. © 2022, Amazon Web Services, Inc. or its affiliates.
    つまり VPC ネットワーキングモードの場合
    ネットワーク (VPC)
    App Runner
    コンテナインスタンス
    Private subnet
    Customer VPC
    Aurora
    ENI
    AWS Hyperplane
    Private
    subnet
    Customer VPC
    NAT Gateway
    Internet
    Gateway
    ENI
    AWS Hyperplane

    View Slide

  55. © 2022, Amazon Web Services, Inc. or its affiliates.
    つまり VPC ネットワーキングモードの場合
    ネットワーク (VPC)
    App Runner
    コンテナインスタンス
    Private subnet
    Customer VPC
    Aurora
    ENI
    AWS Hyperplane
    Private
    subnet
    Customer VPC
    NAT Gateway
    Internet
    Gateway
    ENI
    AWS Hyperplane
    VPC ネットワーキングモードであっても
    コンテナはお客様の VPC で動くわけではない
    VPC ネットワーキングモードで
    コンテナからインターネットに接続する場合は
    VPC コネクションを作るサブネットから
    インターネットへの経路を準備する必要がある

    View Slide

  56. © 2022, Amazon Web Services, Inc. or its affiliates.
    © 2022, Amazon Web Services, Inc. or its affiliates.
    AWS SAM Accelerate
    ~開発中のLambda デプロイをより⾼速に~
    59

    View Slide

  57. © 2022, Amazon Web Services, Inc. or its affiliates.
    SAM deploy
    60
    開発者
    sam build sam deploy
    ソースコード
    template.yaml
    (SAMテンプレート)
    Amazon API Gateway
    AWS Lambda
    AWS Step Functions
    ⾃動CFnスタック
    デプロイ/更新
    ビルドして デプロイして 待つ
    コーディングして
    作成/更新
    SAMアプリケーションの初回デプロイ後、"ソースコード更新のみ"
    であっても、CloudFormationスタックの更新が必要

    View Slide

  58. © 2022, Amazon Web Services, Inc. or its affiliates.
    SAM sync
    61
    開発者
    sam sync --watch
    ソースコード
    Amazon API Gateway
    AWS Lambda
    AWS Step Functions
    「コード」の変更は
    各サービスAPIで更新
    (それ以外は従来通り
    CFn更新)
    ビルドして デプロイして 待つ
    コーディングして
    更新
    コードの変更を監視して
    インクリメンタルビルド
    & ⾃動デプロイ
    (1分弱 → 数秒程度に)
    変更監視
    template.yaml
    (SAMテンプレート)
    開発者の繰り返しテスト(コード変更)における 開発体験 & 速度Up

    View Slide

  59. © 2022, Amazon Web Services, Inc. or its affiliates.
    SAM sync: 対応リソース
    62
    Amazon API Gateway
    AWS Lambda
    AWS Step Functions
    対応リソース API変更対応内容
    ソースコード変更
    ASL(JSON)変更
    レイヤー変更
    OpenAPI document変更
    上記の組み合わせ以外は、CloudFormationスタック更新によるデプロイになる

    View Slide

  60. © 2022, Amazon Web Services, Inc. or its affiliates.
    開発者向けの集約されたフィードバック
    63
    Amazon CloudWatch Logs
    AWS X-Ray
    ログ(*) や X-Rayトレース情報 を
    SAMコマンドでまとめて
    ローカル環境で表⽰
    > sam logs --stack-name sam-app --tail --include-traces
    > sam traces --tail
    XRay Event at (2022-01-10T21:53:23.338000) with id (1-61dc2c43-0357d27a40a73c4526d1795c) and duration (0.260s)
    - 0.260s - sam-app-HelloWorldFunction-1ILtd5dmAt5k [HTTP: 200]
    - 0.002s - sam-app-HelloWorldFunction-1ILtd5dmAt5k
    - 0.133s - Initialization
    - 0.001s - Invocation
    - 0.000s - Overhead
    2022/01/10/[$LATEST]6c0d6dbb6fe44cbda6d59690e9c0219a 2022-01-10T12:53:23.594000 START RequestId: 545340a6-1322-4e51-9070-
    93a60bbc4d28 Version: $LATEST
    2022/01/10/[$LATEST]6c0d6dbb6fe44cbda6d59690e9c0219a 2022-01-10T12:53:23.596000 Hello, SAM Accelerate!
    2022/01/10/[$LATEST]6c0d6dbb6fe44cbda6d59690e9c0219a 2022-01-10T12:53:23.598000 END RequestId: 545340a6-1322-4e51-9070-
    93a60bbc4d28
    2022/01/10/[$LATEST]6c0d6dbb6fe44cbda6d59690e9c0219a 2022-01-10T12:53:23.598000 REPORT RequestId: 545340a6-1322-4e51-
    9070-93a60bbc4d28 Duration: 1.83 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 37 MB
    Init Duration: 133.29 ms
    XRAY TraceId: 1-61dc2c43-0357d27a40a73c4526d1795c SegmentId: 0b30412d3e54bc5a
    Sampled: true
    New XRay Service Graph
    Start time: 2022-01-10 21:53:23+09:00
    End time: 2022-01-10 21:53:23+09:00
    Reference Id: 0 - AWS::Lambda::Function - sam-app-HelloWorldFunction-1ILtd5dmAt5k - Edges: []
    Summary_statistics:
    - total requests: 1
    - ok count(2XX): 1
    - error count(4XX): 0
    - fault count(5XX): 0
    - total response time: 0.002
    Reference Id: 1 - client - sam-app-HelloWorldFunction-1ILtd5dmAt5k - Edges: [2]
    Summary_statistics:
    - total requests: 0
    - ok count(2XX): 0
    - error count(4XX): 0
    - fault count(5XX): 0
    - total response time: 0
    Reference Id: 2 - (Root) AWS::Lambda - sam-app-HelloWorldFunction-1ILtd5dmAt5k - Edges: [0]
    Summary_statistics:
    - total requests: 1
    - ok count(2XX): 1
    - error count(4XX): 0
    - fault count(5XX): 0
    - total response time: 0.26
    (*) ログは Lambda関数ログ、API Gateway の REST API
    実行ログ, HTTP APIアクセスログ に対応

    View Slide

  61. © 2022, Amazon Web Services, Inc. or its affiliates.
    さらさらに学びたい⽅は

    View Slide

  62. © 2022, Amazon Web Services, Inc. or its affiliates.
    開発者のための開発者による Web セミナーシリーズ
    AWS DevAx::connect 3rd 「rethink CI/CD」(後編)
    rethink CI/CD
    毎週⽊曜 16:00-18:00
    6/30
    スペシャル
    6/23
    k8s/GitOps
    6/23
    IaC/CDK
    6/16
    ロールバック
    6/9
    CI/CDテスト
    https://bit.ly/3tIcEbv

    View Slide

  63. © 2022, Amazon Web Services, Inc. or its affiliates.
    https://go.aws/3OnsX5G

    View Slide