
AWSCLIでLambdaを触ってみた
この記事は公開されてから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