AWS CDK IAM Typescript:迭代一组自定义策略以分配

AWS CDK IAM Typescript: iterating over an array of custom policies to assign

在 CDK (Typescript) 中创建 IAM 用户时,我正在尝试映射策略列表。该列表如下所示:

name: "group",
    managedPolicies: [
      "IAMUserChangePassword",
      "job-function/SystemAdministrator",
    ],
    customPolicies: [
      "ManageMFACustomPolicy",
    ],

然后组由

添加
 props.groups.forEach((group) => {
  const iamGroup = new iam.Group(scope, group.name, {
    groupName: group.name,
    managedPolicies: group.managedPolicies?.map(iam.ManagedPolicy.fromAwsManagedPolicyName),
    customPolicies: group.customPolicies?.map(iam.fromManagedPolicyName.managedPolicyName),
  });

我的问题是自定义策略与托管策略的处理方式不同。托管策略映射有效。自定义策略没有。我知道如果我明确分配策略本身就会起作用。

这是我得到的错误

Argument of type '{ groupName: string; managedPolicies: iam.IManagedPolicy[]; customPolicies: unknown[]; }' is not assignable to parameter of type 'GroupProps'.
  Object literal may only specify known properties, and 'customPolicies' does not exist in type 'GroupProps'.

  customPolicies: group.customPolicies?.map(iam.fromManagedPolicyName.managedPolicyName),

我现在从组构建文档中意识到我试图使用一个不存在的道具。有没有我应该尝试枚举和添加自定义策略数组的另一种方法?我刚刚开始使用 CDK,所以我可能在文档中遗漏了它。 TIA!

更新----

我只是想更新这个,我关于将类型切换为托管策略的想法行不通,因为它们必须通过 ARN 进行引用,所以你得到

Policy arn:aws:iam::aws:policy/ManageMFA does not exist or is not attachable. (Service: AmazonIdentityManagement; Status Code: 404; Error Code: NoSuchEntity; R equest ID: fc8ae611-74bc-4e46-8f94-f2d3b5dff0cc; Proxy: null) 

Jason 关于内联策略的回答是正确的

IAM Group Props 上没有 customPolicies 属性。您只是想附加一个命名的内联策略吗?为此,您需要创建群组,然后调用 attachInlinePolicy。不过,该电话需要完整的政策,而不仅仅是名称。

如果您只是想附加一个您创建的命名策略(又名客户托管策略),它将与 AWS 托管策略相同,因此它与其他策略位于同一列表中。