AWS Lambda函数中add_permission的StatmentId存放在哪里?

4

我创建了一个使用boto3库的Python脚本,用于创建S3触发器以触发我的Lambda函数。首先,我必须在Lambda上添加一个权限,即授予S3 lambda:InvokeFunction权限。

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

我的问题是关于 StatementId。它说要提供一个唯一的 Id。如果我再次运行这个,它会抱怨这个 Id 已经存在了。

在 Amazon Services 中,这个 StatementId 是在哪里创建的?我想使用 boto(或 cli)来删除、重新创建(或更新)它,以便我的脚本具有幂等性。

2个回答

3
add_permission方法实际上是向与您的Lambda函数关联的IAM策略中添加语句。 要查看整个策略,请使用get_policy方法。 这将以JSON文档的形式返回整个策略,包括您通过add_permission添加的任何单独语句。 要删除单个语句,请使用remove_permission,它需要函数名称和要删除的语句的statement_id,这就是为什么statement_id必须是唯一的原因。

1
谢谢!之后,我看了一下kappa源代码,并注意到你在add_permission方法中使用str(uuid.uuid4())作为statement_id。你回答了我的问题,让我感到有些受宠若惊。 :) - Qudoos

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接