LoginSignup
9
8

More than 5 years have passed since last update.

AWS Toolkits for IntelliJ による Lambda 開発フローを試してみる

Last updated at Posted at 2018-12-23

はじめに

この記事は ウェブクルー Advent Calendar 2018 の23日目の記事です。
昨日は @noko_k さんの「バックエンドエンジニアが事前知識なしでReact Native(+ Expo)に入門して詰まったところ」でした。

概要

AWS Lambda の開発支援プラグイン AWS Toolkits for IntelliJ がプレビュー版として公開されたので、試してみました。
今回は IntelliJ IDEA Ultimate で試しましたが、PyCharm でも利用できます。

1. 機能概要

主に以下の機能が提供されています。

全般

  • 新規プロジェクトのウィザード
    • サーバーレスアプリケーション用のプロジェクトを作成できます。
  • 資格情報管理
    • AWS CLI で管理されている認証情報ファイル (~/.aws/credentials) を参照・編集できます。
  • リソース管理
    • AWS に接続する際の Profile や Region を選択する事ができます。
    • 選択した Profile / Region で使用可能な Lambda 等の AWS リソースを一覧表示できます。

AWS Lambda 関連

  • ローカル開発支援
    • ローカル環境で Lambda のテスト実行およびデバッグを行う事ができます。
  • ビルド&デプロイ
    • ローカル環境でビルドした Lambda を AWS へデプロイする事ができます。
  • AWS 上の Lambda の実行
    • リクエスト情報を作成し、AWS 上にデプロイされている Lambda を実行できます。
  • AWS 上の Lambda 設定の参照・変更
    • AWS 上にデプロイされている Lambda の設定情報を参照・変更できます。

2. インストール

Plugins の MarketPlace からインストールできます。
AWS Toolkit

また、別途 AWS SAM CLI のインストールが必要です。
プラグインが提供するいくつかの機能は、バックグラウンドで AWS SAM CLI を利用しています。

AWS SAM CLI のインストール手順については、公式サイトの Installing the AWS SAM CLI を参照してください。

3. プラグインを試す

プロジェクト作成、ローカル環境でテスト実行、AWSへデプロイ&動作確認の流れで試してみました。

3-1. プロジェクト作成

New Project の項目に AWS Serverless Application が追加されています。
Runtime と Project SDK を選択して、次へ進みます。
new-project.png

次に、プロジェクトのテンプレートを選択できます。
今回は AWS SAM Hello World を選択しました。

最後にプロジェクトの保存場所を選択して、完了です。

なお、プロジェクトには依存性管理に Maven が使用されています。
プロジェクトを開いた際に Maven Project 機能の追加を促されると思うので、追加してください。

3-2. AWS 接続設定

画面の右下で AWS への接続設定が行えます。
接続先の Region と、利用する Profile を選択しておきます。

選択した AWS 接続設定で、AWS Explorer から AWS 上のリソースが一覧表示できます。
デフォルトだとサイドバー画面左下にあります。
aws-explorer.png

3-3. ローカル環境でテスト実行

RequestHandler を実装している所から実行できます。
local-run-1.png

実行条件を設定します。ここの Input に Lambda へのリクエスト情報を指定できます。
テンプレートからも選択可能なので、今回は「API Gateway AWS Proxy」を選択しました。
run-config.png

コンソールにレスポンスが出力されます。

{"body":"{ \"message\": \"hello world\", \"location\": \"xxx.xxx.xxx.xxx\" }","headers":{"X-Custom-Header":"application/json","Content-Type":"application/json"},"statusCode":200}

ブレークポイントを設定してデバッグ実行すれば、デバッグする事も可能です。
実行条件で設定したリクエスト情報が、確かに受け取れています。
debug.png

3-4. AWSへデプロイ

AWS へデプロイしてみます。

CloudFormation に Stack を作成し、それを利用したデプロイが GUI としては提供されているのですが、実際の処理を行う AWS SAM CLI の build コマンドがまだ java8 のランタイムをサポートしていないようだったので、この方法は使う事はできませんでした。

2018-12-15 16:34:57 Found credentials in shared credentials file: ~/.aws/credentials
2018-12-15 16:34:58 Building resource 'HelloWorldFunction'
Build Failed
Error: 'java8' runtime is not supported

なので、今回は直接 Lambda を作成したいと思います。
AWS Explorer の Lambda から Craete new AWS Lambda を選択します。
create-lambda.png

設定画面で Name, Handler, Runtime, IAM, Bucket を設定して作成します。
create-function-config.png

これで作成できました。

3-5. AWS上で動作確認

デプロイされた Lambda を実行してみます。
AWS Explorer に表示されている Lambda を選択し実行します。
run-remote-lambda.png

ローカル実行の時の同じ要領で、実行条件を設定する事ができます。
コンソールにレスポンスの内容が表示されます。

Invoking Lambda function: try-aws-toolkit
Logs: 
START RequestId: 79164e5e-0041-11e9-9531-21cb32e1956a Version: $LATEST
END RequestId: 79164e5e-0041-11e9-9531-21cb32e1956a
REPORT RequestId: 79164e5e-0041-11e9-9531-21cb32e1956a  Duration: 14819.37 ms   Billed Duration: 14900 ms   Memory Size: 128 MB Max Memory Used: 71 MB  

Output: 
{
  "body": "{ \"message\": \"hello world\", \"location\": \"xxx.xxx.xxx.xxx\" }",
  "headers": {
    "X-Custom-Header": "application/json",
    "Content-Type": "application/json"
  },
  "statusCode": 200
}

4. まとめ

CloudFormation に未対応なのは残念でしたが、AWS SAM CLI 側の対応でいずれ使えるようになると思います。それでも、ローカルテストとデプロイが簡単にでき、Lambda の設定も AWS コンソールを操作せずに行えるのは良いですね。

チーム開発では Serverless Framework などのフレームワークを使ったほうが良いと思いますが、個人用でさくっと作りたい時には便利そうです。

明日の記事は @yusuke-kobayashi0117 さんです。よろしくお願いいたします。

ウェブクルーでは一緒に働いていただける方を随時募集しております。
お気軽にエントリーくださいませ。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8