https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/urls-tutorial.html
https://dev.classmethod.jp/articles/try-aws-lambda-function-urls/
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
aws iam create-role \
--role-name role01 \
--assume-role-policy-document file://role01.json
-- 2. ポリシーをロールにアタッチ
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole \
--role-name role01
-- 3. Lambda関数作成
vim index.js
exports.handler = async (event) => {
let body = JSON.parse(event.body)
const product = body.num1 * body.num2;
const response = {
statusCode: 200,
body: "The product of " + body.num1 + " and " + body.num2 + " is " + product,
};
return response;
};
chmod 755 index.js
zip function.zip index.js
aws lambda create-function \
--function-name func01 \
--zip-file fileb://function.zip \
--handler index.handler \
--runtime nodejs14.x \
--role arn:aws:iam::999999999999:role/role01
aws lambda list-functions | grep func01
aws lambda get-function --function-name func01
-- 4. 関数のURLへのパブリックアクセスを許可する権限を付与するリソースベースのポリシーを追加
aws lambda add-permission \
--function-name func01 \
--action lambda:InvokeFunctionUrl \
--principal "*" \
--function-url-auth-type "NONE" \
--statement-id url
-- 5. 関数の URL エンドポイントを作成
aws lambda create-function-url-config \
--function-name func01 \
--auth-type NONE
aws lambda list-function-url-configs \
--function-name func01
-- 6. 動作確認
curl -X POST \
'https://11111111111111111111111111111111.lambda-url.ap-northeast-1.on.aws/' \
-H 'Content-Type: application/json' \
-d '{"num1": "10", "num2": "10"}'
-- 7. クリーンアップ
-- Lambda関数の削除
aws lambda get-function --function-name func01
aws lambda delete-function --function-name func01
-- IAMロールの削除
aws iam list-roles | grep role01
aws iam detach-role-policy \
--role-name role01 \
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
aws iam delete-role --role-name role01