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

AWS SAM update 2021

kensh
January 26, 2022

AWS SAM update 2021

AWS SAM update 2021

kensh

January 26, 2022
Tweet

More Decks by kensh

Other Decks in Technology

Transcript

  1. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS SAM (Serverless Application Model) Updates S e r v e r l e s s M e e t u p J a p a n V i r t u a l # 2 0 - A W S r e : C a p
  2. 2 当セッションの概要 l AWS re:Invent 2021 および その前後から、2022年現在 時点までの、AWS SAM

    関連の主なアップデートをご紹介 します l ご注意 • AWS SAM⾃体の詳細 や 関連サービス(AWS Lambda 等) の解説 は当セッションには含まれていないため、過去の AWS Black Belt Online Seminar をご視聴ください • https://aws.amazon.com/jp/aws-jp-introduction/
  3. 3 当セッションのAgenda l AWS SAM の 概要 〜おさらい〜 l AWS

    SAM Pipelines l AWS SAM Accelerate (Preview/beta) ※DEMO予定 l AWS SAM CLI と AWS CDK のローカルテスト連携
  4. 5 AWS SAM とは? AWSでサーバーレスアプリケーションを構築するための オープンソースのフレームワーク → 2つの要素で構成 AWS SAM

    transform AWS SAM CLI • リソースとイベントソース マッピングを表現するための 短縮構⽂ • サーバーレスアプリケーショ ンのコード (IaC) としての インフラストラクチャを提供 • サーバーレスアプリケーショ ンのローカル開発、デバッグ、 ビルド、パッケージ化、デプ ロイのためのツールを提供
  5. 6 AWS SAM テンプレート AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: GetProductsFunction:

    Type: AWS::Serverless::Function Properties: CodeUri: src/ Handler: app.handler Runtime: python3.9 Policies: - DynamoDBReadPolicy: TableName: !Ref ProductTable Events: GetProductsEvent: Type: Api Properties: Path: /products Method: get ProductTable: Type: AWS::Serverless::SimpleTable わずか20⾏で表現 AWS Lambda 関数 AWS Identity and Access Management (IAM) ロール Amazon API Gateway REST API Amazon DynamoDB テーブル
  6. 7 AWS SAM テンプレート AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: GetProductsFunction:

    Type: AWS::Serverless::Function Properties: CodeUri: src/ Handler: app.handler Runtime: python3.9 Policies: - DynamoDBReadPolicy: TableName: !Ref ProductTable Events: GetProductsEvent: Type: Api Properties: Path: /products Method: get ProductTable: Type: AWS::Serverless::SimpleTable AWS Cloud API Gateway Lambda 関数 DynamoDB テーブル IAMロール これが こうなる
  7. 8 AWS SAM テンプレート AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: GetProductsFunction:

    Type: AWS::Serverless::Function Properties: CodeUri: src/ Handler: app.handler Runtime: python3.9 Policies: - DynamoDBReadPolicy: TableName: !Ref ProductTable Events: GetProductsEvent: Type: Api Properties: Path: /products Method: get ProductTable: Type: AWS::Serverless::SimpleTable { "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "GetProductsFunction": { "Properties": { "Code": { "S3Bucket": "bucket", "S3Key": "value" }, "Handler": "app.lambda_handler", "Role": { "Fn::GetAtt": [ "GetProductsFunctionRole", "Arn" ] }, "Runtime": "python3.9", "Tags": [ { "Key": "lambda:createdBy", "Value": "SAM" } ] }, "Type": "AWS::Lambda::Function" }, "GetProductsFunctionRole": { "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { ... CloudFormation 20 ⾏ 188 ⾏
  8. 9 AWS SAM: AWS CloudFormation の 抽象化 AWS CloudFormation AWS

    SAM AWS SAM は CloudFormation をベースとし、その定義詳細を抽象化
  9. 10 AWS SAM サーバーレスリソース 7serverless resource types AWS::Serverless::Function AWS::Serverless::Api AWS::Serverless::HttpApi

    AWS::Serverless::SimpleTable AWS::Serverless::LayerVersion AWS::Serverless::Application AWS::Serverless::StateMachine SAM Version 2016-10-31
  10. 11 AWS SAM サーバーレスリソース: Function GetProductsFunction: Type: AWS::Serverless::Function Properties: Description:

    Gets product information CodeUri: src/ Handler: app.handler Runtime: python3.9 MemorySize: 1024 Timeout: 15 Tracing: Active Architectures: - arm64 Policies: - DynamoDBReadPolicy: TableName: !Ref ProductTable Environment: Variables: TABLE_NAME: !Ref ProductTable Events: GetProductsEvent: Type: Api Properties: Path: /products Method: get Lambda関数で以下の値が指定可能に x86_64 or arm64 (デフォルト値 は x86_64) Architectures オプションのサポート N ew ! ※併せて AWS::Lambda::LayerVersionリソースにおいても CompatibleArchitectures オプションが追加され、 レイヤーが持つ互換性タイプをリスト形式で指定可能に (デフォルト値は x86_64)
  11. 13 CI/CDパイプライン SAM利⽤時: これまでの開発フロー Build ソースコード 開発者 コードリポジトリ template.yaml (SAMテンプレート)

    Source sam build Deploy Test sam deploy はパイプライン内の要素 sam local SAMを組み込んだCI/CDパイプラインが必要な場合、その整備は別途必要 CI/CDパイプライン 開発者 パイプライン開発 SAM
  12. 14 CI/CDパイプライン このときの悩み ソースコード 開発者 コードリポジトリ CI/CDパイプライン 開発者 パイプライン開発 template.yaml

    (SAMテンプレート) Build Source sam build Deploy Test sam deploy sam local → CI/CDパイプライン開発者の必要性とその開発作業 SAM
  13. 15 CI/CDパイプライン SAM Pipelines ソースコード 開発者 コードリポジトリ CI/CDパイプライン⽤雛形ファイルを⽣成 (例︓CodePipeline⽤CFnテンプレート) template.yaml

    (SAMテンプレート) > sam pipeline bootstrap > sam pipeline init SAMがパイプライン ⾃体も構成(雛形を⽣成) CloudFormation Build Source sam build Deploy Test sam deploy SAM sam local SAMがパイプラインの雛形を⾃動⽣成 → CI/CDパイプラインまでも含めて開発の⽴ち上げを加速 SAM
  14. 16 SAM Pipelines: 対応環境 # 対応ソースコードリポジトリ 1 AWS CodeCommit 2

    Bitbucket 3 GitHub 4 GutHub Enterprise # 対応CI/CDプロバイダ 1 AWS CodePipeline(&CodeBuild) 2 GitLab CI/CD 3 GitHub Actions 4 Jenkins # 対応パッケージング形式 1 ZIP 2 コンテナ (ECRリポジトリ) 作成するCI/CDパイプラインは、以下の組み合わせで作成可能 (sam pipeline init コマンドで対話的に指定可)
  15. 17 SAM Pipelines: 対応環境 # 対応ソースコードリポジトリ 1 AWS CodeCommit 2

    Bitbucket 3 GitHub 4 GutHub Enterprise # 対応CI/CDプロバイダ 1 AWS CodePipeline(&CodeBuild) 2 GitLab CI/CD 3 GitHub Actions 4 Jenkins # 対応パッケージング形式 1 ZIP 2 コンテナ (ECRリポジトリ) 作成するCI/CDパイプラインは、以下の組み合わせで作成可能 (sam pipeline init コマンドで対話的に指定可)
  16. 18 SAM Pipelines: GitHub Actions構成 GitHub Actionsの場合、ジョブステップとしてSAM CLIを実⾏する内容の ワークフロー定義 が作成される

    GitHub Actions Pipeline⽤IAMユーザーの クレデンシャル SAM CLI 1. sam build 2. ロール引受 3. sam package (to 各環境) 4. sam deploy (to 各環境) Pipeline⽤ IAMユーザー クレデンシャル アカウントA︓パイプライン⽤ リージョンX アカウントC︓Prod (本番環境) Dev Pipeline実⾏⽤ ロール Dev CFn実⾏⽤ ロール リージョンY Prod Pipeline実⾏⽤ ロール Prod CFn実⾏⽤ ロール アーティファクト⽤ S3バケット コンテナ⽤ ECRリポジトリ アーティファクト⽤ S3バケット コンテナ⽤ ECRリポジトリ アカウントB︓Dev (開発環境⽤) 参照 ※A〜Cのアカウントを全て同⼀とすることも可能 (Prodアカウントだけ別アカウントにすることも可能) assumeRole可能な 信頼関係を設定
  17. 19 GitHub Actionsワークフロー構成 https://github.com/aws/aws-sam-cli-pipeline-init-templates.git QuickStartテンプレートで構成されるパイプライン アプリケーション ソースコード GitHub リポジトリ (SAMアプリを格納)

    template.yaml (SAMテンプレート) .github/workflow/ pipeline.yaml (GitHub Actions⽤ パイプライン内容を定義) GitHub Actions ワークフロー sam initで初期⽣成 sam pipeline init で初期⽣成 .aws-sam/ pipelineconfig.toml (SAM Pipelines設定) sam pipeline bootstrapで⽣成 参照 ?
  18. 21 GitHub Actionsワークフロー構成 (pipeline.yaml) ⽣成される .github/workflow/ pipeline.yaml name: Pipeline on:

    push: branches: - 'main' - 'feature**' delete: branches: - 'feature**' env: PIPELINE_USER_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} PIPELINE_USER_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} SAM_TEMPLATE: template.yaml TESTING_STACK_NAME: DEV_mystackname TESTING_PIPELINE_EXECUTION_ROLE: arn:aws:iam::123456789012:role/DEV_PiPELINE_ROLE TESTING_CLOUDFORMATION_EXECUTION_ROLE: arn:aws:iam::123456789012:role/DEV_CFN_ROLE TESTING_ARTIFACTS_BUCKET: DEV_MYBUCKET TESTING_IMAGE_REPOSITORY: 123456789012.dkr.ecr.<region>.amazonaws.com/DEV_ECR_REPO TESTING_REGION: <region> PROD_STACK_NAME: PROD_mystackname PROD_PIPELINE_EXECUTION_ROLE: arn:aws:iam::123456789012:role/PROD_PIPELINE_ROLE PROD_CLOUDFORMATION_EXECUTION_ROLE: arn:aws:iam::123456789012:role/DEV_CFN_ROLE PROD_ARTIFACTS_BUCKET: PROD_MYBUCKET PROD_IMAGE_REPOSITORY: 123456789012.dkr.ecr.<region>.amazonaws.com/PROD_ECR_REPO PROD_REGION: <region> jobs: test: if: github.event_name == 'push' runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - run: | # trigger the tests here delete-feature: if: startsWith(github.event.ref, 'feature') && github.event_name == 'delete' runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - uses: aws-actions/setup-sam@v1 - name: Assume the testing pipeline user role uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ env.PIPELINE_USER_ACCESS_KEY_ID }} aws-secret-access-key: ${{ env.PIPELINE_USER_SECRET_ACCESS_KEY }} aws-region: ${{ env.TESTING_REGION }} role-to-assume: ${{ env.TESTING_PIPELINE_EXECUTION_ROLE }} role-session-name: testing-packaging role-duration-seconds: 3600 role-skip-session-tagging: true - name: Delete feature branch stack env: FEATURE_BRANCH_NAME: ${{ github.event.ref }} run: | sam delete \ --stack-name $(echo ${FEATURE_BRANCH_NAME##*/} | tr -cd '[a-zA-Z0-9-]') \ --region ${TESTING_REGION} \ --no-prompts (…以下省略…) 約240⾏ほどの内容 (これをベースに⾃由にカスタマイズ) その GitHubリポジトリ に 「Secret」 を2つ定義 (ワークフ ロー内から変数で利⽤) (例︓AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
  19. 22 GitHub Actionsワークフロー – feature系ブランチ アプリケーション ソースコード GitHub リポジトリ (SAMアプリを格納)

    template.yaml (SAMテンプレート) .github/workflow/ pipeline.yaml (GitHub Actions⽤ パイプライン内容を定義) GitHub Actions ワークフロー sam initで初期⽣成 .aws-sam/ pipelineconfig.toml (SAM Pipelines設定) sam pipeline bootstrapで⽣成 参照 主な処理概要 (feature系ブランチ⽤) • push先ブランチ名が「feature*」の場合、以下を 実⾏して「開発(テスト)環境にデプロイ」 1. actions/checkout@v2 → ソースコードをチェックアウト 2. actions/setup-python@v2 → Python環境をセットアップ 3. aws-actions/setup-sam@v1 → SAM CLIをダウンロード&セットアップ 4. sam build --use-container → SAM CLIでtemplate.yamlを参照してビルド 5. aws-actions/configure-aws-credentials@v1 → 変数を利⽤してPipeline⽤クレデンシャル設定 6. sam deploy → SAM CLIでアプリを開発環境にデプロイ sam pipeline init で初期⽣成
  20. 23 GitHub Actionsワークフロー – mainブランチ アプリケーション ソースコード GitHub リポジトリ (SAMアプリを格納)

    template.yaml (SAMテンプレート) .github/workflow/ pipeline.yaml (GitHub Actions⽤ パイプライン内容を定義) GitHub Actions ワークフロー sam initで初期⽣成 .aws-sam/ pipelineconfig.toml (SAM Pipelines設定) sam pipeline bootstrapで⽣成 参照 主な処理概要 (mainブランチ⽤) • push先ブランチ名が「main」の場合、複数job以下 を実⾏して「テスト」→「各環境にデプロイ」 1. actions/checkout@v2 → ソースコードをチェックアウト 2. actions/setup-python@v2 → Python環境をセットアップ 3. aws-actions/setup-sam@v1 → SAM CLIをダウンロード&セットアップ 4. sam build --use-container → SAM CLIでtemplate.yamlを参照してビルド 5. aws-actions/configure-aws-credentials@v1 → 変数を利⽤してPipeline⽤クレデンシャル設定 6. (統合テスト実⾏) & sam pakckageで⽣成 & actions/upload-artifact@v2 → SAMテンプレート等をArtifactにUpload 7. actions/download-artifact@v2 → SAMテンプレートをArtifactからDownload 8. sam deploy → SAM CLIでアプリを本番環境にデプロイ sam pipeline init で初期⽣成
  21. 25 GitHub Actions - OIDC連携(2021/11〜) aws-actions/configure-aws-credentials@v1 がOIDCプロバイダ経由 でのロール引受に対応 (→ GitHub側にクレデンシャル登録が不要に)

    GitHub リポジトリ GitHub Actionsワークフロー定義 (pipeline.yaml) ジョブステップ1 「IDプロバイダ」 (GitHub Actions⽤) アカウントA︓パイプライン⽤ AWS IAM aws-actions/configure-aws-credentials@v1 ① 引受したいロールAのARNを指定し Web Identityフェデレーション開始 ジョブステップ2 (引受ロールの 権限で動作) SAM CLI ② STS経由で IAMロールA の⼀時 クレデンシャル を取得 ロールA ③ ロールAの権限を持つ ⼀時的なクレデンシャルが返却 ※ご注意1︓SAM Pipelines が⽣成する初期テンプレートでは、このロール引受を利⽤する構成にはなっていないため、変更が必要です ※ご注意2︓ロールの「信頼関係ポリシー」には、必ず引受元リポジトリを限定するためのCondition句を設定ください ロールA 環境変数をセット
  22. 27 SAM Pipelines: GitHub Actions構成 (まとめ) GitHub Actionsの場合、ジョブステップとしてSAM CLIを実⾏する内容の ワークフロー定義

    が作成される GitHub pipeline.yaml内に AWSアクションで ロール引受を指定 SAM CLI 1. sam build 2. ロール引受 3. sam package (to 各環境) 4. sam deploy (to 各環境) Pipeline⽤ IAMロール アカウントA︓パイプライン⽤ リージョンX アカウントC︓Prod (本番環境) Dev Pipeline実⾏⽤ ロール Dev CFn実⾏⽤ ロール リージョンY Prod Pipeline実⾏⽤ ロール Prod CFn実⾏⽤ ロール アーティファクト⽤ S3バケット コンテナ⽤ ECRリポジトリ アーティファクト⽤ S3バケット コンテナ⽤ ECRリポジトリ アカウントB︓Dev (開発環境⽤) assumeRole可能な 信頼関係を設定 ※A〜Cのアカウントを全て同⼀とすることも可能 (Prodアカウントだけ別アカウントにすることも可能) Webフェデレーションでのロール引き受け
  23. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 2021/10/27 Preview
  24. 29 SAM Accelerate "AWS SAM Accelerate aims to increase infrastructure

    accuracy for testing with incremental builds, sam sync, and aggregated feedback for developers" "AWS SAM Accelerateの⽬的は、 インクリメンタルビルド、sam sync、 開発者向けの集約されたフィードバック により、 テストのためのインフラの精度を⾼めることです。" https://aws.amazon.com/blogs/compute/accelerating-serverless-development-with-aws-sam-accelerate/
  25. 30 SAM利⽤時: これまでの開発フロー 開発者 sam build sam deploy ソースコード template.yaml

    (SAMテンプレート) Amazon API Gateway AWS Lambda AWS Step Functions ⾃動CFnスタック デプロイ/更新 ビルドして デプロイして 待つ コーディングして 作成/更新 SAMアプリケーションの初回デプロイ後、"ソースコード更新のみ" であっても、CloudFormationスタックの更新が必要
  26. 31 このときの悩み 開発者 ソースコード Amazon API Gateway AWS Lambda AWS

    Step Functions ⾃動CFnスタック デプロイ/更新 ビルドして デプロイして 待つ コーディングして 待ち時間をもっと短くしたい 作成/更新 sam build sam deploy → 繰り返しの開発/テストではデプロイ時の更新待ち時間が課題に template.yaml (SAMテンプレート)
  27. 32 SAM sync (Preview / 開発⽤機能) 開発者 sam sync --watch

    ソースコード Amazon API Gateway AWS Lambda AWS Step Functions 「コード」の変更は 各サービスAPIで更新 (それ以外は従来通り CFn更新) ビルドして デプロイして 待つ コーディングして 更新 コードの変更を監視して インクリメンタルビルド & ⾃動デプロイ (1分弱 → 数秒程度に) 変更監視 ※初回のデプロイはCloudFormationスタックによるデプロイが⾏われる コード以外の設定変更や、対応するリソースが以外の更新も同様にスタックの更新デプロイが⾏われる ※--watchオプションを⽤いずに、コマンドで同期を⼿動で実⾏することでも利⽤可能 対応するAWSリソースの更新を、CloudFormationではなくAPIで実⾏ → 開発者の繰り返しテスト(コード変更)における 開発体験 & 速度Up template.yaml (SAMテンプレート)
  28. 33 SAM sync: 対応リソース Amazon API Gateway AWS Lambda AWS

    Step Functions 対応リソース API変更対応内容 ソースコード変更 ASL(JSON)変更 レイヤー変更 OpenAPI document変更 上記の組み合わせ以外は、CloudFormationスタック更新によるデプロイになる APIによる更新 に対応するリソース と その内容 は以下が対象 → API Gateway, Lambda, Step Functions の「コード部分」
  29. 34 開発者向けの集約されたフィードバック Amazon CloudWatch Logs AWS X-Ray ログ(*) や X-Rayトレース情報

    を SAMコマンドでまとめて ローカル環境で表⽰ > sam logs --stack-name sam-app --tail --include-traces > sam traces --tail (*) ログは Lambda関数ログ、API Gateway の REST API実⾏ログ, HTTP APIアクセスログ に対応 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
  30. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. DEMO (AWS SAM Accelerate)
  31. 37 AWS SAM CLI と CDK の連携とは? AWS CloudFormation AWS

    SAM SAM は CloudFormation をベースに各種機能を提供
  32. 38 AWS SAM CLI と CDK の連携とは? AWS CloudFormation AWS

    SAM AWS CloudFormation AWS CDK CDK も CloudFormation をベースに各種機能を提供 (ただし、テンプレートではなく ⼀般の開発⾔語 によるIaC)
  33. 39 AWS SAM CLI と CDK の連携とは? SAMテンプレートとSAM CLI によるローカルテスト、ビルド、

    デプロイがもたらす開発者体験 CloudFormationテンプレートでは なく、CDKコンストラクトを⽤いた コーディングによるインフラの実現 AWS CloudFormation AWS SAM AWS CloudFormation AWS CDK
  34. 40 AWS SAM CLI と CDK の連携とは? • リソース定義 •

    ビルド • ローカルテスト • デプロイ • リソース定義 • ビルド • デプロイ AWS CloudFormation AWS SAM AWS CloudFormation AWS CDK
  35. 41 AWS SAM CLI と CDK の連携とは? AWS SAM AWS

    CloudFormation AWS CDK • リソース定義 • ビルド • デプロイ • リソース定義 • ビルド • ローカルテスト • デプロイ + CDKのフレームワークがカバーしない、サーバーレスアプリケーションの 「ローカルテスト」の機能をSAMで補完 サーバーレスアプリケーション開発に CDKを採⽤
  36. 42 CDK with SAM: ローカルテスト cdk synthで⽣成されるテンプレートを⽤いてテスト⽤SAM CLIコマンド が実⾏できる︓sam local

    {invoke | start-api | start-lambda } CDKアプリケーション (スタック) > sam local invoke MyFunction --no-event -t ./cdk.out/CdkSamExampleStack.template.json AWS SAM CLI MyFunction MyAPI > sam local start-api MyAPI -t ./cdk.out/CdkSamExampleStack.template.json ① cdk synth実⾏ ② <cdk-project>/cdk.out/<stackname>.template.json ファイルが⽣成される 前提1︓AWS CDK v1.135.0 以降 または AWS CDK v2.0.0 以降, SAM CLI 1.37.0以降 前提2︓CDKスタック内にLambda関数が含まれること ③ sam local invoke コマンドで利⽤ ④ ローカル環境で実⾏ (コンテナ利⽤)
  37. 43 当セッションのAgenda (再掲) l AWS SAM の 概要 〜おさらい〜 l

    AWS SAM Pipelines l AWS SAM Accelerate (Preview/beta) l AWS SAM CLI と AWS CDK のローカルテスト連携