AWS Toolkit for EclipseでEclipseからAWS Lambdaを利用したサーバレスなアプリケーションをデプロイしてみた

eclipse_eyecatch

AWS Toolkit for Eclipseを使用して、AWS Serverless Application Model(SAM)で開発したアプリケーションの「ひな形の作成」「デプロイ」「AWSの各リソースの確認」をしてみます。

AWS Toolkit for Eclipseとは?

AWSを利用したJavaアプリケーションの開発・デバッグ・デプロイのためのEclipse用のプラグインです。

引用元 What is the AWS Toolkit for Eclipse? - AWS Toolkit for Eclipse

具体的には以下のようなことができます。

  • EclipseからAWSリソースへの参照や操作
  • GUIからAWSの各サービスを選んで「ひな形」と「依存関係に必要なSDKが含まれた」プロジェクトの作成
  • Lambdaを利用したサーバーレスなアプリケーションの「ひな形」と「依存関係に必要なSDKが含まれた」プロジェクトの作成・ビルド・デプロイ
  • EC2インスタンスの操作・管理

他にもIAMやセキュリティグループを管理したりElatic Beanstalkのデバッグ・デプロイなどいろいろできるみたいです。 詳細は公式のドキュメントをご覧ください。

What is the AWS Toolkit for Eclipse? - AWS Toolkit for Eclipse

AWS Serverless Application Model(SAM)とは?

AWS Lambdaを利用したアプリケーションのデプロイは、概ね以下の2点の作業が必要です。

  • Lambda関数そのもの(ソースコード)のAWS Lambdaへのアップロード
  • AWS Lambdaから使用するリソースや、権限の設定

SAMをざっくり説明すると、サーバーレスアプリケーションがどのような構成・環境で動作するのか?を設定ファイルに定義し、AWS CloudFormationから自動で環境構築できるやつ、です。

本記事の範囲ではサーバーレスアプリケーションに必要な環境を書いておく設定ファイルと、設定に従った環境構築の仕組み、くらいの認識でも問題ないと思います。

参考:

やってみる

ここでは、以下のような流れでプラグインを利用してみます。

  1. AWS Toolkit for Eclipseのインストール
  2. Eclipseからサーバーレスアプリケーションのひな形を作成する
  3. アプリケーションをデプロイする
  4. デプロイしたアプリケーションを実行する
  5. 実行結果をEclipseから確認する

また、試した際の環境は以下となります。

  • OS: macOS Sierra 10.12.5(16F73)
  • Eclipse: 4.6.0 (Neon)

AWS Toolkit for Eclipseのインストール

以降はEclipse上での操作となります。

1. Help > Install New Software...をクリック

スクリーンショット 2017-07-10 12.02.36

2. Work withに「https://aws.amazon.com/eclipse」を入力しEnter。しばらく待つとプラグイン一覧が出てくるので必要なものを選択しNextをクリック

今回はAWS Toolkit for Eclipse Core(Reqired)AWS Lambda Pluginの2つをインストールします。

スクリーンショット 2017-07-10 12.05.41

3. インストール対象の一覧が表示されるので再度Nextをクリック

スクリーンショット 2017-07-10 12.06.38

4. ライセンスを承認してFinishをクリック

スクリーンショット 2017-07-10 12.06.47

5. Eclipseを再起動するとAWSのアクセスキーとシークレットアクセスキーを求められるので入力

スクリーンショット 2017-07-10 12.10.17

アクセスキーについて | AWS

これでセットアップ完了です。AWS Explorerのビューが表示されます。

スクリーンショット 2017-07-10 12.12.25

Eclipseからサーバーレスアプリケーションのひな形を作成する

インストールが完了するとメニューにAWSアイコンが表示されます。

1. アイコンをクリックするとメニューが開くので、New AWS Serverless Project...をクリック

スクリーンショット 2017-07-10 13.04.24

2. Project nameを入力、Select a Blueprintをarticleに設定し、Finishをクリック

スクリーンショット 2017-07-10 13.05.30

