2016-04-15 7 views
2

ich eine Python erstellt haben (verwendet boto3 Bibliothek) Skript einen s3 Trigger zu erstellen, die meine Lambda-Funktion auslöst. Ich musste zuerst eine Erlaubnis für das Lambda hinzufügen, das s3 lambda: InvokeFunction Erlaubnis gibt.Wo funktioniert die StatementId auf AWS Lambda-Funktion add_permission live?

response = client.add_permission(
    FunctionName='string', 
    StatementId='string', 
    Action='string', 
    Principal='string', 
    SourceArn='string') 

Meine Frage ist über die StatementId. Es sagt, um eine eindeutige ID zu geben. Wenn ich versuche, dies erneut auszuführen, beklagt es sich, dass diese ID bereits existiert.

Wo dies statementId innerhalb Amazon Services erstellt wird? Ich möchte in der Lage sein, Boto (oder CLI) zu verwenden, um zu löschen und neu zu erstellen (oder zu aktualisieren), so dass mein Skript idempotent ist.

Antwort

1

Die add_permission Methode ist das Hinzufügen wirklich eine Erklärung an der IAM Politik im Zusammenhang mit Ihrer Lambda-Funktion. Verwenden Sie die get_policy-Methode, um die gesamte Richtlinie anzuzeigen. Dadurch wird die gesamte Richtlinie als JSON-Dokument zurückgegeben, einschließlich aller einzelnen Anweisungen, die Sie über add_permission hinzugefügt haben. Um eine einzelne Aussage zu entfernen, verwenden remove_permission, die den Namen der Funktion und die statement_id der Anweisung nimmt zu löschen, weshalb statement_id die müssen eindeutig sein.

+1

Dank! Später habe ich nach dem Kappa-Quellcode gesucht und festgestellt, dass Sie str (uuid.uuid4()) für die Anweisungs_ID in der add_permission-Methode verwenden. Ich bin irgendwie gedemütigt, dass du auf meine Frage geantwortet hast. :) – Qudoos