以下是使用AWS CDK创建角色和策略的示例代码:
import * as cdk from 'aws-cdk-lib';
import * as iam from 'aws-cdk-lib/aws-iam';
export class MyStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// 创建 IAM 角色
const role = new iam.Role(this, 'MyRole', {
assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
roleName: 'MyRole'
});
// 创建 IAM 策略
const policy = new iam.Policy(this, 'MyPolicy', {
policyName: 'MyPolicy',
statements: [
new iam.PolicyStatement({
actions: ['s3:GetObject'],
resources: ['arn:aws:s3:::my-bucket/*']
}),
new iam.PolicyStatement({
actions: ['s3:PutObject'],
resources: ['arn:aws:s3:::my-bucket/*']
})
]
});
// 将策略附加到角色
policy.attachToRole(role);
}
}
const app = new cdk.App();
new MyStack(app, 'MyStack');
在上面的示例中,我们创建了一个名为MyStack
的AWS CDK堆栈,并在其中创建了一个名为MyRole
的IAM角色和一个名为MyPolicy
的IAM策略。角色被假设为Lambda函数,并具有MyRole
作为角色名称。
策略定义了两个语句,一个允许s3:GetObject
操作并指定资源为my-bucket
的所有对象,另一个允许s3:PutObject
操作并指定资源为my-bucket
的所有对象。
最后,我们将策略附加到角色上,以便角色可以使用策略中定义的权限。
请注意,您需要确保已正确安装和配置了AWS CDK,并具有适当的IAM权限来创建和管理角色和策略。