AWS認定資格 WEB問題集&徹底解説

デベロッパー–アソシエイト

AWS Serverless Application Model (AWS SAM) の概要と試験出題ポイントは?

AWSサービスの一つであるAWS Serverless Application Model (AWS SAM)はどんな内容なのでしょうか?また、AWS認定資格のデベロッパー-アソシエイト(DVA)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います

AWS SAM 徹底解説 | AWS認定試験の頻出ポイントまとめ

1. サービス概要

AWS SAM(Serverless Application Model)は、サーバーレスアプリケーションを構築・デプロイするためのオープンソースのフレームワークです。CloudFormationを拡張した簡潔な構文(template.yaml)でLambda関数・API Gateway・DynamoDBテーブル等のサーバーレスリソースを定義できます。

SAM CLIを使うことで、ローカルでのテスト・ビルド・デプロイが容易になり、サーバーレスアプリの開発体験を大幅に向上させます。

2. 主な特徴と機能

2.1 SAMテンプレート(template.yaml)

CloudFormationテンプレートの拡張。Transform: AWS::Serverless-2016-10-31を宣言することで、サーバーレス専用の簡潔なリソースタイプが使用可能になります。

  • AWS::Serverless::Function: Lambda関数(イベントソース・IAMポリシー・環境変数を簡潔に定義)。
  • AWS::Serverless::Api: API Gateway。
  • AWS::Serverless::SimpleTable: DynamoDBテーブル。
  • AWS::Serverless::StateMachine: Step Functions。

SAMテンプレートはデプロイ時に標準のCloudFormationテンプレートに変換(Transform)されます。

2.2 SAM CLI

  • sam init: サンプルプロジェクトの初期化。
  • sam build: 依存パッケージを含むデプロイパッケージをビルド。
  • sam local invoke / sam local start-api: Dockerを使ってLambda/API Gatewayをローカルで実行・テスト。
  • sam deploy: CloudFormation経由でAWSにデプロイ(sam deploy --guidedで対話的設定)。

2.3 安全なデプロイ(CodeDeploy統合)

SAMはLambdaのトラフィックシフト(カナリア/リニア)をCodeDeployと統合して簡単に設定できます。DeploymentPreferenceでCanary10Percent5Minutes等を指定し、CloudWatchアラームと連携した自動ロールバックも可能。

2.4 SAM Accelerate(sam sync)

sam syncでコード変更を高速にクラウドに反映し、開発中のイテレーションを高速化。

3. アーキテクチャおよび技術要素

  1. template.yamlでサーバーレスリソースを定義。
  2. sam buildでコードと依存パッケージをビルド。
  3. sam local invokeでローカルテスト(Dockerコンテナ内でLambdaを実行)。
  4. sam deployでSAMテンプレートをCloudFormationに変換してデプロイ。

SAMとCloudFormationの関係: SAMはCloudFormationの上に構築された拡張。SAMテンプレートはデプロイ時にCloudFormationが処理(Macroによる変換)し、最終的にCloudFormationスタックとして管理される。

4. セキュリティと認証・認可

  • SAMポリシーテンプレート: 一般的なIAM権限(DynamoDBへの読み書き等)をポリシーテンプレートで簡潔に付与。最小権限の実現を容易にする。
  • IAMロールの自動生成: Lambda関数のIAM実行ロールをSAMが自動生成。
  • CloudFormation IAM: デプロイ時のCloudFormation実行ロールで権限を制御。

5. 料金形態

  • SAM/SAM CLI: 無料(オープンソースフレームワーク)。
  • デプロイされるリソース(Lambda・API Gateway・DynamoDB・CloudFormation等)の利用料金が発生。

6. よくあるアーキテクチャ・設計パターン

  • サーバーレスAPIの構築: template.yamlでLambda + API Gateway + DynamoDBを定義→sam deployで一括プロビジョニング。
  • CI/CDパイプライン: CodePipeline → CodeBuild(sam build/sam package)→ CloudFormation(SAMデプロイ)。
  • 安全なLambdaデプロイ: DeploymentPreferenceでカナリアデプロイ→CloudWatchアラーム監視→失敗時に自動ロールバック。

7. 設定・デプロイ手順(ハンズオン例)

  1. SAM CLIをインストール→ sam init でサンプルプロジェクトを作成。
  2. template.yamlでLambda関数・API Gateway・DynamoDB等を定義。
  3. sam local invoke でローカルテスト(Docker使用)。
  4. sam buildsam deploy --guided でAWSにデプロイ。
  5. デプロイされたCloudFormationスタックを確認して動作テスト。

8. 試験で問われやすいポイント

8.1 SAMの役割

  • Q: サーバーレスアプリケーションを簡潔なテンプレートで定義・デプロイするフレームワークは?
    A: AWS SAM(Serverless Application Model)。CloudFormationを拡張したtemplate.yamlでLambda/API Gateway/DynamoDB等を簡潔に定義。

8.2 SAMとCloudFormationの関係

  • Q: SAMテンプレートはどのように処理されるか?
    A: Transform: AWS::Serverless-2016-10-31宣言によりデプロイ時に標準のCloudFormationテンプレートに変換される。最終的にCloudFormationスタックとして管理。

8.3 ローカルテスト

  • Q: Lambda関数をローカルでテストするには?
    A: SAM CLIの sam local invoke / sam local start-api(Dockerコンテナ内でLambda実行環境を再現)。

8.4 安全なデプロイ

  • Q: SAMでLambdaのカナリアデプロイを実現するには?
    A: AWS::Serverless::FunctionのDeploymentPreferenceでCanary/Linearを指定(CodeDeployと統合)。CloudWatchアラームで自動ロールバックも設定可能。