AWSCLIでLambdaを触ってみた

AWSCLIでLambdaを触ってみた

おはようございます!今年新卒社員のキム・スンヨンです! 最近改めてAWS Lambdaを勉強しています。 今回は簡単にCLIを使ってLambda Functionを作ってみました。
Clock Icon2020.09.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

おはようございます!今年新卒社員のキム・スンヨンです!
最近改めてAWS Lambdaを勉強しています。
今回は簡単にCLIを使ってLambda Functionを作ってみました。

  • 簡単に順番です。
    • CloudWatch logのPolicyを作ります。
    • Lambda Roleを作って,作ったPolicyをattachします。
    • Lambda Functionを作ります。
    • Lambdaをinvokeします。
    • 最後にL結果をCloudWatch logを通じて見ましょう!

IAM policy and Role

create policy.json

まず、localでpolicy.jsonファイルを作ってください。

{
    "Version": "2012-10-17",
    "Statement":[
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource":"*"
        }
    ]
}
aws iam create-policy --policy-name [name] --policy-document file://policy.json

同じです。localでrole.jsonファイルを作ってください。

create role.json

{
    "Version": "2012-10-17",
    "Statement":[
        {
            "Effect": "Allow",
            "Principal":{
                "Service":"lambda.amazonaws.com"
            },
            "Action":"sts:AssumeRole"
        }
    ]
}

aws iam create-role --role-name [name] --assume-role-policy-document file://role.json

attach

aws iam attach-role-policy --role-name [role name] --policy-arn [policy arn]

では、もう準備は終わりです。本格的にLambda Functionを作って見ます!

Lambda Function

index.js

exports.handler = async function(event){
    console.log("creator:"+event.creator);
}

では、作ったら

zip -r [zip name].zip index.js

zipファイルを作ってください。

create Lambda Function

aws lambda create-function
--region [ex) ap-northeast-1]
--function-name [name]
--zip-file fileb://[zip file name].zip
--role [Lambda RoleのARN]
--handler index.handler
--runtime [ex) nodejs10.x]
--memory-size [ex) 128]

Lambda Function list

aws lambda list-functions

listでLambda functionを確認したら次はinvokeです。

invoke

Lambda Functionに渡す情報を作成して見ます。

parm.json

{"creator":"cm-kimseungyeon"}
aws lambda invoke
--invocation-type RequestResponse
--function-name [Lambda Function name]
--region [region ex)ap-northeast-1]
--log-type Tail
--payload fileb://parm.json
response.json
  • 簡単にOptionの説明
    • invocation-type: 三つのTypeがありますが、defaultはRequestResponseです。Lambda Functionを同期的に同作します。基本的に設定した時間まで同作します。
    • log-type: 二つのTypeがあります。Tail: responseにlogを含みます。
    • payload: Lambdaのeventへ渡す情報と考えばいいです。

詳しいOptionの情報はLambda-invokeを参考してください。

log確認

では、最後にLambda Functionのlogを見ます。Consoleで確認しても大丈夫ですが、AWS CLIで確認して見ます〜

まず、log Groupを確認します。

aws logs describe-log-groups --log-group-name-prefix "/aws/lambda/"

/aws/lambda/[lambda Function名前]を確認したら

aws logs describe-log-stremas --log-group-name "/aws/lambda/[lambda Function名前]"

streamを確認!します。多分一つのlogがあると思います。こっそり確認します。

aws logs get-log-events 
--log-group-name "/aws/lambda/[lambda Function名前]"
--log-stream-name [ex) "2020/09/29/[\$LATEST]~~"]

logを確認すれば下のように情報を確認することができます。

{
    "events": [
        {
            "timestamp": -,
            "message": "START RequestId: - Version: $LATEST\n",
            "ingestionTime": -
        },
        {
            "timestamp": -,
            "message": "[console.log()の確認ex)creator:cm-kimseungyeon]",
            "ingestionTime": -
        },
        {
            "timestamp": -,
            "message": "END RequestId: -",
            "ingestionTime": -
        },
        {
            "timestamp": -,
            "message": "-",
            "ingestionTime": -
        }
    ],
    "nextForwardToken": "-",
    "nextBackwardToken": "-"
}

以上でした!

参考資料

iam-create-policy
iam-create-role
Lambda-create-function
Lambda-list-functions
Lambda-invoke
Logs-describe-log-groups
Logs-describe-log-stremas
Logs-logs get-log-events

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.