코드를 쓰기까지
- 콘솔에 로그인
- Lambda 선택
- 함수
- 함수 생성
- 새로 작성
- 함수 이름: hello_lambda
- 런타임: Python 3.x
- 권한: 기본 Lambda 권한을 가진 새 역할 생성
- "Lambda 이름이 [myFunctionName]-role-[some_number_and_alphabet]이고 Amazon CloudWatch Logs에 로그를 업로드할 수 있는 권한이 포함된 실행 역할을 생성합니다."
- 함수 생성
hello_lambda
- Code entry type: 코드 인라인 편집
- 런타임: Python 3.x
- 핸들러: lambda_function.lambda_handler
- 오른쪽 위 '테스트' 버튼: 테스트 이벤트
- evend: HelloKeys
함수 핸들러(handler)
import json
def lambda_handler(event, context):
# TODO implement
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
- 일반적인 구문
def handler_name(event, context): ... return some_value
- event
- event 데이터를 핸들러에게 전달
dict
,list
,str
,int
,float
,NoneType
만 가능- 함수 호출 시 이벤트의 내용과 구조 결정
- Amazon Kinesis, Amazon DynamoDB, Amazon Simple Queue Service의 event만 읽을 수 있음
- 다른 서비스: 다른 서비스에 권한 부여 후 이 서비스가 이벤트를 생성하고 함수를 직접 호출하도록 구성
- Lambda 함수를 동기적으로 호출하는 서비스
- Elastic Load Balancing(Application Load Balancer)
- Amazon Cognito
- Amazon Lex
- Amazon Alexa
- Amazon API Gateway
- Amazon CloudFromt
- Amazon Kinesis Data Firehose
- AWS Step Functions
- Amazon Simple Storage Service 배치
- 비동기적으로 호출하는 서비스: Lambda는 이벤트를 함수에 전달하기 전에 대기열에 추가하고 다른 서비스는 이벤트가 대기열에 추가되는 즉시 성공 결과를 받지만 그 후의 일은 모름. 오류 발생시에는 Lambda가
재시도
하고배달 못한 편지 대기열
에 시패 이벤트를 보냄- Amazon Simple Storage Service
- Amazon Simple Notification Service
- Amazon Simple Email Service
- AWS CloudFormation
- Amazon CloudWatch Logs
- Amazon CloudWatch Events
- AWS CodeCommit
- AWS Config
- AWS IoT
- AWS IoT Events
- AWS CodePipeline
- context
- 런타임 정보를 핸들러에게 제공하기 위함
- 호출, 함수, 실행 환경 등에 대한 정보를 제공하는 메서드, 속성을 제공
print HelloKeys
-
HelloKeys: test event
{ "key1": "value1", "key2": "value2", "key3": "value3" }
-
lambda_handdler method: 동작 확인을 위해 대충 내용을 바꿔줌
import json def lambda_handler(event, context): # TODO implement print(f"event => {event}") print(f"type(event) => {type(event)}") print(f"context => {context}") print(f"tyoe(context) => {type(context)}") return event, context
-
저장
버튼 -
테스트
버튼
Response:
{
"errorMessage": "Unable to marshal response: <bootstrap.LambdaContext object at [position]> is not JSON serializable",
"errorType": "Runtime.MarshalError"
}
Request ID:
"[Requested_ID]"
Function Logs:
START RequestId: [Requested_ID] Version: $LATEST
event => {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
type(event) => <class 'dict'>
context => <bootstrap.LambdaContext object at 0x7f4bc2446ed0>
Error
- to be continue...
'AWS 노트' 카테고리의 다른 글
AWS Lambda Python 실행기 (3) 특정 Lambda 함수로만 특정 S3 Bucket에 접근 가능하도록 IAM역할 부여하기 (0) | 2020.04.07 |
---|---|
AWS Lambda Python 실행기 (2) (0) | 2020.04.06 |
AWS Lambda (0) | 2020.04.03 |
AWS IAM (0) | 2020.04.03 |
AWS EC2, CLI (0) | 2020.04.03 |