AWS Toolkit for Eclipse で Serverless Applicationを作成する

2016.12.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

AWS Toolkit for EclipseでAPI Gateway + LambdaのServerless Applicationが作成できるようになったので試してみました。JavaでServerless Applicationを作成しようと考えている方にとっては1つの選択肢になるのではないかと思います。

AWS Toolkit for Eclipse: Serverless Applicationsを参考にしたのですが、注意すべきポイントもあったので、それらも加えて書いていきます。

作成手順

作業の流れとしては以下となります。

  1. AWS Toolkit for Eclipseのインストール
  2. プロジェクト作成
  3. serverless.templateの確認
  4. デプロイ

AWS Toolkit for Eclipseのインストール

EclipseにAWS Toolkit for Eclipseの「AWS Toolkit for Eclipse Core」「AWS CloudFormation Tool」「AWS Lambda Plugin」をインストールしてください。

aws-toolkit-for-eclipse-serverless-application_eclipse_install2

プロジェクト作成

ツールバーより「AWS Toolkit for Eclipse」を選択し「New AWS Serverless Project」を押下してください。

aws-toolkit-for-eclipse-serverless-application_aws_toolkit

「Create a new Serverless Java Project」のダイアログが表示されます。「Project Name」には任意のプロジェクト名を、「Select a Blueprint」では今回は「article」を選択してデフォルトのサンプルアプリケーションをデプロイしてみます。

aws-toolkit-for-eclipse-serverless-application_create_project_dialog

「Finish」を押下するとプロジェクトが作成されます。

serverless.templateの確認

プロジェクト内のserverless.templateを確認してみます。serverless.templateはSAM形式で記述されており、ここでの定義を元にCloudFormationが実行されてデプロイされるようです。SAMについては弊社諏訪の記事を参考にしてください。

デプロイする前にserverless.templateのバケット名、DynamoDBのテーブル名を変更します。今回はバケット名を「article-serverless-blueprint-bucket」、テーブル名を「article-serverless-blueprint-table」としました。特にバケット名については変更しないと、一意制約に引っ掛かることになりそうです・・・。

{
  "Description": "Simple article service.",
  "Parameters" : {
    "ArticleBucketName" : {
        "Type" : "String",
        "Default" : "article-serverless-blueprint-bucket",
        "Description" : "Name of S3 bucket used to store the article content. If left blank a new bucket will be created.",
        "MinLength" : "0"
    },
    "ArticleTableName" : {
        "Type" : "String",
        "Default" : "article-serverless-blueprint-table",
        "Description" : "Name of DynamoDB table used to store the article metadata. If left blank a new table will be created.",
        "MinLength" : "0"
      },

デプロイ

デプロイを行います。プロジェクトを右クリックし「AWS Web Services」-「Deploy Serverless Project」を選択します。

aws-toolkit-for-eclipse-serverless-application_deploy

デプロイ用のダイアログが表示されるので、リージョン・Lambdaのバケット名・CloudFormationのスタック名を入力して「Finish」を押下します。

aws-toolkit-for-eclipse-serverless-application_deploy_dialog

しばらくするとCloudFormationの処理が開始されます。

aws-toolkit-for-eclipse-serverless-application_cloudformation2

デプロイ確認

serverless.templateで指定したバケット・DynamoDBのテーブルと、API Gateway・Lambdaがデプロイされたかを確認してみます。

バケット

aws-toolkit-for-eclipse-serverless-application_bucket

DynamoDB

aws-toolkit-for-eclipse-serverless-application_dynamodb

Lambda

aws-toolkit-for-eclipse-serverless-application_lambda2

API Gateway

aws-toolkit-for-eclipse-serverless-application_api_gateway

動作確認

では動作確認してみます。curlでデータをPOSTし、そのデータをGETしてみます。API GatewayのProdステージのURLを予め確認しておいて下さい。

$ curl --data "Sample Article!" https://API GatewayのURL/Prod/?id=1
Successfully inserted article 1

$ curl -X GET https://API GatewayのURL/Prod?id=1
Sample Article!

参考サイト

AWS Toolkit for Eclipse: Serverless Applications