【问题标题】:How to pass 'any' in AWS CDK to a bucket policy如何将 AWS CDK 中的“任何”传递给存储桶策略
【发布时间】:2020-01-05 19:29:37
【问题描述】:

我正在尝试使用 AWS CDK 将拒绝删除规则应用于任何委托人。这是我的代码

flowlogBucket.addToResourcePolicy(new iam.PolicyStatement({
      effect: iam.Effect.DENY,
      actions: ["s3:DeleteBucket"],
      principals: [new iam.AccountPrincipal('*')],
      resources:  ["arn:aws:s3:::" + flowlogBucket.bucketName]                          
        }));

它不喜欢“*”,我收到错误 Invalid principal in policy (Service: Amazon S3; Status Code: 400; Error Code: MalformedPolicy;

如何在 CDK 中传递任何主体?

【问题讨论】:

    标签: amazon-web-services aws-cdk


    【解决方案1】:

    应该是new iam.AnyPrincipal()

    示例可以在这里展示:https://codeburst.io/getting-hands-dirty-with-aws-cdk-async-api-c5e007468497

    【讨论】:

    • 谢谢。正如您在我的回答中看到的那样,我想出了那部分。感谢您的链接。似乎是 AWS 代码的好例子
    • 当然,我的荣幸,请不要忘记为答案投票
    • 抱歉刚刚做了:)
    【解决方案2】:

    语法如此正确:

    flowlogBucket.addToResourcePolicy(new iam.PolicyStatement({
          effect: iam.Effect.DENY,
          actions: ["s3:DeleteBucket"],
          principals: [ new iam.AnyPrincipal],
          resources:  ["arn:aws:s3:::" + flowlogBucket.bucketName]                          
            }));
    

    其中 iam 是 import iam = require('@aws-cdk/aws-iam');

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      相关资源
      最近更新 更多