今回は第2回目。前回Postmanで実行した内容をlambdaで実行してみたいと思います。
1.lambdaを起動する
ここでは、AWS academyで実施していますが、通常のAWSでも問題ないです。
右上の[関数を作成]から、新しい関数を作成します。
関数名:何か名前をつけてください
ランタイム:Python3.10 ※layersに設定するファイルをcolab(python3.10)で作成するため
アクセス権限:aws academyの場合設定
詳細設定:関数URLを有効化 認証タイプはNONE
上記以外は、デフォルトのままでOKです。
2.コードを記載する
lambdaは、通常lambda_handler関数が実行されます。※変更も可能ですが、ここではこのまま行きます。
event内にpostされた際に送られてきた情報が入ってきます。
まずはpostされた内容に関係なく情報を送信するため、4行目以降にコードを書いていきます。
前回のPostmanで実行したメッセージ送信のコードをコピーして貼り付けます。
このまま実行しても、No module named 'requests'のエラーが出ます。
そのためrequestsが読めるようにlayers登録をしていきます。
3. layersの作成
layersの登録は、Lambda内のレイヤーから実施していきます。
名前はなんでもOK
requestsモジュールの入ったzipファイルについては下記のコードから作成して、zipファイルをあげていきます。
4.layersの登録
lambdaの関数に戻って、1番下のレイヤーの追加から、先ほど追加したレイヤーを追加します。
カスタムレイヤーから選択してください
5.実行確認
これで実行すると問題なく実行できました
以上
import json
import requests
def lambda_handler(event, context):
# TODO implement
url = "https://webexapis.com/v1/messages"
payload = json.dumps({
"roomId": "Y2lzY29zc*****kMGY5Njkw",
"markdown": "こんにちは"
})
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer YmYyMGQ****8cf0-2917b2d84a0f'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
実行するときは、[Test]から実行します。イベント情報の登録が必要になりますが、イベント名はなんでもOK。イベントJSON情報は変更せずにそのままで良いです。このまま実行しても、No module named 'requests'のエラーが出ます。
そのためrequestsが読めるようにlayers登録をしていきます。
3. layersの作成
layersの登録は、Lambda内のレイヤーから実施していきます。
名前はなんでもOK
requestsモジュールの入ったzipファイルについては下記のコードから作成して、zipファイルをあげていきます。
!pip install -t /content/drive/MyDrive/Layers/requests/python requests
!find /content/drive/MyDrive/Layers/requests/python -name "*.pyc" -exec rm -f {} \;
!find /content/drive/MyDrive/Layers/requests/python -name "*.txt" -exec rm -f {} \;
!rm -rf /content/drive/MyDrive/Layers/requests/python/tests
!rm -rf /content/drive/MyDrive/Layers/requests/python/__pycache__
!rm -rf /content/drive/MyDrive/Layers/requests/python/*/tests
!rm -rf /content/drive/MyDrive/Layers/requests/python/*/__pycache__
!cd /content/drive/MyDrive/Layers/requests && zip -r /content/drive/MyDrive/Layers/requests.zip .
4.layersの登録
lambdaの関数に戻って、1番下のレイヤーの追加から、先ほど追加したレイヤーを追加します。
カスタムレイヤーから選択してください
5.実行確認
これで実行すると問題なく実行できました
以上
0 件のコメント:
コメントを投稿