카테고리 없음

[10/13] 람다함수 터미널에서 생성/수정/호출 하기

그래놀라_ 2020. 10. 13. 15:27

Using the AWS CLI to Create an AWS Lambda Function

#1 IAM에서 role 확인 후 복사해두기

arn:aws:iam::251414772678:role/lambda_exec_role_LA

 

인스턴스 확인 후 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

명령어 쓸 때 항상 어떤 일을 하는지 레퍼런스도 찾아보고 그러렴


 

 

이제 람다함수를 만들자

raw.githubusercontent.com/linuxacademy/content-lambda-deep-dive/master/section_4/live_activity_5/lambda_function.js

// 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 참고해야한다

data에 뭐가 들어있는지 알 수 있다

 

암튼 저 코드를 가지고 

$ 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."

}

 

 

 

여기 목록에서 invoke 선택

 

 

업데이트 된 것 확인

 

 

 

AWS CLI를 사용하여 함수 호출

$ aws lambda invoke --region us-east-1 --function-name "ListS3Buckets" OUTFILE.log

{

    "ExecutedVersion": "$LATEST",

    "StatusCode": 200

}

 

 

* 맨 마지막에 <outfile> 나온다

저장된 파일명을지정해주는 것

 

위 명령어 결과

 

이제 클라우드 왓치로 들어가보면

로그가 쌓인 것을 볼 수있다.

이거는 람다함수에서

람다함수에서 찍어주는 것임

커맨드라인에서 람다함수 생성 수정 호출이 가능하다는 것을 보았다!!!