AWS Cloud9 で Lambda 関数の作成・実行・デバッグ・デプロイをやってみる #reinvent

AWS Cloud9 で Lambda 関数の作成・実行・デバッグ・デプロイをやってみる #reinvent

Clock Icon2017.12.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Create Lambda Function

AWS Cloud9 を利用して Lambda 関数を作成する方法を画像メインでご紹介します。 内容は以下の通りです。

  • AWS Cloud9 の環境作成
  • Lambda 関数の作成、実行、デバッグ、デプロイ

AWS Cloud9 については 【レポート】AWS Cloud9 の紹介 #reinvent #DEV320 をご覧ください。

AWS Cloud9 の環境作成

Cloud9 は現在 東京リージョンをサポートしていません。 よって今回のサンプルは全て「バージニア北部」で作成しています。

まずは Cloud9 の環境を作成します。


1


2


3


4


5


6


7


これで環境が作成されました。

Lambda 関数の作成

環境が構築できたので、いよいよ Lambda 関数を作成します。


7_2


8


9


10


11


12


13


14


15


Lambda 関数が作成されました。 関数作成後は一度だけ自動デプロイが実行され、実際の Lambda 環境にも同じ内容のものが作成されます。 ここで、Cloud9 上の Lambda 関数は Local, Lambda サービス上の関数は Remote と区別されます。

コードを書く

Cloud9 上でコードを書きます。 ここでは DynamoDB のテーブルにアクセスし、データを取得する Lambda 関数を書きました。


16


テーブルの内容はこちら。


17


Star Wars のエピソードとタイトルが保存されています。 Lambda 関数を実行すると StarWars テーブルから全ての情報(エピソード)を取得します。(関数名が getEpisodes となっているのはこのため)

また、この段階ではこのコードはまだリモートには反映されていません。 反映するには デプロイ 作業を実施する必要があります。

ローカル実行

ローカル環境でプログラムを実行する手順です。


16_2


18


19


期待する情報が取得できていることが分かります。 この Response は 15 行目のコールバック関数の第二引数に指定している変数 data の内容です。

デバッグ

次にデバッグの手順です。 Cloud9 にはデバッグ機能も組み込まれています。


20


21


22


23


24


入力と出力だけでなくプログラム実行時の内容を動的に確認できるようになったので、ずいぶんデバッグしやすくなりました。

デプロイ

ローカルで作成した Lambda 関数をリモートに反映させます。


25


26


27


これでデプロイ完了です。

リモート実行

28


29


実行はできましたが結果がローカル実行時と異なり、エラーとなりました。 この結果は Lambda コンソールで実行(テスト)した時と同じものとなります。

ハマリポイント

上記エラーの原因は DynamoDB に対する読み取り権限不足によるものです。 ローカル実行では 現在ログインしている IAM ユーザーの権限、リモート実行では Lambda 関数リソースに付与されている IAM ロールの権限 が適用されるようです。 よってリモート環境で実行する場合は Lambda 関数に適切なロールを付与するようにしましょう。


30

リンク

ミレニアム・ファルコン製作日記 #98

98 号 表紙

パーツ

成果

今回の作業は以下の 3 つでした。

  • ディテールアップを取り付ける
  • 単脚を組み立てる
  • 2 連着陸脚を組み立てる

多いよ!作業量が!! 90 号台後半のラストスパート具合がヤバイ。 今回も前回に引き続き機関室部分を覆う外殻プレートのディテールアップを行いました。 ・・・あと 3 分の 1 くらい取り付けられそうです。

更なる作業が着陸脚の組み立て。 もう残りの号数も少ないので「着陸脚は無いんだな」って諦めていたのですが、いきなり来ました!全部! はたしてあと 2 回で本当に完成するのでしょうか? 色んな意味で楽しみですw

それではまた次回。

May the Force be with you!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.