You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS CDK for .NET创建并引用托管策略的问题咨询

问题解答

① 策略名称为何变更?

AWS CDK默认会自动生成资源的物理名称,规则为「栈名-资源标识-随机后缀」,目的是避免跨环境/栈的资源名称冲突。你创建托管策略时如果没有显式指定固定名称,CDK就会自动生成带栈名和随机串的名称。要使用自定义名称,在创建ManagedPolicy时,需要在ManagedPolicyProps中设置PolicyName属性,指定你想要的s3-access-policy即可。

② 无法引用托管策略的原因是什么?

你使用的ManagedPolicy.FromAwsManagedPolicyName()方法是专门用来引用AWS官方托管的策略(这类策略的ARN格式为arn:aws:iam::aws:policy/[策略名]),而你在PolicyStack中创建的是客户自定义托管策略,ARN属于你自己的AWS账户(格式为arn:aws:iam::[账户ID]:policy/[策略名]),所以用这个方法会生成错误的ARN,导致找不到策略。

正确的做法是采用跨栈引用:

  • 在PolicyStack类中,将创建的ManagedPolicy对象暴露为公共属性
  • 部署IAMStack时,传入PolicyStack的实例,直接引用该属性对应的策略对象
  • 调用role.AddManagedPolicy(自定义策略对象)完成附加

如果一定要用ARN引用,也可以使用ManagedPolicy.FromManagedPolicyArn()方法,传入你自定义策略的完整ARN,但跨栈引用对象是CDK推荐的方式,能自动处理依赖和ARN的正确性。

内容的提问来源于stack exchange,提问作者strojan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 12:55:04