{Lambda}チュートリアル: 関数 URL を使用する Lambda 関数の作成

 

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/urls-tutorial.html
https://dev.classmethod.jp/articles/try-aws-lambda-function-urls/

 


-- 1. IAMロール作成
vim role01.json

{
    "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