AWS CDK中是否存在对应资源操作的枚举数据类型?
AWS CDK 服务操作预定义常量说明
是的,AWS CDK 为绝大多数AWS服务都提供了预定义的操作常量类,不需要手动硬编码类似sqs:SendMessage的权限字符串。
具体使用规则如下:
- 你可以从对应服务的CDK模块中直接导入
Actions类,通过其静态属性获取对应操作的标准权限字符串。比如SQS服务的sqs:SendMessage操作对应sqs.Actions.SEND_MESSAGE,S3服务的s3:GetObject操作对应s3.Actions.GET_OBJECT。 - 预定义常量的命名规则为操作名的驼峰格式转全大写下划线分隔格式,不需要额外记忆权限字符串的拼写规则,也能有效避免手动输入导致的拼写错误。
- 相比硬编码字符串,使用预定义常量可以在编译阶段就捕获拼写问题,避免部署后才发现权限配置失效的问题。
以下是TypeScript环境的使用示例:
import * as iam from 'aws-cdk-lib/aws-iam'; import * as sqs from 'aws-cdk-lib/aws-sqs'; import * as s3 from 'aws-cdk-lib/aws-s3'; const customRole = new iam.Role(this, 'CustomRole', { assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com') }); customRole.addToPolicy(new iam.PolicyStatement({ actions: [ sqs.Actions.SEND_MESSAGE, sqs.Actions.RECEIVE_MESSAGE, s3.Actions.GET_OBJECT ], resources: ['*'] }));
如果是比较新发布的小众服务暂时没有覆盖预定义Actions类,也可以直接手动传入权限字符串,不影响正常使用。
内容的提问来源于stack exchange,提问作者CaptainDriftwood
相关产品推荐
相关产品推荐

