객체 키 이름 필터링을 사용하여 이벤트 알림 구성 - Amazon Simple Storage Service

객체 키 이름 필터링을 사용하여 이벤트 알림 구성

Amazon S3 이벤트 알림을 구성할 때 Amazon S3에서 알림을 전송하도록 하는 지원되는 Amazon S3 이벤트 유형을 지정해야 합니다. 지정하지 않은 이벤트 유형이 S3 버킷에 발생하면 Amazon S3에서 알림을 전송하지 않습니다.

객체 키 이름의 접두사 및 접미사로 알림을 필터링하도록 구성할 수 있습니다. 예를 들어, 파일 이름 확장명이 ".jpg"인 이미지 파일이 버킷에 추가될 경우에만 알림을 받는 구성을 설정할 수 있습니다. 또는 접두사가 'images/'인 객체가 버킷에 추가될 때에는 Amazon SNS 주제에 알림을 전송하고, 동일한 버킷에서 접두사가 'logs/' 인 객체에 대한 알림은 AWS Lambda 함수로 전송하도록 구성할 수도 있습니다.

Amazon S3 콘솔에서 객체 키 이름 필터링을 사용하는 알림 구성을 설정할 수 있습니다. AWS SDK 또는 REST API를 통해 Amazon S3 API를 직접 사용하면 됩니다. 콘솔 UI를 사용하여 버킷에 알림 구성을 설정하는 방법에 대한 자세한 내용은 Amazon S3 콘솔을 사용하여 이벤트 알림 사용 설정 및 구성 Amazon EventBridge 사용 설정 섹션을 참조하세요.

Amazon SQS, Amazon SNS 및 Lambda 사용에서 설명한 대로, Amazon S3은 버킷과 연결된 알림 하위 리소스에 XML로 알림 구성을 저장합니다. 알림의 규칙을 정의하여 객체 키 이름의 접두사 또는 접미사로 알림을 필터링하려면 Filter XML 구조를 사용합니다. Filter XML 구조에 대한 자세한 내용은 Amazon Simple Storage Service API 참조PUT 버킷 알림을 참조하세요.

Amazon S3 이벤트 알림이 객체 키 이름 필터링을 사용하도록 구성된 경우 특정 키 이름 접두사 또는 접미사가 있는 객체에 대해서만 알림이 게시됩니다. 필터에서 모든 문자를 나타내는 접두사 또는 접미사로 와일드카드 문자("*")를 사용할 수 없습니다. 접두사 또는 접미사 값에 특수 문자를 사용하는 경우 URL 인코딩(퍼센트 인코딩) 형식으로 입력해야 합니다. 자세한 정보는 객체 키 명명 지침을 참조하십시오.

Filter를 사용하는 알림 구성은 중첩 접두사, 중첩 접미사 또는 접두사 및 접미사 중첩을 포함하는 필터링 규칙을 정의할 수 있습니다. 다음 섹션에는 객체 키 이름 필터링을 사용하는 유효한 알림 구성의 예가 나와 있습니다. 또한 접두사 및 접미사 중첩으로 인해 유효하지 않은 알림 구성 예제가 포함되어 있습니다.

객체 키 이름 필터링을 포함하는 유효한 알림 구성 예제

다음 알림 구성에는 s3:ObjectCreated:Put 유형의 이벤트를 게시하기 위해 Amazon S3에 대한 Amazon SQS 대기열을 식별하는 대기열 구성이 포함되어 있습니다. 이 이벤트는 접두사가 images/이고 접미사가 jpg인 객체가 버킷에 추가(PUT)될 때마다 게시됩니다.

<NotificationConfiguration> <QueueConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images/</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </S3Key> </Filter> <Queue>arn:aws:sqs:us-west-2:444455556666:s3notificationqueue</Queue> <Event>s3:ObjectCreated:Put</Event> </QueueConfiguration> </NotificationConfiguration>

다음 알림 구성에는 여러 개의 비중첩 접두사가 있습니다. 이 구성은 images/ 폴더에서 PUT 요청에 대한 알림을 대기열 A로 보내고, logs/ 폴더에서 PUT 요청에 대한 알림은 대기열 B로 보내도록 정의합니다.

<NotificationConfiguration> <QueueConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images/</Value> </FilterRule> </S3Key> </Filter> <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-A</Queue> <Event>s3:ObjectCreated:Put</Event> </QueueConfiguration> <QueueConfiguration> <Id>2</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>logs/</Value> </FilterRule> </S3Key> </Filter> <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-B</Queue> <Event>s3:ObjectCreated:Put</Event> </QueueConfiguration> </NotificationConfiguration>

