2015-08-25 21 views
9

Ich verwende den AWS SQS-Dienst und es fällt mir schwer, Berechtigungen für meine SQS-Warteschlange zu definieren. In meinem Setup verwende ich den AWS Lambda-Service, der ausgelöst wird, wenn ein Objekt in einen S3-Bucket geschoben wird.AWS SQS-Berechtigungen für AWS Lambda

jedoch meine Frage kurz zu halten, das ist, was ich erreichen will:

  1. Objekt an einen S3 Eimer gedrückt wird
  2. S3 Eimer lösen AWS Lambda
  3. Lambda hat einige Berechnungen und Push ein Ereignis meiner SQS-Warteschlange (muss Permission definieren)
  4. Anwendung liest aus SQS

Wie Sie können Lesen Sie aus dem vorherigen Anwendungsfall. Ich möchte, dass meine AWS-Lambda-Methode die einzige Anwendung ist, die eine Nachricht an die SQS-Warteschlange senden kann. Ich habe versucht, ein Prinzipal und eine Bedingung "sourceArn" zu setzen. Aber keiner von ihnen arbeiten ..

enter image description here

Kann jemand helfen?

Antwort

6

Ich glaube nicht, dass das SourceArn Feld von Lambda bevölkert wird. Ich weiß, dass SourceArn für SNS funktioniert, aber Lambda führt wirklich willkürlichen Code und keine AWS-Funktion wie SNS.

Als Alternative können Sie eine Richtlinie an die IAM-Rolle anhängen, mit der Ihre Lambda-Funktion ausgeführt wird.

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1440529349000", 
      "Effect": "Allow", 
      "Action": [ 
       "sqs:SendMessage" 
      ], 
      "Resource": [ 
       "arn:aws:sqs:us-west-2:123456789012:test-queue" 
      ] 
     } 
    ] 
} 

Für diese Methode ist keine direkt an die Warteschlange angehängte Richtlinie erforderlich.