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

独自のサーバーレスアプリケーションを作成する

次のチュートリアルでは、環境変数として指定した Amazon S3 バケットの名前を返す単一の関数からなる単純なサーバーレスアプリケーションを作成します。以下の手順に従ってください:

  1. 以下のテキストをファイルにコピーし、index.js という名前でコピーします。

    Copy
    var AWS = require('aws-sdk'); exports.handler = function(event, context, callback) { var bucketName = process.env.S3_BUCKET; callback(null, bucketName); }

  2. 以下をテキストファイルに貼り付け、example.yaml という名前で保存します。Runtime パラメータは nodejs6.10 を使用しますが、nodejs4.3 を指定できることに注意してください。

    Copy
    AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: TestFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs6.10 Environment: Variables: S3_BUCKET: bucket-name
  3. examplefolder という名前のフォルダを作成し、example.yaml ファイルと index.js ファイルをフォルダ内に置きます。

    example フォルダには次の二つのファイルが含まれています。これらのファイルを使用して、サーバーレスアプリケーションをパッケージ化することができます:

    • example.yaml
    • index.js

パッケージ化とデプロイ

Lambda 関数ハンドラーと example.yaml ファイルを作成したら、AWS CLI を使用してサーバレスアプリケーションをパッケージ化してデプロイできます。

梱包

アプリケーションをパッケージ化するには、package コマンドが ZIP デプロイパッケージのアップロードに使用する Amazon S3 バケットを作成します (example.yaml ファイル内で指定していない場合)。Amazon S3 バケットを作成するには、以下のコマンドを使用できます:

Copy
aws s3 mb s3://bucket-name --region region

次に、コマンドプロンプトを開いて以下のように入力します:

Copy
aws cloudformation package \ --template-file example.yaml \ --output-template-file serverless-output.yaml \ --s3-bucket s3-bucket-name

パッケージコマンドは AWS SAM テンプレートを、この場合には serverless-output.yaml を返します 。これには指定したAmazon S3 バケットのテプロイメント zip を指定する CodeUri が含まれます。このテンプレートはサーバーレスアプリケーションを表します。これで、デプロイする準備ができました。

デプロイメント

アプリケーションをデプロイするには、次のコマンドを実行します:

Copy
aws cloudformation deploy \ --template-file serverless-output.yaml \ --stack-name new-stack-name \ --capabilities CAPABILITY_IAM

--template-file パラメーターに指定する値がそのパッケージコマンドによって返される SAM テンプレートの名前であることに注意してください。さらに、--capabilities パラメーターはオプションです。AWS::Serverless::Function リソースは、テンプレートで指定されていない場合、暗黙的にLambda 関数を実行するロールを作成します。--capabilitiesパラメーターを使用して、AWS CloudFormation がユーザーの代わりにロールを作成できることを明示的に確認します。

aws cloudformation deploy コマンドを実行すると、AWS CloudFormation スタックへの変更リストである AWS CloudFormation ChangeSet が作成され、その後デプロイします。一部のスタックテンプレートには、新しい AWS Identity and Access Management (IAM) ユーザーを作成するなど、AWS アカウントのアクセス許可に影響するリソースが含まれている場合があります。このようなスタックの場合は、--capabilities パラメーターを指定して、それらの機能を明示的に確認する必要があります。詳細については、『AWS CloudFormation API Reference』の「CreateChangeSet」を参照してください。

結果を確認するには、新たに作成した AWS CloudFormation スタックを閲覧するための AWS CloudFormation コンソールと、関数を確認するための Lambda コンソールを開きます。

完全なサーバーレスアプリケーション例のリストは「AWS Lambda の使用方法の例」を参照してください。

サーバーレスアプリケーションのエクスポート

サーバーレスアプリケーションをエクスポートすることで、Lambda コンソールを使用して、別の AWS リージョンや開発ステージなどに再デプロイすることができます。Lambda 関数をエクスポートすると、サーバーレスアプリケーションを表す ZIP デプロイメントパッケージと SAM テンプレートが提供されます。再デプロイについては、前のセクションで記述した packagedeploy コマンドを使用できます。

Lambda 設計図の一つを選択してパッケージ化してデプロイするための ZIP パッケージを作成することもできます。これを行うには、以下のステップに従います。

Lambda コンソールを使用してサーバーレスアプリケーションをエクスポートする方法

  1. AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/lambda/ にある AWS Lambda コンソールを開きます。

  2. 次のいずれかを行ってください。

    • Lambda 設計図を使用して関数を作成する – 設計図を選んでステップに従い Lambda 関数を作成します。例については、「ステップ 2.1: Hello World Lambda 関数を作成する」を参照してください。[Review] ページまで完了したら、[Export function] を選択します。

    • 関数を作成する – [Create function] を選択して関数を作成します。Lambda 関数を作成したら、その関数を選択してエクスポートできます。[Actions]、[Export function] の順に選択します。

    • 既存の Lambda 関数を開く – [Function name]、[Actions]、[Export function] の順に選択して関数を開きます。

  3. [Export your function] ウィンドウには、次のオプションがあります。

    • [Download AWS SAM file] を選択します。このファイルはサーバレスアプリケーションを構成する Lambda 関数やその他のリソースを定義します。

    • [Download deployment package] を選択します。これには、Lambda 関数コードと依存ライブラリが含まれます。

AWS SAM ファイルと ZIP 展開パッケージを使用し、パッケージ化とデプロイ の手順に従ってサーバーレスアプリケーションを再デプロイします。

このページの内容: