[AWS] Lambda API
포스트
취소

[AWS] Lambda API

AWS SDK인 boto3의 Lambda와 관련된 주요 메서드를 알아 보겠습니다.

공통

1
2
3
4
import boto3
import json

client = boto3.client("lambda")

list_functions()

list_functions은 lambda 함수의 목록을 확인하는 메서드입니다.

한 번에 최대 50개의 함수 목록만 출력되며, 그 이상의 함수가 있을 경우 NextMarker 키를 사용해 페이징 처리합니다.

1
2
3
4
response = client.list_functions()

for function in response['Functions']:
    print(function['FunctionName'], function['Runtime'], function['LastModified'])

invoke()

invoke는 지정한 Lambda 함수에 이벤트 데이터를 전달하고, 해당 함수의 실행 결과를 받을 수 있게 하는 메서드입니다.

InvocationType를 통해 호출 방식을 지정할 수 있습니다.

InvocationType=”RequestResponse”

  • Default 처리 방식
  • 동기 호출
  • Lambda 함수가 실행을 마칠 때까지 기다리고, 그 결과를 응답으로 받음
  • response[‘Payload’]를 통해 반환값 확인 가능
  • 호출 결과가 필요할 때 사용 (예시. API 처리, 테스트 등)
1
2
3
4
5
6
7
8
9
10
response = client.invoke(
    FunctionName=lambda_function_name,
    InvocationType="RequestResponse",
    Payload=json.dumps({"key1": "value1"}),
)

payload_bytes = response['Payload'].read() # byte
payload_str = payload_bytes.decode("utf-8") # json string
payload_dict = json.loads(payload_str) # string
print(payload_dict)

참고로 lambda_client.invoke()를 호출 response에서 Payload는 스트림 객체 형태로 제공됩니다. 이 값을 확인하기 위해서는 .read()를 적용해야 합니다.

InvocationType=”Event”

  • 비동기 호출
  • 함수 호출 시 202 Accepted 응답 즉시 반환
  • 실제 실행 결과는 받을 수 없고, 에러도 받지 않음
  • 호출 결과를 기다릴 필요가 없을 때 (예시. 로깅, 알림, 후속 처리 트리거 등) 사용
1
2
3
4
5
6
response = client.invoke(
    FunctionName=lambda_function_name,
    InvocationType="Event",
    Payload=json.dumps({"key1": "value1"}),
)
print(response['StatusCode']) # 202: Accepted

InvocationType=”DryRun”

  • 호출 시도만 하고 실행은 하지 않음
  • 권한 확인 용도 (invoke 권한이 있는지만 체크)
  • IAM 권한 검증, 배포 전 테스트 용도로 사용
1
2
3
4
5
6
response = client.invoke(
    FunctionName=lambda_function_name,
    InvocationType="DryRun",
    Payload=json.dumps({"key1": "value1"}),
)
response['StatusCode'] # 204: No Content
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.