이벤트 컨텍스트 형식 및 사용법
이벤트 컨텍스트 형식 및 사용법 (Event context format and usage)
Amazon S3 Object Lambda는 여러분의 AWS Lambda 함수로 전달되는 이벤트에서 처리 중인 요청에 대한 컨텍스트를 제공해요. 아래에 예제 요청을 보여 드리고, 그 뒤에 각 필드에 대한 설명을 정리할게요.
참고 2025년 11월 7일부터 S3 Object Lambda는 현재 이 서비스를 사용 중인 기존 고객과 일부 AWS 파트너 네트워크(APN) 파트너만 이용할 수 있어요. S3 Object Lambda와 비슷한 기능이 필요하다면 Amazon S3 Object Lambda 가용성 변경 문서를 확인해 주세요.
출처: 문서
본문
다음은 요청의 예시예요.
{
"xAmzRequestId":"requestId",
"getObjectContext":{
"inputS3Url":"https://my-s3-ap-111122223333.s3-accesspoint.us-east-1.amazonaws.com/example?X-Amz-Security-Token=<snip>",
"outputRoute":"io-use1-001",
"outputToken":"OutputToken"
},
"configuration":{
"accessPointArn":"arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/example-object-lambda-ap",
"supportingAccessPointArn":"arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap",
"payload":"{}"
},
"userRequest":{
"url":"https://object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com/example",
"headers":{
"Host":"object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com",
"Accept-Encoding":"identity",
"X-Amz-Content-SHA256":"e3b0c44298fc1example"
}
},
"userIdentity":{
"type":"AssumedRole",
"principalId":"principalId",
"arn":"arn:aws:sts::111122223333:assumed-role/Admin/example",
"accountId":"111122223333",
"accessKeyId":"accessKeyId",
"sessionContext":{
"attributes":{
"mfaAuthenticated":"false",
"creationDate":"Wed Mar 10 23:41:52 UTC 2021"
},
"sessionIssuer":{
"type":"Role",
"principalId":"principalId",
"arn":"arn:aws:iam::111122223333:role/Admin",
"accountId":"111122223333",
"userName":"Admin"
}
}
},
"protocolVersion":"1.00"
}
요청에는 다음 필드가 포함돼요.
xAmzRequestId— 이 요청의 Amazon S3 요청 ID예요. 디버깅에 도움이 되도록 이 값을 로그로 남길 것을 권장해요.getObjectContext— Amazon S3 및 S3 Object Lambda에 대한 연결의 입력 및 출력 세부 정보예요.inputS3Url— Amazon S3에서 원본 객체를 가져오는 데 사용할 수 있는 사전 서명 URL이에요. 이 URL은 원래 호출자의 자격 증명으로 서명되며, URL을 사용할 때는 해당 사용자의 권한이 적용돼요. URL에 서명된 헤더가 있다면 Lambda 함수는Host헤더를 제외하고 이 헤더들을 Amazon S3 호출에 포함해야 해요.outputRoute— Lambda 함수가WriteGetObjectResponse를 호출할 때 S3 Object Lambda URL에 추가되는 라우팅 토큰이에요.outputToken— S3 Object Lambda가WriteGetObjectResponse호출을 원래 호출자와 매칭하는 데 사용하는 불투명 토큰이에요.
configuration— Object Lambda 접근 지점에 대한 구성 정보예요.accessPointArn— 이 요청을 받은 Object Lambda 접근 지점의 Amazon 리소스 이름(ARN)이에요.supportingAccessPointArn— Object Lambda 접근 지점 구성에 지정된 지원 접근 지점의 ARN이에요.payload— Object Lambda 접근 지점 구성에 적용된 사용자 지정 데이터예요. S3 Object Lambda는 이 데이터를 불투명 문자열로 취급하므로, 사용 전에 디코딩이 필요할 수 있어요.
userRequest— S3 Object Lambda에 대한 원래 호출에 대한 정보예요.url— 권한 부여와 관련된 쿼리 파라미터를 제외한, S3 Object Lambda가 수신한 요청의 디코딩된 URL이에요.headers— 권한 부여와 관련된 헤더를 제외한, 원래 호출의 HTTP 헤더와 그 값이 담긴 문자열 대 문자열 맵이에요. 같은 헤더가 여러 번 나타나면 각 헤더 인스턴스의 값이 쉼표로 구분된 목록으로 결합돼요. 원래 헤더의 대소문자는 이 맵에서 유지돼요.
userIdentity— S3 Object Lambda에 호출한 자격 증명에 대한 세부 정보예요. 자세한 내용은 AWS CloudTrail 사용자 안내서의 트레일 데이터 이벤트 로깅을 참고하세요.type— 자격 증명의 유형이에요.accountId— 자격 증명이 속한 AWS 계정이에요.userName— 호출한 자격 증명의 친숙한 이름이에요.principalId— 호출한 자격 증명의 고유 식별자예요.arn— 호출한 보안 주체의 ARN이에요. ARN의 마지막 부분에는 호출한 사용자나 역할이 포함돼요.sessionContext— 요청이 임시 보안 자격 증명으로 이루어진 경우, 이 요소는 해당 자격 증명에 대해 만들어진 세션에 대한 정보를 제공해요.invokedBy— Amazon EC2 Auto Scaling이나 AWS Elastic Beanstalk처럼 요청을 만든 AWS 서비스의 이름이에요.sessionIssuer— 요청이 임시 보안 자격 증명으로 이루어진 경우, 이 요소는 자격 증명이 어떻게 얻어졌는지에 대한 정보를 제공해요.
protocolVersion— 제공된 컨텍스트의 버전 ID예요. 이 필드의 형식은{Major Version}.{Minor Version}이에요. 부 버전 번호는 항상 두 자리 숫자예요. 필드의 의미가 제거되거나 변경되면 주 버전을 올려야 하고 활성 옵트인이 필요해요. Amazon S3는 언제든지 새 필드를 추가할 수 있으며, 이 경우 부 버전이 올라갈 수 있어요. 소프트웨어 롤아웃의 특성상 한 번에 여러 부 버전이 사용되는 것을 볼 수도 있어요.