AWS Toolkit for EclipseでEclipseからAWS Lambdaを利用したサーバレスなアプリケーションをデプロイしてみた
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から自動で環境構築できるやつ、です。
本記事の範囲ではサーバーレスアプリケーションに必要な環境を書いておく設定ファイルと、設定に従った環境構築の仕組み、くらいの認識でも問題ないと思います。
参考:
- Deploying Lambda-based Applications - AWS Lambda
- How to create serverless applications using AWS SAM
- [新ツール] AWS Serverless Application Model (AWS SAM) を使ってサーバーレスアプリケーションを構築する | Developers.IO
やってみる
ここでは、以下のような流れでプラグインを利用してみます。
- AWS Toolkit for Eclipseのインストール
- Eclipseからサーバーレスアプリケーションのひな形を作成する
- アプリケーションをデプロイする
- デプロイしたアプリケーションを実行する
- 実行結果をEclipseから確認する
また、試した際の環境は以下となります。
- OS: macOS Sierra 10.12.5(16F73)
- Eclipse: 4.6.0 (Neon)
AWS Toolkit for Eclipseのインストール
以降はEclipse上での操作となります。
1. Help > Install New Software...をクリック
2. Work withに「https://aws.amazon.com/eclipse」を入力しEnter。しばらく待つとプラグイン一覧が出てくるので必要なものを選択しNextをクリック
今回はAWS Toolkit for Eclipse Core(Reqired)とAWS Lambda Pluginの2つをインストールします。
3. インストール対象の一覧が表示されるので再度Nextをクリック
4. ライセンスを承認してFinishをクリック
5. Eclipseを再起動するとAWSのアクセスキーとシークレットアクセスキーを求められるので入力
これでセットアップ完了です。AWS Explorerのビューが表示されます。
Eclipseからサーバーレスアプリケーションのひな形を作成する
インストールが完了するとメニューにAWSアイコンが表示されます。
1. アイコンをクリックするとメニューが開くので、New AWS Serverless Project...をクリック
2. Project nameを入力、Select a Blueprintをarticleに設定し、Finishをクリック
Select a Blueprintはアプリケーションのひな形の種類です。 articleはAPI Gateway経由でPOSTされた値をS3に配置し、配置されたファイルの情報をAWS DynamoDBに登録するアプリケーションです。 完了すると、Project Explorerに作成したプロジェクトが表示されます。
この時点で以下のようなアプリケーションが自動で作成されます。
アプリケーションをデプロイする
作成したアプリケーションを編集せずそのままデプロイします。
1. プロジェクトを右クリックし、Amazon Web Services > Deploy Serverless Project...をクリック
2. 以下をそれぞれ設定し、Nextをクリック(この時点でFinishをクリックするとデプロイに失敗します)
- region:デプロイ先のリージョン
- S3 Bucket Name:デプロイするモジュールの配置先となるS3のバケット(API GatewayからLambda経由でデータを送信するS3とは別です。また、Createからこの場でバケットを作成できます)
- Create a new Stack:CloudFormationのスタック(今回はデフォルトのままです)
3. 環境構築時の変数(serverless.templateにて定義)を入力し、Finishをクリック(今回はデフォルトのまま)
4. デプロイの進捗が表示されるのでしばし待つ
StatusがCREATE_COMPLETEになったらデプロイ完了です。
デプロイしたアプリケーションを実行する
デプロイの進捗が表示されていた画面の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を選択すると、バケットの一覧が表示されます。
デプロイ時にバケット名を指定しなかったため、自動的に[プロジェクト名]-stack-xxxxxxx-ArticleTable-xxxxxxxxの形式でバケットが作成されています。 バケットをダブルクリックすると、バケットに登録されたファイルの一覧が参照できます。
ここから直接S3へのアップロードやファイルの削除も可能です。
DynamoDB
同様にAWS ExplorerからAmazon DynamoDBを選択すると、テーブルの一覧が表示されます。
こちらもデプロイ時にテーブルを指定していないため、自動的に[プロジェクト名]-stack-xxxxxx-ArticleTable-xxxxxxの形式でテーブルが作成されています。 テーブルをダブルクリックすると、登録済みデータの一覧が参照できます。
こちらはCSVのエクスポート、データの削除、アトリビュートの追加が可能です。
まとめ
AWS Toolkit for Eclipseを利用すると、AWSのサービスを利用したアプリケーションのひな形作成やデプロイ、一部サービスの管理がEclipse上から行えます。 個人的には各リソースを参照したりある程度操作ができるのは便利だと思いました。リソースを配置してちょっと何かを試したいときなど有用なのではないでしょうか。
ただしあくまでEclipse用のプラグインですので、手順と共有が必要な作業はCLIなど別の手段で行った方が良いように思います。
私からは以上です。