삭제
했다, ~가 올라갔
다)S3 -> Lambda -> DB
IoT -> Lambda -> SNS
블루프린트 사용 : 샘플 코드 및 구축 Lambda 애플리케이션을 위한 구성 사전 설정을 일반적인 사용 사례를 살펴봅니다. (여러 상황을 AWS가 세팅해놓은것)
Lambda가 이름이 Chabbo_lambdafunction-role-e41xhheh
이고 Amazon CloudWatch Logs에 로그를 업로드할 수 있는 권한이 포함된 실행 역할을 생성합니다. -> cloud watch 연동 가능하다는 것!
기본으로 이렇게 Key1을 print해주는 간단 코드를 줍니다.
import json
print('Loading function')
def lambda_handler(event, context):
#print("Received event: " + json.dumps(event, indent=2))
print("value1 = " + event['key1'])
print("value2 = " + event['key2'])
print("value3 = " + event['key3'])
return event['key1'] # Echo back the first key value
#raise Exception('Something went wrong')
한번 테스트 이벤트를 발생시켜 테스트해봅니다.
저는 키값을 바꿔서 어떻게 뜨는지 확인해볼겁니당
실행결과 성공이고, key1인 "차"
를 출력해줬습니다! 또한 얼마나 시간이 걸렸고 메모리, 리소스가 얼마나 사용됐는지 보여주네요
여기를 클릭해보면
CloudWatch에서 로그가 실행된게 보이고 어떤 함수가 언제 발생됐는지도 다 확인할 수 있습니다! 캬
그리고 이번엔 코드에 에러를 발생시켜볼게욤
import json
print('Loading function')
def lambda_handler(event, context):
#print("Received event: " + json.dumps(event, indent=2))
print("value1 = " + event['key1'])
print("value2 = " + event['key2'])
print("value3 = " + event['key3'])
return event['key4'] # 이렇게 없는 값을 넣어줘봅니다
#raise Exception('Something went wrong')
배경부터 빨갛게 실패를 띄워주네요 KeyError
입니다. 맞죵
-S3에 PutObject가 발생하면 Lambda를 실행시켜보자.
Temperature 데이터 입력되는데, 해당 온도가 넘으면 경고 울려주기
S3에 접근할 수 있는 람다 만들기
S3가서 PUT 이벤트 만들기
람다 가서 연결 됐는지 확인
S3에 이상 데이터 넣어서 람다 확인
-> 클라우드 워치 로그에 코드가 실행된 것을 볼 수 있습니다! 와우
저는 궁금해서 Event를 print시켜봤는데여
{'Records': [{'eventVersion': '2.1',
'eventSource': 'aws:s3',
'awsRegion': 'ap-northeast-2',
'eventTime': '2022-11-06T12:41:08.786Z',
'eventName': 'ObjectCreated:Put',
'userIdentity':
{'principalId': 'A2FZT8T1FFNM16'},
'requestParameters':
{'sourceIPAddress': '220.82.40.31'},
'responseElements':
{'x-amz-request-id': 'Y02G7FQ3VDF25AZH',
'x-amz-id-2': 'Q1WslfdYezK8eCByKteSmKx2OrgCa2iLR74bzoYwLy5idwlZOYjohrdEUwEUXdBo+lrUxjb1T66TTpS27xMN24AnLsDhgS+9zw+3vVX8VNw='},
's3':
{'s3SchemaVersion': '1.0',
'configurationId': 'chabo_lambda_event',
'bucket':
{'name': 'cha-lambdatrig',
'ownerIdentity':
{'principalId': 'A2FZT8T1FFNM16'},
'arn': 'arn:aws:s3:::cha-lambdatrig'},
'object':
{'key': 'ex1.json',
'size': 21,
'eTag': '680b7998a0cfc13644db9d8a2c058ecf',
'sequencer': '006367AB64C08D4F8A'
}
}
}]}
이벤트 상황에대한 다양한 정보가 JSON형태로 들어있는 것을 볼 수 있습니다. 나중에 코드에서 상황을 불러올 때 해당 변수로 타고 들어가서 보면 될 것 같네요!
다양한 람다를 활용해봤는데, 상황에 맞춰서 코드를 짜는게 중요하다는 생각이 든ㄷㅏ!