다음 알림 구성에는 여러 개의 비중첩 접미사가 있습니다. 이 구성은 버킷에 새로 추가된 모든 .jpg 이미지를 Lambda 클라우드 함수 A에서 처리하고, 새로 추가된 모든 .png 이미지는 클라우드 함수 B에서 처리하도록 정의합니다. .png.jpg 접미사는 마지막 문자가 동일해도 중첩되지 않습니다. 지정된 문자열이 두 접미사로 끝날 수 있으면 2개의 접미사가 겹치는 것으로 간주됩니다. 문자열이 .png.jpg로 끝날 수 없으므로 예제 구성의 접미사는 중첩 접미사가 아닙니다.

<NotificationConfiguration> <CloudFunctionConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>.jpg</Value> </FilterRule> </S3Key> </Filter> <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction> <Event>s3:ObjectCreated:Put</Event> </CloudFunctionConfiguration> <CloudFunctionConfiguration> <Id>2</Id> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>.png</Value> </FilterRule> </S3Key> </Filter> <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction> <Event>s3:ObjectCreated:Put</Event> </CloudFunctionConfiguration> </NotificationConfiguration>

Filter를 사용하는 알림 구성은 동일한 이벤트 유형에 대해 중첩 접두사를 포함하는 필터링 규칙을 정의할 수 없습니다. 겹치지 않는 접미사와 함께 사용되는 겹치는 접두사가 있는 경우에만 그렇게 할 수 있습니다. 다음 예제 구성은 일반 접두사를 갖지만 접미사가 중첩되지 않게 생성된 객체가 어떻게 다른 대상으로 전송될 수 있는지를 보여줍니다.

<NotificationConfiguration> <CloudFunctionConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>.jpg</Value> </FilterRule> </S3Key> </Filter> <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction> <Event>s3:ObjectCreated:Put</Event> </CloudFunctionConfiguration> <CloudFunctionConfiguration> <Id>2</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>.png</Value> </FilterRule> </S3Key> </Filter> <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction> <Event>s3:ObjectCreated:Put</Event> </CloudFunctionConfiguration> </NotificationConfiguration>

유효하지 않은 접두사 및 접미사 중첩을 포함하는 알림 구성 예제

Filter를 사용하는 알림 구성은 대부분의 경우 동일한 이벤트 유형에 대해 중첩 접두사, 중첩 접미사 또는 접두사와 접미사의 중첩 조합을 포함하는 필터링 규칙을 정의할 수 없습니다. 접미사가 중첩되지 않을 경우에 한해 중첩 접두사를 사용할 수 있습니다. 문제 해결 예는 객체 키 이름 필터링을 사용하여 이벤트 알림 구성을(를) 참조하십시오.

이벤트 유형이 서로 다른 중첩 객체 키 이름 필터를 사용할 수 있습니다. 예를 들어, image/ 이벤트 유형에 대해 ObjectCreated:Put 접두사를 사용하고, image/ 이벤트 유형에 대해 ObjectRemoved:* 접두사를 사용하는 알림 구성을 생성할 수 있습니다.

Amazon S3 콘솔이나 API를 사용할 경우 동일한 이벤트 유형에 대해 유효하지 않은 중첩 이름 필터를 가진 알림 구성을 저장하려고 하면 오류가 발생합니다. 이 섹션에서는 중첩된 이름 필터로 인해 유효하지 않은 알림 구성의 예를 보여줍니다.

기존의 알림 구성 규칙이 다른 접두사 및 접미사와 각각 일치하는 기본 접두사와 접미사를 갖는다고 가정해 보겠습니다. 다음 알림 구성은 접두사가 중첩되기 때문에 유효하지 않습니다. 특히 루트 접두사는 다른 접두사와 겹칩니다. 이 예제에서 접두사 대신 접미사를 사용하는 경우에도 마찬가지입니다. 루트 접미사가 다른 접미사와 중첩됩니다.

<NotificationConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-one</Topic> <Event>s3:ObjectCreated:*</Event> </TopicConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-two</Topic> <Event>s3:ObjectCreated:*</Event> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> </NotificationConfiguration>

다음 알림 구성은 중첩 접미사가 있기 때문에 유효하지 않습니다. 지정된 문자열이 두 접미사로 끝날 수 있으면 2개의 접미사가 겹치는 것으로 간주됩니다. 문자열은 jpgpg로 끝날 수 있습니다. 따라서 접미사가 겹칩니다. 접두사의 경우에도 마찬가지입니다. 지정된 문자열이 두 접두사로 시작할 수 있으면 2개의 접두사가 겹치는 것으로 간주됩니다.

<NotificationConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic> <Event>s3:ObjectCreated:*</Event> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic> <Event>s3:ObjectCreated:Put</Event> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>pg</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> </NotificationConfiguration

다음 알림 구성은 접두사와 접미사가 중첩되기 때문에 유효하지 않습니다.

<NotificationConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic> <Event>s3:ObjectCreated:*</Event> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic> <Event>s3:ObjectCreated:Put</Event> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> </NotificationConfiguration>