Amazon Web Services ブログ

新発表 – AWS Toolkits for PyCharm、IntelliJ(プレビュー)、Visual Studio Code(プレビュー)

ソフトウェア開発者には好みの開発ツールというものがあります。パワフルなエディタを使う人もいれば、特定の言語やプラットフォームに最適化された統合開発環境(IDE)を使う人もいます。AWS Lambda のコンソールのエディタを使って、2014年に私は初めての AWS Lambda 関数を作りました。現在では、サーバーレス・アプリケーションをビルドしデプロイするためのツールの選択肢は豊富になりました。例えば、昨年 AWS Cloud9 がリリースされて AWS Lambda のコンソールのエディタ環境は大きく強化されました。.NET アプリケーションでは、 AWS Toolkit for Visual StudioAWS Tools for Visual Studio Team Services を使う事ができます。

AWS Toolkits for PyCharm、IntelliJ(プレビュー)、そして Visual Studio Code(プレビュー)

今日、 AWS Toolkit for PyCharm の一般提供をお知らせします。また、 AWS Toolkits for IntelliJ と Visual Studio Code の開発者プレビューをお知らせします。これら(AWS Toolkits for IntelliJ と Visual Studio Code)は GitHub で活発に開発が進められています。これらオープンソースのツールキットによって、サーバーレス・アプリケーションを簡単に開発することができます。それは、完全な作成、ステップ実行によるデバッグ、そしてあなたが選んだ言語 ― それは Python、Java、Node.js、あるいは .NET ― と IDE におけるデプロイ体験などです。

例えば、 AWS Toolkit for PyCharmを使えば次のようなことができます:

  • 好みのランタイムで、デプロイのための準備が整ったサーバーレス・アプリケーションを新規に作成する。
  •  Lambda ライクな実行環境でステップ実行のデバッギングを用いて、ローカルでコードをテストする。
  • 選択した AWS リージョンにアプリケーションをデプロイする。
  • ローカルやリモートで Lambda 関数を起動する。
  • Amazon Simple Storage Service (S3), Amazon API Gateway, そして Amazon Simple Notification Service (SNS) といった、異なるイベントソースからのサンプル・ペイロードをカスタマイズし利用する。

これらのツールキットは open source Apache License, Version 2.0 で配布されます。

インストール方法

いくつかの機能は AWS Serverless Application Model (SAM) CLI を使います。ここからあなたのシステム向けのインストール手順を見つけることができます。

AWS Toolkit for PyCharm は IDEA Plugin Repository から入手可能です。インストールするには、 Settings/Preferences ダイアログ内の Plugins をクリックし「AWS Toolkit」を検索、プラグインを有効化するためにチェックボックスをチェックし、そしてインストールのボタンをクリックしてください。変更を有効にするために IDE を再起動する必要があるでしょう。

AWS Toolkits for IntelliJ と Visual Studio Code は現在開発者プレビューであり活発に開発が進められています。
以下の GitHub のリポジトリからビルドとインストールが可能です。

PyCharm を使ってサーバーレスアプリケーションを構築する

AWS SAM CLI と AWS Toolkit のインストールが終わったら、 PyCharm で新規プロジェクトを作成し左の SAM を選択します。AWS Serverless Application Model を使ってサーバーレス・アプリケーションを作成します。このプロジェクトを Location フィールドにおいて Hello-world と呼ぶことにします。More Settings を拡げて、このプロジェクトの開始地点として使う SAM テンプレートを選択します。今回は「AWS SAM Hello World」を選びます。

PyCharm では、あなたの AWS Command Line Interface (CLI) の設定からクリデンシャルとプロファイルを流用させることができます。複数の環境を扱っている場合は AWS リージョンを素早く切り替えることができます。

AWS Explorer は、選択した AWS リージョンにある AWS CloudFormation スタックと Lambda 関数を表示します。CloudFormation スタックからスタートしましょう。どの Lambda 関数が含まれているかを見ることができます。