Select a Blueprintはアプリケーションのひな形の種類です。 articleはAPI Gateway経由でPOSTされた値をS3に配置し、配置されたファイルの情報をAWS DynamoDBに登録するアプリケーションです。 完了すると、Project Explorerに作成したプロジェクトが表示されます。

この時点で以下のようなアプリケーションが自動で作成されます。

スクリーンショット 2017-07-11 1.33.40

アプリケーションをデプロイする

作成したアプリケーションを編集せずそのままデプロイします。

1. プロジェクトを右クリックし、Amazon Web Services > Deploy Serverless Project...をクリック

スクリーンショット 2017-07-10 13.20.37

2. 以下をそれぞれ設定し、Nextをクリック(この時点でFinishをクリックするとデプロイに失敗します)

  • region:デプロイ先のリージョン
  • S3 Bucket Name:デプロイするモジュールの配置先となるS3のバケット(API GatewayからLambda経由でデータを送信するS3とは別です。また、Createからこの場でバケットを作成できます)
  • Create a new Stack:CloudFormationのスタック(今回はデフォルトのままです)

スクリーンショット 2017-07-10 13.29.41

3. 環境構築時の変数(serverless.templateにて定義)を入力し、Finishをクリック(今回はデフォルトのまま)

スクリーンショット 2017-07-10 13.28.37

4. デプロイの進捗が表示されるのでしばし待つ

StatusがCREATE_COMPLETEになったらデプロイ完了です。

スクリーンショット 2017-07-10 13.31.14

デプロイしたアプリケーションを実行する

デプロイの進捗が表示されていた画面のOutputに記載されたURLがデプロイされたアプリケーションのエンドポイントとなります。 以下のコマンドで実際に実行してみます。

$ curl 'https://xxxxxxxx.execute-api.us-west-2.amazonaws.com/Prod' --data 'It is test article' -XPOST
Successfully inserted article 63355ecc-7425-43e3-9709-504a79af1937

成功すると登録されたキーが返却されるので、GETで取得してみます。

$ curl 'https://xxxxxxxx.execute-api.us-west-2.amazonaws.com/Prod?id=63355ecc-7425-43e3-9709-504a79af1937'
It is test article

登録したArticleが取得できました。

実行結果をEclipseから確認する

EclipseからS3、DynamoDBに登録された各データを確認してみます。

S3

AWS ExplorerからAmazon S3を選択すると、バケットの一覧が表示されます。

スクリーンショット 2017-07-11 0.33.29

デプロイ時にバケット名を指定しなかったため、自動的に[プロジェクト名]-stack-xxxxxxx-ArticleTable-xxxxxxxxの形式でバケットが作成されています。 バケットをダブルクリックすると、バケットに登録されたファイルの一覧が参照できます。

スクリーンショット 2017-07-10 20.21.34

ここから直接S3へのアップロードやファイルの削除も可能です。

DynamoDB

同様にAWS ExplorerからAmazon DynamoDBを選択すると、テーブルの一覧が表示されます。

こちらもデプロイ時にテーブルを指定していないため、自動的に[プロジェクト名]-stack-xxxxxx-ArticleTable-xxxxxxの形式でテーブルが作成されています。 テーブルをダブルクリックすると、登録済みデータの一覧が参照できます。

スクリーンショット 2017-07-11 0.39.30

こちらはCSVのエクスポート、データの削除、アトリビュートの追加が可能です。

まとめ

AWS Toolkit for Eclipseを利用すると、AWSのサービスを利用したアプリケーションのひな形作成やデプロイ、一部サービスの管理がEclipse上から行えます。 個人的には各リソースを参照したりある程度操作ができるのは便利だと思いました。リソースを配置してちょっと何かを試したいときなど有用なのではないでしょうか。

ただしあくまでEclipse用のプラグインですので、手順と共有が必要な作業はCLIなど別の手段で行った方が良いように思います。

私からは以上です。

AWS Cloud Roadshow 2017 福岡