이벤트 컨텍스트 형식 및 사용법 - Amazon Simple Storage Service

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

Amazon S3 객체 Lambda는 AWS 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 객체 Lambda 연결에 대한 입력 및 출력 세부 정보입니다.

    • inputS3Url – Amazon S3에서 원본 객체를 가져오는 데 사용할 수 있는 미리 서명된 URL입니다. URL은 원래 호출자의 ID를 사용하여 서명되며 URL이 사용될 때 해당 사용자의 권한이 적용됩니다. URL에 서명된 헤더가 있는 경우 Lambda 함수가 Amazon S3에 대한 호출에 이러한 헤더를 포함해야 합니다(Host 헤더 제외).

    • outputRoute - Lambda 함수에서 WriteGetObjectResponse를 호출할 때 S3 객체 Lambda URL에 추가되는 라우팅 토큰입니다.

    • outputToken – S3 객체 Lambda에서 원래 호출자와 일치하는 WriteGetObjectResponse 호출을 찾을 때 사용되는 불투명 토큰입니다.

  • configuration – 객체 Lambda 액세스 포인트에 대한 구성 정보입니다.

    • accessPointArn – 이 요청을 수신한 객체 Lambda 액세스 포인트의 Amazon 리소스 이름(ARN)입니다.

    • supportingAccessPointArn – 객체 Lambda 액세스 포인트 구성에 지정된 지원 액세스 포인트의 ARN입니다.

    • payload – 객체 Lambda 액세스 포인트 구성에 적용되는 사용자 지정 데이터입니다. S3 객체 Lambda는 이 데이터를 불투명 한 문자열로 취급하므로 사용하기 전에 데이터를 디코딩해야 할 수도 있습니다.

  • userRequest – S3 객체 Lambda에 대한 원래 호출에 대한 정보입니다.

    • url – 권한 부여 관련 쿼리 파라미터를 제외하고 S3 객체 Lambda에서 수신한 요청의 디코딩된 URL입니다.

    • headers – 권한 부여 관련 헤더를 제외하고 원래 호출의 HTTP 헤더와 해당 값을 포함하는 문자열에 대한 문자열 맵입니다. 동일한 헤더가 여러 번 나타나는 경우 동일한 헤더를 갖는 각 인스턴스의 값은 쉼표로 구분된 목록으로 결합됩니다. 이 맵에는 원래 헤더의 대/소문자가 유지됩니다.

  • userIdentity – S3 객체 Lambda를 호출한 ID에 대한 세부 정보입니다. 자세한 내용은 AWS CloudTrail 사용 설명서추적을 위해 데이터 이벤트 로깅을 참조하세요.

    • type – 자격 증명의 유형입니다.

    • accountId – 자격 증명이 속한 AWS 계정 계정입니다.

    • userName – 호출을 수행한 자격 증명의 표시 이름입니다.

    • principalId – 호출을 수행한 자격 증명에 대한 고유 식별자입니다.

    • arn – 호출을 수행한 보안 주체의 ARN입니다. ARN의 마지막 섹션에는 호출을 수행한 사용자 또는 역할이 포함됩니다.

    • sessionContext – 임시 보안 자격 증명으로 요청이 이루어진 경우 이 요소는 해당 자격 증명을 위해 생성된 세션에 관한 정보를 제공합니다.

    • invokedBy – 요청을 수행한 AWS 서비스의 이름입니다(예: Amazon EC2 Auto Scaling 또는 AWS Elastic Beanstalk).

    • sessionIssuer – 임시 보안 자격 증명으로 요청이 이루어진 경우 이 요소는 자격 증명을 획득하는 방법에 관한 정보를 제공합니다.

  • protocolVersion – 제공된 컨텍스트의 버전 ID입니다. 이 필드의 형식은 {Major Version}.{Minor Version}입니다. 마이너 버전 번호는 항상 2자리 숫자입니다. 필드의 의미 체계를 제거하거나 변경하면 메이저 버전 범프가 필요하며 활성 옵트인이 요구됩니다. Amazon S3는 언제든지 새 필드를 추가할 수 있으며, 이 시점에서 마이너 버전 범프가 발생할 수 있습니다. 소프트웨어 롤아웃의 특성으로 인해 한 번에 여러 개의 마이너 버전이 표시될 수 있습니다.