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

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


はじめに

この記事は ウェブクルー 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 さんです。よろしくお願いいたします。

ウェブクルーでは一緒に働いていただける方を随時募集しております。

お気軽にエントリーくださいませ。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)