前回は、「Spring Cloud Function」でサーバレスアプリケーションを実装しました。今回は、作成したアプリケーションを「AWS Lambda」へ登録してみましょう。

(2)AWS Lambdaの設定

作成したサーバレスアプリケーションをAWS Lambda Functionとして設定します。AWSコンソールのLambdaサービスを選択し、「関数の作成」ボタンを押下してください。

「関数の作成」ボタンを押下

開かれた「関数の作成」ページで、「一から作成」を選択し、以下の通り設定を行います。

  • 名前:任意の名前を設定
  • ランタイム:「Java 8」を選択
  • ロール:初めてLambdaを使用する場合で、かつロールを初めて作成する場合は「カスタムロールの作成」を選択

「一から作成」を選択して各項目に値を設定する

「カスタムロールの作成」を選択すると、IAMロール画面へのウインドウが開き、Lambda関数の実行やCloudWatchのログ書き込み権限など最低限の権限を設定したIAMロールが自動で表示されます。

「IAMロール」欄で「新しいIAMロールの作成」を選んだまま、任意のロール名を入力し、「許可」ボタンを押下してください。

任意のロール名を入力して「許可」ボタンをクリックする

その後、Lambda作成画面に戻り、「関数の作成」ボタンを押下すると、Lambda関数が作成されます。

Lambda作成画面で「関数の作成」ボタンを押下するとLambda関数が作成される

そのまま下にスクロールすると、関数のコードや実行条件に関する詳細な設定項目が表示されるので、関数コード・環境変数の設定で以下の要領に則って作成します。

入力項目 説明
コードエントリタイプ Lambda関数として実行するアプリケーションをアップロードする方式を決定します。ファイルを直接アップロードするか、S3経由でアップロードするかになりますが、JavaではJAR形式のファイルをアップロードするかたちになります。10MBをオーバーしていてもアップロードできないことはありませんが、ファイルサイズが大幅に大きくなる場合はS3へアップロードする方法を指定してください
ランタイム Lambda関数として実行するアプリケーションのランタイムを指定します。今回は「Java 8」を指定しておいてください
ハンドラ 今回作成した3種類のクラスのうち、HandlerクラスをFQCNで設定します
関数パッケージ コードエントリタイプでzip、jar形式を指定していた状態で、押下するとアップロードダイアログが表示されます。作成したアプリケーションのJARファイルを指定してください。S3経由のアップロードを選択していた場合は、オブジェクトキーを指定します
環境変数 Spring Cloud Functionでは、実行する関数を環境変数FUNCTION_NAMEで指定したBean名で取得します。ここでは、今回作成した3種類のクラスのうち、FunctionクラスのBean名を指定します。クラス名をキャメルケース(最初の英大文字を小文字にしたもので)指定してください

最低限設定が必要な項目は上記になります。実行条件はデフォルトのままで問題ありませんので、入力後は画面上部にある「保存」ボタンを押下してください。

※ 重たい処理などはあらかじめ実行メモリを大きめにとっておいたほうが良い場合があります。「HelloWorld」だけのシンプルなアプリケーションでも、最低100MBはメモリ消費するので注意してください。

「保存」ボタンをクリックする

なお、設定を保存して「テスト」ボタンを実行しても、この段階ではエラーになります。次回詳細を記述しますが、これを回避するには「Amazon API Gateway」で、Lambdaプロキシ統合オプションに基づくリクエストを設定しておくことが必要です。今は、ここでエラーになっても気にしないでください。

これで、作成したアプリケーションを「Lambda Function」として設定できました。次回は、サーバレスアプリケーションを設定したLambdaをAmazon API Gatewayを使って呼び出してみます。

著者紹介


川畑 光平(KAWABATA Kohei)

某システムインテグレータにて、金融機関システム業務アプリケーション開発・システム基盤担当を経て、現在はソフトウェア開発自動化関連の研究開発・推進に従事。

Red Hat Certified Engineer、Pivotal Certified Spring Professional、AWS Certified Solutions Architect Professionalなどの資格を持ち、アプリケーション基盤・クラウドなどさまざまな開発プロジェクト支援にも携わる。

本連載の内容に対するご意見・ご質問は Facebook まで。