我需要帮助了解 cdk 中的 AwsCustomResource.policy 是啥?

Posted

技术标签:

【中文标题】我需要帮助了解 cdk 中的 AwsCustomResource.policy 是啥?【英文标题】:I need help understanding what is AwsCustomResource.policy in cdk?我需要帮助了解 cdk 中的 AwsCustomResource.policy 是什么? 【发布时间】:2020-09-08 12:04:09 【问题描述】:

我正在使用 CDK 的 AwsCustomResource 创建 S3 对象。 我无法理解 AwsCustomResource.policy。 docs 说:

policy(强制):应用于资源的策略。

关于角色:

role(可选):实现此自定义资源提供程序的 Lambda 函数的执行角色。

当我设置一个角色并检查自定义资源的 lambda 时,我看到它从角色那里获得了权限,就像文档说的那样。

我发现当我设置策略时(仅用于测试的值),例如:

policy = AwsCustomResourcePolicy.from_statements(statements=[PolicyStatement(actions=["s3:ReplicateTags"], resources=["*"])])

然后我也得到了 lambda 权限。 这不是我阅读文档的方式,我希望该策略用于为我创建的资源(s3 对象)设置策略。但这意味着什么?我在预先存在的存储桶中创建了对象,并在存储桶上使用了现有策略。 s3 对象有他们的政策吗?

【问题讨论】:

【参考方案1】:

s3 对象有自己的策略吗?

不,他们没有。只有存储桶有策略。

我希望该策略用于为我创建的资源(s3 对象)设置策略。

这会很困难,因为许多资源没有基于资源的策略。比如 S3 对象。

AwsCustomResourcePolicy 将策略添加到 lambda 函数的执行角色,而不是自定义资源创建的资源。请注意,自定义资源无论如何都不需要创建任何资源。

【讨论】:

谢谢,现在一切都说得通了。你会说有一个文档错误吗?它说政策 - “适用于资源的政策。” @RoyCa 也许吧。新手可能会感到困惑。 只是补充说文档不再这么说,我更新了它,所以现在更清楚了:“将添加到实现此自定义资源提供程序的 Lambda 函数的执行角色的策略。”跨度> @RoyCa 感谢您告诉我。

以上是关于我需要帮助了解 cdk 中的 AwsCustomResource.policy 是啥?的主要内容,如果未能解决你的问题,请参考以下文章

我需要一种策略来处理 CDK 中的可选 SSM 参数存储参数

CDK Client***Endpoint。想了解获取创建的 ***Endpoint 的 DnsName

Python ncurses、CDK、urwid 的区别

AWS CDK:有没有办法使用 CDK 创建数据库模式?

cdk-table:找不到具有 id 的列

使用 CDK、AWS 和 Github 私有存储库部署的最佳实践?