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

ステップ 6: 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 ベースのアプリケーションをデプロイする」を参照してください。

スケジュールされたイベントアプリケーションの仕様

このアプリケーションの SAM テンプレートを次に示します。下のテキストを .yaml ファイルにコピーし、以前作成した ZIP パッケージの隣に保存します。Runtime: パラメータ値が前のセクションで選択した値と一致することを確認します。

Copy
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Parameters: NotificationEmail: Type: String Resources: CheckWebsitePeriodically: Type: AWS::Serverless::Function Properties: Handler: LambdaFunctionOverHttps.handler Runtime: runtime Policies: AmazonDynamoDBFullAccess Events: CheckWebsiteScheduledEvent: Type: Schedule Properties: Schedule: rate(1 minute) AlarmTopic: Type: AWS::SNS::Topic Properties: Subscription: - Protocol: email Endpoint: !Ref NotificationEmail Alarm: Type: AWS::CloudWatch::Alarm Properties: AlarmActions: - !Ref AlarmTopic ComparisonOperator: GreaterThanOrEqualToThreshold Dimensions: - Name: FunctionName Value: !Ref CheckWebsitePeriodically EvaluationPeriods: String MetricName: Errors Namespace: AWS/Lambda Period: '60' Statistic: Sum Threshold: '1'

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

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