이벤트 메시지 구조
이벤트를 게시하기 위해 Amazon S3이 전송하는 알림 메시지는 JSON 형식입니다.
이벤트 알림 구성에 대한 일반 개요와 지침은 Amazon S3 이벤트 알림 섹션을 참조하십시오.
이 예제는 이벤트 알림 JSON 구조의 버전 2.1을 보여줍니다. Amazon S3는 이 이벤트 구조의 버전 2.1, 2.2 및 2.3을 사용합니다. Amazon S3는 리전 간 복제 이벤트 알림에 버전 2.2를 사용합니다. S3 수명 주기, S3 Intelligent-Tiering, 객체 ACL, 객체 태깅 및 객체 복원 삭제 이벤트에는 버전 2.3을 사용합니다. 이러한 버전에는 작업과 관련된 추가 정보가 포함되어 있습니다. 버전 2.2 및 2.3은 Amazon S3가 현재 다른 모든 이벤트 알림 유형에 사용하는 버전 2.1과 호환됩니다.
{ "Records":[ { "eventVersion":"2.1", "eventSource":"aws:s3", "awsRegion":"us-west-2", "eventTime":"The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z) when Amazon S3 finished processing the request", "eventName":"The event type", "userIdentity":{ "principalId":"The unique ID of the IAM resource that caused the event" }, "requestParameters":{ "sourceIPAddress":"The IP address where the request came from" }, "responseElements":{ "x-amz-request-id":"The Amazon S3 generated request ID", "x-amz-id-2":"The Amazon S3 host that processed the request" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"The ID found in the bucket notification configuration", "bucket":{ "name":"The name of the bucket, for example,", "ownerIdentity":{ "principalId":"amzn-s3-demo-bucketThe Amazon retail customer ID of the bucket owner" }, "arn":"The bucket Amazon Resource Name (ARN)" }, "object":{ "key":"The object key name", "size":"The object size in bytes (as a number)", "eTag":"The object entity tag (ETag)", "versionId":"The object version if the bucket is versioning-enabled; null or not present if the bucket isn't versioning-enabled", "sequencer": "A string representation of a hexadecimal value used to determine event sequence; only used with PUT and DELETE requests" } }, "glacierEventData": { "restoreEventData": { "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z), when the temporary copy of the restored object expires", "lifecycleRestoreStorageClass": "The source storage class for restored objects" } } } ] }
이벤트 메시지 구조에 대한 다음 사항에 유의하십시오.
-
eventVersion키 값에는.major형식의 메이저 및 마이너 버전이 포함됩니다.minorAmazon S3가 이전 버전과 호환되지 않는 이벤트 구조를 변경하는 경우 주 버전이 증가합니다. 여기에는 이미 존재하는 JSON 필드를 제거하거나 필드의 콘텐츠가 표시되는 방식(예: 날짜 형식)을 변경하는 것이 포함됩니다.
Amazon S3이 이벤트 구조에 새 필드를 추가하는 경우 마이너 버전이 증가합니다. 이는 일부 또는 모든 기존 이벤트에 새 정보가 제공되는 경우 발생할 수 있습니다. 이는 새로 도입된 이벤트 유형에 대해서만 새 정보가 제공되는 경우에도 발생할 수 있습니다. 이벤트 구조의 새로운 마이너 버전과 호환성을 유지하려면 애플리케이션에서 새 필드를 무시하는 것이 좋습니다.
새로운 이벤트 유형이 도입되었지만 그와 달리 이벤트 구조는 수정되지 않는 경우 이벤트 버전이 변경되지 않습니다.
애플리케이션이 이벤트 구조의 구문을 올바로 분석할 수 있도록 메이저 버전 번호에 대해 같은 값인지 비교하는 것이 좋습니다. 애플리케이션이 예상하는 필드가 반드시 존재할 수 있도록 마이너 버전에 대해 크거나 같은 값인지 비교하는 것이 좋습니다.
-
eventName키 값은 이벤트 알림 유형 목록을 참조하지만s3:접두사는 포함하지 않습니다. -
userIdentity키 값은 이벤트를 발생시킨 AWS Identity and Access Management(IAM) 리소스(사용자, 역할, 그룹 등)의 고유 ID를 참조합니다. 각 IAM 식별 접두사(예: AIDA, AROA, AGPA)의 정의 및 고유 식별자를 얻는 방법에 대한 자세한 내용은 IAM 사용 설명서의 고유 식별자 섹션을 참조하세요. -
AWS Support의 도움을 받아 요청을 추적하려는 경우
responseElements키 값을 유용하게 사용할 수 있습니다.x-amz-request-id및x-amz-id-2모두 Amazon S3이 개별 요청을 추적하는 데 도움이 됩니다. 이러한 값은 이벤트를 시작한 요청에 대한 응답에서 Amazon S3가 반환하는 값과 동일합니다. 따라서 이러한 값을 사용하여 이벤트를 요청과 일치시킬 수 있습니다. -
s3키 값은 이벤트와 연관된 버킷 및 객체에 대한 정보를 제공합니다. 객체의 키 이름 값은 URL로 인코딩되어 있습니다. 예를 들어,red flower.jpg는red+flower.jpg가 됩니다. (Amazon S3는 응답의 콘텐츠 유형으로 "application/x-www-form-urlencoded"를 반환합니다.)ownerIdentity키 값은 버킷 소유자의 Amazon 소매(Amazon.com) 고객 ID에 해당합니다. 이 ID 값은 더 이상 사용되지 않으며 이전 버전과의 호환성을 위해서만 유지됩니다. -
sequencer키 값은 이벤트 시퀀스를 정의하는 방법을 제공합니다. 이벤트 알림은 이벤트가 발생한 순서대로 도착하지 않을 수 있습니다. 단, 객체를 생성(PUT요청)하고 객체를 삭제하는 이벤트의 알림에는sequencer가 포함됩니다. 이 값을 사용하여 주어진 객체 키에 대한 이벤트 순서를 결정할 수 있습니다.sequencer문자열을 동일한 객체 키의 두 가지 이벤트 알림과 비교할 경우sequencer16진수 값이 더 큰 이벤트 알림이 나중에 발생한 이벤트입니다. 이벤트 알림을 사용하여 별도의 데이터베이스 또는 Amazon S3 객체의 인덱스를 관리할 경우 각 이벤트 알림을 처리할 때sequencer값을 비교하고 저장하는 것이 좋습니다.다음 사항에 유의하세요.
-
sequencer키 값을 사용하여 서로 다른 객체 키의 이벤트 순서를 결정할 수는 없습니다. -
sequencer문자열의 길이는 다를 수 있습니다. 따라서 이러한 값을 비교하려면 먼저 더 짧은 값을 0으로 왼쪽 채움한 뒤 사전순 비교를 수행합니다.
-
-
glacierEventData키 값은s3:ObjectRestore:Completed이벤트에 대해서만 표시됩니다. -
restoreEventData키 값에는 복원 요청과 관련된 속성이 포함되어 있습니다. -
replicationEventData키 값은 복제 이벤트에 대해서만 표시됩니다. -
intelligentTieringEventData키 값은 S3 Intelligent-Tiering 이벤트에만 표시됩니다. -
lifecycleEventData키 값은 S3 수명 주기 전환 이벤트에만 표시됩니다.
예제 메시지
다음은 Amazon S3 이벤트 알림 메시지의 예입니다.
Amazon S3 테스트 메시지
버킷에 이벤트 알림을 구성한 후 Amazon S3가 다음과 같은 테스트 메시지를 전송합니다.
{ "Service":"Amazon S3", "Event":"s3:TestEvent", "Time":"2014-10-13T15:57:02.089Z", "Bucket":"", "RequestId":"5582815E1AEA5ADF", "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE" }amzn-s3-demo-bucket
참고
s3:TestEvent 메시지는 일반 S3 이벤트 알림과 다른 형식을 사용합니다. 앞에 표시된 Records 배열 구조를 사용하는 다른 이벤트 알림과 달리 테스트 이벤트는 직접 필드가 있는 단순화된 형식을 사용합니다. 이벤트 처리를 구현할 때 코드가 두 메시지 형식을 구분하고 올바르게 처리할 수 있는지 확인합니다.
PUT 요청을 사용하여 객체를 생성할 때의 예제 메시지
다음은 Amazon S3에서 s3:ObjectCreated:Put 이벤트를 게시하기 위해 전송하는 메시지의 예입니다.
{ "Records":[ { "eventVersion":"2.1", "eventSource":"aws:s3", "awsRegion":"us-west-2", "eventTime":"1970-01-01T00:00:00.000Z", "eventName":"ObjectCreated:Put", "userIdentity":{ "principalId":"AIDAJDPLRKLG7UEXAMPLE" }, "requestParameters":{ "sourceIPAddress":"172.16.0.1" }, "responseElements":{ "x-amz-request-id":"C3D13FE58DE4C810", "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"testConfigRule", "bucket":{ "name":"amzn-s3-demo-bucket", "ownerIdentity":{ "principalId":"A3NL1KOZZKExample" }, "arn":"arn:aws:s3:::amzn-s3-demo-bucket" }, "object":{ "key":"HappyFace.jpg", "size":1024, "eTag":"d41d8cd98f00b204e9800998ecf8427e", "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko", "sequencer":"0055AED6DCD90281E5" } } } ] }