【问题标题】:CDK - Add policies to role with For eachCDK - 为每个角色添加策略
【发布时间】: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


    【解决方案1】:

    addManagedPolicy 需要 IManagedPolicy 对象,但您提供了一个字符串。

    之前的所有“新”对象/托管 s3policy 甚至都没有使用,如果我理解您的意图,可能不需要。

    这意味着,您需要这个 IManagedPolicy 对象。

    如何得到它? 尝试这个:

        policyName.forEach(policyName => {
           const importedPolicy = iam.ManagedPolicy.fromAwsManagedPolicyName(policyName)     
           role.addManagedPolicy(importedPolicy)
        });
    

    【讨论】:

      猜你喜欢
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 2017-05-17
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      相关资源
      最近更新 更多