【发布时间】:2022-10-04 16:15:33
【问题描述】:
我正在尝试使用一些策略创建一个角色,这些策略会因 lambda 不同而有所不同。理想的情况是创建一个函数,其中创建了所有角色和策略,然后我只需调用该函数并为其提供角色的名称和我想要附加的策略,它会创建所有这些。到目前为止,我有这个:
lambda 角色创建的用法:
...
const lambdarole = this.createLambdaRole( 'Test Role', [
'KMSLambdaPolicy',
'S3LambdaPolicy',
]);
...
角色和策略创建:
private createLambdaRole(roleName: string, policyName: string[]) {
const role = new Role(this, 'Role', {
roleName: roleName,
assumedBy: new ServicePrincipal('lambda.amazonaws.com'),
description: 'Role for lambda access',
managedPolicies: [],
});
const kmspolicy = new ManagedPolicy(this, 'KMSLambdaPolicy', {
managedPolicyName: 'KMSLambdaPolicy',
statements: [
new PolicyStatement({
effect: Effect.ALLOW,
actions: [
'kms:Decrypt',
'kms:GenerateDataKey',
'kms:DescribeKey'],
}),
],
});
const s3policy = new ManagedPolicy(this, 'S3LambdaPolicy', {
managedPolicyName: 'S3LambdaPolicy',
statements: [
new PolicyStatement({
effect: Effect.ALLOW,
actions: [
's3:PutObject',
's3:GetObject',
's3:GetObjectAttributes'],
resources: ['*'],
}),
],
});
policyName.forEach(policyName => role.addManagedPolicy(policyName));
return role;
}
目前我无法让它工作,它给出了以下错误:
错误 TS2345:“字符串”类型的参数不可分配给参数 'IManagedPolicy' 类型。
我想要的甚至可能吗?
提前感谢任何愿意提供帮助的人!
【问题讨论】:
标签: typescript amazon-iam aws-cdk aws-roles