AWS Lambdaへのデプロイ
フローのデプロイ先はそのままデプロイボタンを押すと、enebular が利用しているサーバーにデプロイされますが、一時的にしか動作しません。
このページでは、長時間稼働させるために AWS Lambda にフローをデプロイする手順を説明します。
新規フローの作成
作成したフローを AWS Lambda にデプロイするまでの方法です。まず Lambda へデプロイするフローを作成しましょう(プロジェクトは作成済みとします)。
フローを作成し [Edit Flow] を押すと、Node-RED の編集画面が立ち上がります。
この編集画面でデータフローを編集してフローを作成します。
データフローの編集
データフローを作成します。動作確認のため、Lambda Request をそのまま Lambda Response に返すだけのフローを作成しましょう。
左のパレットでは Lambda Request は input グループに、Lambda Response は output グループにあるので、そちらを探して配置します。
右上の [Deploy] を押して保存します。
AWS Lambda へデプロイ
保存が完了したらフローのメニューから [Deploy] ページに移動します。
[Deploy] を押すとデプロイができる画面に移動します。
Lambda を選択します。
[New] を押すとモーダルが開きます。enebular での作業はここで一旦止めて、AWS コンソールへ移動します。
enebular から AWS Lambda を利用するための IAM ユーザーを作成
enebular から AWS Lambda にアクセスするための Access Key ID、Secret Access Key を作成します。
AWS の IAM へアクセスします。メニューからユーザーに移動します。
[ユーザーを追加] からユーザー追加画面へ移動します。適当な名前をつけて、[アクセスの種類] の [プログラムによるアクセス] にチェックを入れます。
アクセス権限画面では、[既存のポリシーを直接アタッチ] を選択して、[AWSLambdaFullAccess] というポリシーを選択して次に進みます。
確認画面で間違いがないか確認します。間違いがなければ [ユーザーの作成] を押します。
完了したら、アクセスキー ID とシークレットアクセスキーが記載された CSV ファイルをダウンロードします(このタイミングでしかダウンロードできないので注意して下さい)。
AWS Lambda が利用する ARN ロールを作成
Lambda にデプロイされたフローが利用する ARN ロールを作成します。
AWS の IAM へアクセスします。メニューからロールへ移動します。
[ロールの作成] からロール作成画面へ移動します。AWS サービスの Lambda を選択して次に進みます。
アクセス権限では [AWSLambdaFullAccess] を選択して、次へ進みます。
最後に適当な名前をつけて、[ロールの作成]で作成します。
ここまでできたら enebular に必要情報を入力します。
- Connection Name
- 分かりやすい名前を任意で
- AWS Access Key ID
- ダウンロードした CSV ファイルからコピー
- AWS Secret Access Key
- ダウンロードした CSV ファイルからコピー
- Region
- こだわりがなければ ap-northeast-1
- IAM Role ARN
- 作成したロールの ARN を確認
- 作成したロールの ARN を確認
保存をすると、以下のように Lambda 関数の情報を入力するフォームが現れます。
- Function Name
- 分かりやすい名前を任意で(ハイフンは使えません)
- Timeout
- 60
- Memory Size
- 128
上記の値を入力して、[Deploy] でデプロイします。
ここでしばらく待ちます(1 分 30 秒くらいはかかりますので、気長にお待ちください)。
デプロイが完了したら、Deployment History でデプロイされたものが確認できます。
AWS Lambda コンソールにて確認
ちゃんとデプロイされているか AWS の Lambda ページにて確認してみましょう。Lambda ページに先ほどデプロイの際に入力した Function Name があるかと思いますのでクリックします。遷移したページの左上の [テスト] でテストできます。
Event の設定画面が出てきますが、そのまま右下の [作成] をクリックします。
以下のような画面が出てくるので右上の [テスト] でテストをします。
以下のような画面ができれば成功です。