#AWS マネジメントコンソール上でLambdaを実装して、APIを叩きたい
サクッとWEBAPIをLambdaで叩きたい人向けです。
AWSのコンソール上のコードエディターのみで作業を完結させたいときに。
##こんな人向け
・WEBAPIを実行したい
・AWSマネジメントコンソールのみで作業を完結させたい
・headerに認証キーを付けたい
・認証キーは環境変数に入れておきたい
・返り値はステータスコードだけ取れればよい
##環境情報
AWS Lambda
- ランタイム:Python3.9
##ソースコード(PUT API)
Lambda 標準の同包モジュールのみでの実装するため、
AWS Lambda コードエディター上に下記を張り付けるだけです。
import os
import json
import urllib.request
def lambda_handler(event, context):
#PUT API
url_str = "https://APIURL/"
headers = {"Authorization" : os.environ.get('BearerToken')}
data = "data"
request = urllib.request.Request(url_str, data.encode('utf-8'), method='PUT', headers=headers)
response = urllib.request.urlopen(request)
res_code = response.getcode()
# PRINT STATUS CODE
print(res_code)
return {
'statusCode': res_code
}
##環境変数の設定
AWS Lambda上、「設定」タブ内にある「環境変数」を設定しましょう。
環境変数の名称は、ソースコードの**"BearerToken"**です。
##出会ったエラー
TypeError: POST data should be bytes or an iterable of bytes. It cannot be of type str.
dataはstr型ではなくbytes型である必要があります。
スタックオーバーフローで同じエラーを抱えている人に多く出会いました。
結論としてはdataをエンコードしてあげる必要があります。
##おわりに
ちょっと確認したいだけだから5分でできると思ったら15分掛かったので記事にしました。
久しぶりのpythonは、アレっとなりますね。
開発初期の検証などに。