[10/13] 람다함수 터미널에서 생성/수정/호출 하기
Using the AWS CLI to Create an AWS Lambda Function
#1 IAM에서 role 확인 후 복사해두기
인스턴스 확인 후 SSH 접속
$ aws --version
aws-cli/1.16.113 Python/2.7.16 Linux/4.14.173-106.229.amzn1.x86_64 botocore/1.12.103
$ aws lambda list-functions --region us-east-1
{
"Functions": []
}
빈 목록이 나온다
람다로 가서 등록된 함수 없는지 확인(위에 안 나와있으니 없어야함)
* 여기서 잠깐!! 저런 터미널에서 쓰는 aws 명령어는 아래에.
node.js의 JavaScript용 AWS SDK
https://aws.amazon.com/ko/sdk-for-node-js/
https://docs.aws.amazon.com/ko_kr/AWSJavaScriptSDK/latest/index.html
https://docs.aws.amazon.com/ko_kr/AWSJavaScriptSDK/latest/AWS/S3.html
https://docs.aws.amazon.com/ko_kr/AWSJavaScriptSDK/latest/AWS/S3.html#listBuckets-property
https://docs.aws.amazon.com/ko_kr/cli/latest/reference/lambda/list-functions.html
https://docs.aws.amazon.com/cli/latest/reference/lambda/invoke.html
명령어 쓸 때 항상 어떤 일을 하는지 레퍼런스도 찾아보고 그러렴
이제 람다함수를 만들자
// Here is where we load the SDK for JavaScript const AWS = require('aws-sdk');
// We need to set the region. AWS.config.update({region: 'us-east-1'});
// Creating S3 service object const s3 = new AWS.S3({apiVersion: '2006-03-01'});
exports.handler = (event, context, callback) => { // Here we list all S3 Buckets s3.listBuckets(function(err, data) { if (err) { console.log("Error:", err); } else { console.log("List of all S3 Buckets", data.Buckets); } }); }; |
만든 람다함수가 무슨 일을 하는 지 보자
* s3.listBuckets(function(err, data)
분산된 환경에서 싱크방식보다 비동기방식이 낫다
던져놓고 응답이 올때까지 다른 일을 하다가 응답이 오면 호출해서 분기가 된다 → 콜백함수
* 익명함수
이름이 없다
한 번만 호출하고 말 것들 이렇게
listBucket함수를 던지고 받는거의 err, data 에 따라
if err 면 "Error" 출력하고
아니면 data.Buckets으로 출력
이러한 것들이 궁금할 때 API 참고해야한다
암튼 저 코드를 가지고
$ vi lambda_function.js
여기다 붙여넣기
:set paste 해서 i 하고 우클릭으로 복붙돼 우와
$ zip lambda_function.zip lambda_function.js
adding: lambda_function.js (deflated 30%)
$ ll
total 8
-rw-rw-r-- 1 cloud_user cloud_user 337 Oct 13 05:57 lambda_function.js
-rw-rw-r-- 1 cloud_user cloud_user 421 Oct 13 05:57 lambda_function.zip
$ aws lambda create-function --region us-east-1 --function-name "ListS3Buckets" --runtime "nodejs12.x" --role "arn:aws:iam::251414772678:role/lambda_exec_role_LA" --handler "lambda_function.handler" --zip-file fileb:///home/cloud_user/lambda_function.zip
{
"TracingConfig": {
"Mode": "PassThrough"
},
"CodeSha256": "VVskayDzHS6B05dol/Ff0S3aVwJSUpOGuzlDs3Mwejw=",
"FunctionName": "ListS3Buckets",
"CodeSize": 488,
"RevisionId": "6c282cc3-9240-45aa-a7dd-049a78178b4e",
"MemorySize": 128,
"FunctionArn": "arn:aws:lambda:us-east-1:251414772678:function:ListS3Buckets",
"Version": "$LATEST",
"Role": "arn:aws:iam::251414772678:role/lambda_exec_role_LA",
"Timeout": 3,
"LastModified": "2020-10-13T06:42:48.705+0000",
"Handler": "lambda_function.handler",
"Runtime": "nodejs12.x",
"Description": ""
}
람다 생성된 것 확인
터미널로 돌아가서 기능을 업데이트(수정)
$ aws lambda update-function-configuration --region us-east-1 --function-name "ListS3Buckets" --description "Creating our S3 function via CLI." --timeout 5 --memory-size 256
{
"TracingConfig": {
"Mode": "PassThrough"
},
"CodeSha256": "VVskayDzHS6B05dol/Ff0S3aVwJSUpOGuzlDs3Mwejw=",
"FunctionName": "ListS3Buckets",
"CodeSize": 488,
"RevisionId": "6a2f74a8-e867-409a-bb25-064b4a42bf68",
"MemorySize": 256,
"FunctionArn": "arn:aws:lambda:us-east-1:251414772678:function:ListS3Buckets",
"Version": "$LATEST",
"Role": "arn:aws:iam::251414772678:role/lambda_exec_role_LA",
"Timeout": 5,
"LastModified": "2020-10-13T06:45:23.437+0000",
"Handler": "lambda_function.handler",
"Runtime": "nodejs12.x",
"Description": "Creating our S3 function via CLI."
}
업데이트 된 것 확인
AWS CLI를 사용하여 함수 호출
$ aws lambda invoke --region us-east-1 --function-name "ListS3Buckets" OUTFILE.log
{
"ExecutedVersion": "$LATEST",
"StatusCode": 200
}
* 맨 마지막에 <outfile> 나온다
이제 클라우드 왓치로 들어가보면
로그가 쌓인 것을 볼 수있다.
람다함수에서 찍어주는 것임
커맨드라인에서 람다함수 생성 수정 호출이 가능하다는 것을 보았다!!!