이벤트 컨텍스트 형식 및 사용법

이벤트 컨텍스트 형식 및 사용법 (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는 언제든지 새 필드를 추가할 수 있으며, 이 경우 부 버전이 올라갈 수 있어요. 소프트웨어 롤아웃의 특성상 한 번에 여러 부 버전이 사용되는 것을 볼 수도 있어요.

더 알아보기 (Learn more)