メニュー
AWS Lambda
開発者ガイド

ステップ 4: AWS SAM と AWS CloudFormation でデプロイ

前のセクションでは、ZIP ファイルとしてデプロイパッケージを指定することにより、AWS Lambda API を使用して Lambda 関数を作成および更新しました。ただし、このメカニズムは、関数のデプロイステップの自動化や、イベントソースやダウンストリームリソースなどのサーバーレスアプリケーションの他の要素に対するデプロイメントや更新を調整するには便利ではない場合があります。

AWS CloudFormation を使用することで、サーバーレスアプリケーションの指定、デプロイ、設定が容易になります。AWS CloudFormation はアマゾン ウェブ サービス リソースのモデル化およびセットアップに役立つサービスです。リソース管理に割く時間を減らし、AWS で実行するアプリケーションにより注力できるようになります。使用するすべての AWS リソース (Lambda 関数や DynamoDB テーブルなど) を記述するテンプレートを作成すれば、AWS CloudFormation がお客さまに代わってこれらのリソースのプロビジョニングや設定を受け持ちます。

さらに、AWS サーバーレスアプリケーションモデルを使用して、サーバーレスアプリケーションを構成するリソースを表現することもできます。Lambda 関数や API のようなこれらのリソースタイプは AWS CloudFormation によって完全にサポートされており、サーバーレスアプリケーションの定義およびデプロイが容易になります。

詳細については、「Lambda ベースのアプリケーションをデプロイする」を参照してください。

Amazon API Gateway アプリケーションの仕様

このアプリケーションの SAM テンプレートを次に示します。下のテキストを .yaml ファイルにコピーし、前のセクションで作成した ZIP パッケージの隣に保存します。Handler および Runtime パラメータ値は、前のセクションで関数を作成したときのものと一致する必要があります。

Copy
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Parameters: NotificationEmail: Type: String Resources: CloudTrailEventProcessing: Type: AWS::Serverless::Function Properties: Handler: handler Runtime: runtime Timeout: 10 MemorySize: 1024 Policies: Statement: - Effect: Allow Action: s3:GetObject Resource: !Sub 'arn:aws:s3:::${Bucket}/*' - Effect: Allow Action: sns:Publish Resource: !Ref Topic Events: PhotoUpload: Type: S3 Properties: Bucket: !Ref Bucket Events: s3:ObjectCreated:* Environment: Variables: SNS_TOPIC_ARN: !Ref Topic Bucket: Type: AWS::S3::Bucket Trail: Type: AWS::CloudTrail::Trail Properties: IsLogging: true S3BucketName: !Ref Bucket Topic: Type: AWS::SNS::Topic Properties: Subscription: - Protocol: email Endpoint: !Ref NotificationEmail

サーバーレスアプリケーションのデプロイ

パッケージおよびデプロイコマンドを使用してサーバーレスアプリケーションをパッケージングしてデプロイする方法については、パッケージ化とデプロイを参照してください。