2016-04-15 10 views
2

私は、私のラムダ機能をトリガするs3トリガを作成するために、python(boto3ライブラリを使用)スクリプトを作成しました。私はまずs3 lambda:InvokeFunctionパーミッションを与えるラムダのパーミッションを追加しなければならなかった。AWSラムダ関数add_permissionのStatmentIdはどこにありますか?

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

私の質問はStatementIdについてです。それはユニークなIDを与えると言います。これをもう一度実行しようとすると、このIdがすでに存在すると不平を言います。

このStatementIdはAmazonサービス内でどこに作成されていますか?私はboto(またはcli)を使ってそれを削除して再作成(または更新)できるようにして、スクリプトが冪等であるようにしたい。

答えて

1

add_permissionメソッドは、実際にはラムダ関数に関連付けられたIAMポリシーにステートメントを追加しています。ポリシー全体を表示するには、get_policyメソッドを使用します。これにより、ポリシー全体がadd_permissionによって追加された個々のステートメントを含むJSONドキュメントとして返されます。個々のステートメントを削除するには、関数の名前をとり、削除するステートメントのstatement_idを使用するremove_permissionを使用します。そのため、statement_idは一意でなければなりません。

+1

ありがとうございます!その後、私はkappaのソースコードを調べて、add_permissionメソッドのstatement_idにstr(uuid.uuid4())を使用していることに気付きました。私はあなたが私の質問に答えたのはちょっと謙虚だ。 :) – Qudoos

関連する問題