2015-07-17 35 views
5

Desidero configurare la seguente configurazione evento/notifica in un bucket AWS S3: Al ricevimento di un file (s3: ObjectCreated: *), devono essere attivati ​​due target:AWS S3: attivazione di più destinazioni tramite S3 Notifica al ricevimento file

  • SQS: per mettere in coda il file per l'elaborazione dettagliata carica per un periodo di conservazione per un paio di giorni
  • Lambda: per fare qualche rapida trasformazione metriche immediati

Quando provo a impostare la configurazione tramite la console AWS il seguente messaggio di errore:

Configurations overlap. Configurations on the same bucket cannot share a common event type. : s3:ObjectCreated:*, s3:ObjectCreated:* 

ho cercato di impostare la configurazione tramite AWS SDK (Java) come proposto dal manuale d'uso, ma risultato simile:

Caught an AmazonServiceException, which means your request made it to Amazon S3, but was rejected with an error response for some reason. 
Error Message: Configurations overlap. Configurations on the same bucket cannot share a common event type. (Service: Amazon S3; Status Code: 400; Error Code: InvalidArgument; Request ID: A0E8738522EA218F) 
HTTP Status Code: 400 
AWS Error Code: InvalidArgument 
Error Type:  Client 
Request ID:  A0E8738522EA218F 
Error XML<?xml version="1.0" encoding="UTF-8"?> 
<Error><Code>InvalidArgument</Code><Message>Configurations overlap. Configurations on the same bucket cannot share a common event type.</Message><ArgumentName>Event</ArgumentName><ArgumentValue>s3:ObjectCreated:*, s3:ObjectCreated:*</ArgumentValue><RequestId>A0E8738522EA218F</RequestId><HostId>p4qYoIXi38u3Jl3p0xpI7TFWgs0ZxsqK89oDTTy8D/tbw39NnaIT99jIvHIxt4XliRFxqNWl32M=</HostId></Error> 

risposta

3

suggerisco si dovrebbe pubblicare S3 Notifications per SNS Topic e avere il vostro Lambda function e SQS Queue iscriversi a questo SNS Topic.

Questa architettura dovrebbe aiutarti a ottenere ciò che stai cercando.

+1

Giusto, SNS ha risolto il problema. Ho aggiunto l'autorizzazione "SNS: Pubblica" all'argomento SNS e ho configurato la mia coda SQS e la mia funzione Lambda come sottoscrittori dell'argomento SNS. Nella funzione Lambda posso decomprimere S3Object che contiene buckt, path, ecc. E quindi scaricare il file da S3 ed elaborarlo. –

4

migliore soluzione è probabilmente andando essere per attivare una notifica SNS quando i file vengono caricati su S3 e quindi utilizzare le funzionalità di 'fanout' di SNS per inviare messaggi SQS multipli e simultanei che possono quindi essere ricevuti e gestiti autonomamente.

In alternativa, se si desidera elaborare solo "passaggio 2" se e solo se viene elaborato "passaggio 1", è possibile attivare un singolo messaggio SQS per "passaggio 1" e quindi solo sul completamento riuscito di " passo 1 ', avere l'atto finale di' passaggio 1 'essere l'invio di un secondo evento sqs per' step 2 'per ulteriori elaborazioni.