やりたい事
IAM認証をかけたLambdaに対してPostmanからPOSTリクエストを出してレスポンスが返ってくることを確認する。
環境
- python:3.12
Lambdaの作成
bodyの中身を返しているだけの簡単なLambdaを作成。
import json
def lambda_handler(event, context):
body = event.get('body')
if body:
data = json.loads(body)
else:
data = {}
response = {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json'
},
'body': json.dumps({
'message': 'Hello from Lambda!',
'input': data
})
}
return response
IAMポリシーの作成
Lambda関数を呼び出す用のポリシーを作成します。
Resourceの部分は呼び出す対象のLambdaのarnを設定。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "lambda:InvokeFunctionUrl",
"Resource": "arn:~~hogehoge~~"
}
]
}
IAMユーザの作成
IAM > ユーザー > ユーザーの作成 からユーザを作成します。
許可を設定からポリシーを直接アタッチする
を選択し、上記で作成したIAMポリシーをアタッチしたIAMユーザを作成します。
アクセスキーと、シークレットアクセスキーはPostmanから呼び出すときに使用するので忘れないように保管しておいてください。
関数URL化
Lambdaのコンソール画面 > 設定 > 関数URL > 関数 URL を設定 を選択。
Lambda関数のコンソールから認証タイプが AWS_IAM
になっていることを確認。
Postmanでリクエストを送信する際の設定
メソッドをPOSTに設定しLambdaの関数URLをコピペし、
Authorization タブから AWS Signature
を選択し、IAMユーザーのアクセスキーID
とシークレットアクセスキ
ーを入力。
Body
タブの raw
を選択から JSON
選択し、任意のJSONデータを入力。
今回は下記のようなJSONをbodyに設定します。
{
"key1": "value1",
"key2": "value2"
}
実行結果
ここまでできたら、画面右上のsend
ボタンをクリックしPOSTリクエストを送ってみます。
下記のようにLambdaから想定通りのresponseが返ってきている事を確認できました。
{
"message": "Hello from Lambda!",
"input": {
"key1": "value1",
"key2": "value2"
}
}