이벤트 메시지 구조
이벤트를 게시하기 위해 Amazon S3이 전송하는 알림 메시지는 JSON 형식입니다.
이벤트 알림 구성에 대한 일반 개요와 지침은 Amazon S3 이벤트 알림 섹션을 참조하십시오.
이 예에서는 이벤트 알림 JSON 구조의 버전 2.4를 보여줍니다. 버전 2.4부터 Amazon S3는 모든 이벤트 유형에 단일 통합 버전을 사용합니다. 각 이벤트에는 작업과 관련된 추가 정보가 포함되어 있습니다. 이전에 Amazon S3는 일반 이벤트의 경우 버전 2.1, 교차 리전 복제 이벤트의 경우 버전 2.2, S3 수명 주기, S3 Intelligent-Tiering, 객체 ACL, 객체 태그 지정 및 객체 복원 삭제 이벤트의 경우 버전 2.3을 사용했습니다.
버전 2.4 이전에는 다양한 이벤트 유형이 다양한 버전의 이벤트 알림 구조(2.1, 2.2, 2.3)를 사용했습니다. 버전 2.4부터 모든 이벤트 유형은 단일 통합 버전을 사용합니다. 앞으로 스키마가 발전할 때마다 모든 이벤트 유형에서 이벤트 버전이 일관되게 증가합니다.
{ "Records":[ { "eventVersion":"2.4", "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 사용 설명서의 고유 식별자 섹션을 참조하세요. -
responseElements의 도움을 받아 요청을 추적하려는 경우 AWS Support 키 값을 유용하게 사용할 수 있습니다.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 수명 주기 전환 이벤트에만 표시됩니다. -
objectAnnotation키 값은 주석 이벤트에 대해서만 표시됩니다(ObjectAnnotation:Put및ObjectAnnotation:Delete). 주석name,size(Put 이벤트만 해당) 및eTag(Put 이벤트만 해당)가 있는 배열이 포함되어 있습니다. -
ObjectCreated:Copy이벤트의 경우object블록에는 복사된 객체에 주석이 있는지 여부를 나타내는hasObjectAnnotation부울 필드가 포함됩니다.
예제 메시지
다음은 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.4", "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" } } } ] }