Lambda 関数のハンドラは app.py ファイルです。このファイルを開いたら、ハンドラの関数宣言の左にある Lambda アイコンをクリックすると、ローカルで関数を実行する、あるいはローカルでステップ実行のデバッグのセッションを開始するオプションがあることが分かります。

最初に、ローカルで実行してみましょう。ローカルでの起動のインプットにおいて提供されるイベントのペイロードを設定可能です。Amazon API Gateway, Amazon Simple Notification Service (SNS), Amazon Simple Queue Service (SQS), など、多くのサービス向けにのイベントテンプレートが提供されているので、そこから始めましょう。ペイロードとしてファイルを使用することもできるし、あるいは share チェックボックスを選択すればチームメンバーがそれを利用することができるようになります。Lambda 関数はローカルで起動されます、ただし、 Amazon Simple Storage Service (S3)Amazon DynamoDB などの他の AWS サービスを呼び出している場合は、ここで使用するクリデンシャルとリージョンを選択することもできます。

ローカル環境のコンテナが Lambda の実行環境をエミュレートするのに使われます。この Lambda 関数は、基本的なウェブ API を実装しています。実行結果が API Gateway によって期待されるフォーマットになっているかをチェックできます。

そうすると、自分のコードが何をしているかについて情報がもっと欲しくなります。ブレイクポイントを設置してローカルのデバッグ・セッションを開始します。さっきと同じインプット・イベントを使います。再度、 Lambda 関数から使用される AWS サービスのリージョンとクリデンシャルを選択することができます。

Variables タブ内でレスポンスを調査するためにコード内の HTTP リクエストをステップ・オーバーします。この画面では、 lambda 関数のインプットの中で提供される context や event 変数を含む全てのローカル変数にアクセスすることができます。

その後は、デバッグ・セッションが終了するまでプログラムを再開します。

これでこのサーバーレス・アプリケーションをデプロイするのに十分な自信ができたため、プロジェクト(あるいは SAM テンプレートファイル)を右クリックします。新しい CloudFormation スタックを作成したり既存のを更新することが可能です。今回は、 hello-world-prod という名前の新規スタックを作成します。例えば、本番環境向けのスタックとテスト用のとを持つことができます。デプロイに使うパッケージを保存するためのリージョンの S3 バケットを選択します。もしテンプレートがパラメータを持っているなら、このデプロイで使うパラメータ値をここで設定することができます。

数分経つとスタックの作成が完了し、 AWS Explorer 内を 右クリックすることでこの Lambda 関数をクラウド上で実行することができます。ここで、このLambda 関数のソースコードにジャンプするオプションも存在します。

期待通り、リモートで起動した結果がローカル実行と一致します。このサーバーレス・アプリケーションは本番環境で可動しています!

これらのツールキットを使って、開発者はデプロイの前に問題を見つけるためにローカルでテストを行い、アプリケーションのコードや SAM テンプレート内で必要とされるリソースを修正し、既存のスタックを更新し、目標を達成するまで素早くイテレーションをまわすことができます。例えば、文書や画像を保存するために S3 バケットやユーザを登録するための DynamoDB テーブルを追加することができるし、あるいは Lambda 関数でパーミッションを変更することも可能です。

私は AWS であなたのアイデアを構築することがより素早くより簡単にできることに本当に興奮しています。いまや、あなたの好みの環境を使ってさらに加速されることが可能です。これらの新しいツールを使ってみなさんが何をするのか見るのがとても楽しみです。

著者:

Danilo Poccia

Danilo Poccia

Daniloはあらゆる規模のスタートアップ企業の支援をしています。Amazon Web Servicesのエバンジェリストのロールを担い、サーバレスアーキテクチャやイベント駆動型プログラミング、機械学習やエッジコンピューティング技術にフォーカスをあてた活動をしています。AWS Lambda in Manningの作者であります。

 

翻訳はSA 畑史彦が担当しました。原文はこちら