기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
대용량 페이로드를 전달하는 대신 Amazon S3 ARN 사용
상태 사이에 대용량 데이터 페이로드를 전달하는 실행은 종료될 수 있습니다. 상태 간에 전달하는 데이터가 256KB를 초과할 수 있는 경우 Amazon Simple Storage Service(S3)를 사용하여 데이터를 저장하고 Payload
파라미터에서 버킷의 Amazon 리소스 이름(ARN)을 파싱하여 버킷 이름과 키 값을 가져옵니다. 또는 실행에서 더 작은 용량의 페이로드를 전달하도록 구현을 조정합니다.
다음 예제에서 상태 시스템은 입력을 Amazon S3 버킷의 JSON 파일을 처리하는 AWS Lambda 함수에 전달합니다. 이 상태 시스템을 실행하면 Lambda 함수에서 JSON 파일 콘텐츠를 읽고 파일 콘텐츠를 출력으로 반환합니다.
Lambda 함수 생성
라는 다음 Lambda 함수는 특정 Amazon S3 버킷에 저장된 JSON 파일의 콘텐츠를 읽습니다.pass-large-payload
참고
이 Lambda 함수를 만든 후에는 해당 IAM 역할에 Amazon S3 버킷에서 읽을 수 있는 적절한 권한을 제공해야 합니다. 예를 들어 AmazonS3ReadOnlyAccess 권한을 Lambda 함수 역할에 연결합니다.
import json import boto3 import io import os s3 = boto3.client('s3') def lambda_handler(event, context): event = event['Input'] final_json = str() s3 = boto3.resource('s3') bucket = event['bucket'].split(':')[-1] filename = event['key'] directory = "/tmp/{}".format(filename) s3.Bucket(bucket).download_file(filename, directory) with open(directory, "r") as jsonfile: final_json = json.load(jsonfile) os.popen("rm -rf /tmp") return final_json
상태 시스템 만들기
다음 상태 시스템은 이전에 만든 Lambda 함수를 간접적으로 호출합니다.
{ "StartAt":"Invoke Lambda function", "States":{ "Invoke Lambda function":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke", "Parameters":{ "FunctionName":"arn:aws:lambda:us-east-2:123456789012:function:
pass-large-payload
", "Payload":{ "Input.$":"$" } }, "OutputPath": "$.Payload", "End":true } } }
대량의 데이터를 입력에 전달하는 대신 해당 데이터를 Amazon S3 버킷에 저장하고 버킷의 Amazon 리소스 이름(ARN)을 Payload
파라미터에 전달하여 버킷 이름과 키 값을 가져올 수 있습니다. 그러면 Lambda 함수에서 해당 ARN을 사용하여 데이터에 직접 액세스할 수 있습니다. 다음은 상태 시스템 실행을 위한 입력의 예제입니다. 여기서 데이터는 data.json
이라는 Amazon S3 버킷의
에 저장됩니다.large-payload-json
{
"key": "data.json",
"bucket": "arn:aws:s3:::large-payload-json
"
}