AWS Cloud9でLambdaを作成、API Gatawayにデプロイ
Cloud9でLambdaを作ってAPI Gatewayにデプロイしてみます。
開発対象のリージョンを設定しておきます。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-14.png)
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-15.png)
右端のメニューからLambdaマークを押して作成します。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-16.png)
「Function Name」はLambdaの関数名、「Application name」はAPI GatewayのAPI名になります。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-17.png)
実行環境を選択します。
Pythonにしました。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-18.png)
Lambda関数トリガーを設定します。
API Gatewayを選択してリソースパスを設定します。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-19.png)
Lambdaに与えるメモリとロールを設定します。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-2.png)
これで関数がCloud9のローカルとリモートに作成されました。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-5.png)
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-6.png)
API Gatewayも作成されています。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-7-1024x158.png)
編集したらまずは、Cloud9のローカルで実行してみます。
上部メニューの「Run」ボタンから実行ペインが開いて、イベントの設定実行ができます。
AWS上で実際にLambdaを呼んでるわけじゃないので、課金も気にせず気軽に実行できますね。![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-3-1024x344.png)
虫マークを押すとデバッグモードになり、ブレークポイントを置いて実行すると止まります。![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-20-1024x485.png)
仮想API Gatewayからの実行・デバッグもローカルで実行できます。![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-8.png)
その前に「template.yaml」を修正してAPIのメソッドをPOSTにします。![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-4.png)
LambdaとAPI Gatewayをデプロイします![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-21.png)
しばらくするとデプロイが完了します。
デプロイするとリモートでの実行も可能になります(デバッグはできないようです)。
デプロイされているのでAPIをCurlで実行してみます。
せっかくなのでCloud9のコンソールからやってみます。
できました!
使い方さえ慣れてしまえば、コンソールからポチポチやるより楽だし開発効率も上がりそうです。
何よりローカルに開発を作る手間が全くかからないのがよい。
余談ですがCloud9には「ハッピー」的な意味があるそうです。
クラウド型統合開発環境
LambdaをCloud9ローカルで作成、実行
まずはLambdaから作ります。開発対象のリージョンを設定しておきます。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-14.png)
Lambdaの作成
既に作成済みのものをインポートすることもできますが、イチから作ります。![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-15.png)
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-16.png)
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-17.png)
Pythonにしました。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-18.png)
API Gatewayを選択してリソースパスを設定します。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-19.png)
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-2.png)
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-5.png)
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-6.png)
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-7-1024x158.png)
Lambdaの編集・ローカルデバッグ
Lambda関数をこんな感じで編集します。import json
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
logger.info(event)
if 'body' in event:
event = json.loads(event['body'])
message = 'world'
if 'message' in event:
message = event['message']
response_body = {
'hello' : message,
}
return {
'isBase64Encoded': False,
'statusCode': 200,
'headers': {},
'body': json.dumps(response_body),
}
上部メニューの「Run」ボタンから実行ペインが開いて、イベントの設定実行ができます。
AWS上で実際にLambdaを呼んでるわけじゃないので、課金も気にせず気軽に実行できますね。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-3-1024x344.png)
虫マークを押すとデバッグモードになり、ブレークポイントを置いて実行すると止まります。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-20-1024x485.png)
仮想API Gatewayからの実行・デバッグもローカルで実行できます。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-8.png)
LambdaとAPI Gatewayのデプロイ
Lambdaのコードができたので、デプロイします。その前に「template.yaml」を修正してAPIのメソッドをPOSTにします。
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/unnamed-file-4.png)
LambdaとAPI Gatewayをデプロイします
![](https://www.blog.danishi.net/wp-content/uploads/2020/04/image-21.png)
しばらくするとデプロイが完了します。
デプロイするとリモートでの実行も可能になります(デバッグはできないようです)。
デプロイされているのでAPIをCurlで実行してみます。
せっかくなのでCloud9のコンソールからやってみます。
ec2-user:~/environment $ curl -X POST -d '{"message":"API Gateway Remote"}' https://XXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/Prod/hello
{"hello": "API Gateway Remote"}
使い方さえ慣れてしまえば、コンソールからポチポチやるより楽だし開発効率も上がりそうです。
何よりローカルに開発を作る手間が全くかからないのがよい。
余談ですがCloud9には「ハッピー」的な意味があるそうです。
ディスカッション
コメント一覧
まだ、コメントがありません