本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用物件金鑰名稱篩選來設定事件通知
設定 Amazon S3 事件通知時,您必須指定哪些支援的 Amazon S3 事件類型會導致 Amazon S3 傳送通知。如果您未指定的事件類型在 S3 儲存貯體中發生,則 Amazon S3 不會傳送通知。
您可以設定按物件金鑰名稱的字首和尾碼篩選通知。例如,您可以設定組態,只在將副檔名為「.jpg
」的映像檔案新增至儲存貯體時才傳送通知。或者,您可以使用一個組態,在將具有前綴為 "images/
" 的物件新增至值區時向 Amazon SNS 主題傳送通知,同時在同一個儲存貯體中具有 logs/
"" 前綴的物件發送到 AWS Lambda 功能。
注意
萬用字元 ("*") 不能在篩選條件中用作前綴或後綴。如果您的字首或字尾包含空格,則必須將其取代為 "+" 字元。如果您在首碼或字尾的值中使用任何其他特殊字元,則必須以 URL-coded (百分比編碼) 格式
您可以設定通知組態,在 Amazon S3 主控台使用物件金鑰名稱篩選。您可以APIs通過使用 Amazon S3 來做到這一點 AWS SDKs或直RESTAPIs接。如需使用主控台 UI 在儲存貯體上設定通知組態的相關資訊,請參閱「使用 Amazon S3 主控台啟用和設定事件通知」。
Amazon S3 會將通知組態存放XML在與儲存貯體關聯的通知子資源中,如中使用 Amazon SQSSNS,Amazon 和 Lambda所述。您可以使用Filter
XML結構來定義要依物件索引鍵名稱的首碼或尾碼篩選通知的規則。如需Filter
XML結構的相關資訊,請參閱 Amazon 簡單儲存服務API參考中的儲存PUT貯體通知。
使用 Filter
的通知組態無法定義重疊字首、重疊尾碼或字首和尾碼重疊的篩選規則。下列小節提供使用物件金鑰名稱篩選的有效通知組態範例。它們也包含因為字首和尾碼重疊而無效的通知組態範例。
以物件金鑰名稱篩選的有效通知組態範例
下列通知組態包含一個佇列組態,識別 Amazon S3 可將事件發佈到該s3:ObjectCreated:Put
類型的 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要求的通知會移至 queue-A,而資料logs/
夾中PUT要求的通知則會移至 queue-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 cloud-function-A 處理,而所有近期新增的 .png
影像則由 cloud-function-B 處理。.png
和 .jpg
字尾即使最後一個字母相同也不重疊。如果指定的字串可以這兩個尾碼結束,則兩個尾碼視為重疊。字串的結尾不能是 .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>
下列通知組態因有重疊的字尾而無效。如果指定的字串可以這兩個尾碼結束,則兩個尾碼視為重疊。字串的結尾可以使用 jpg
和 pg
。所以,字尾會重疊。字首也是一樣。如果指定的字串可以這兩個字首開始,則兩個字首視為重疊。
<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>