【问题标题】:Add policy to bucket with a condition将策略添加到具有条件的存储桶
【发布时间】:2021-12-13 04:18:55
【问题描述】:

我不知道如何设置此存储桶资源策略的条件,条件行是问题:

        iBucket.add_to_resource_policy(
        iam.PolicyStatement(
            actions=["s3:PutObject"],
            effect=iam.Effect.ALLOW,
            resources=[iBucket.bucket_arn],
            #conditions=[ aws_stepfunctions.Condition.string_equals('s3:x-amz-acl','bucket-owner-full-control')],
            principals=[iam.ServicePrincipal(f"logs.{os.environ['CDK_DEFAULT_REGION']}.amazonaws.com")]
        )
    )

我已经注释掉了条件,但我正在寻找一种方法来使条件起作用,因为我显然做错了。

【问题讨论】:

    标签: python amazon-web-services amazon-s3 aws-cdk bucket


    【解决方案1】:

    conditions 参数是一个 python dict

        iBucket.add_to_resource_policy(
        iam.PolicyStatement(
            actions=["s3:PutObject"],
            effect=iam.Effect.ALLOW,
            resources=[iBucket.bucket_arn],
            conditions=[{"StringEquals":  {"s3:x-amz-acl": "bucket-owner-full-control"}}],
            principals=[iam.ServicePrincipal(f"logs.{os.environ['CDK_DEFAULT_REGION']}.amazonaws.com")]
        )
    )
    

    【讨论】:

    • 感谢您的回答,但您错过了我这样放置的最后一个“}”“]}]”,但代码抱怨 x-amz-acl 之后的“:”请验​​证您的答案.
    • 我错过了另一个对象的嵌套...现在应该修复
    • 有趣,我相信我已经尝试过了,但我仍然将您的行复制到我的代码中,但我仍然收到错误:无效条件类型:0(服务:Amazon S3;状态代码:400;错误代码:MalformedPolicy;请求 ID:8VFN2J4NMK29N;S3 扩展请求 ID:G1VniRgISMG9qm7Hl1q0fdGnsOdABwTf14cbOJ/pdidspp8=;代理:null)
    • 这是 IAM 状态更改:"0": {"StringEquals": {"s3:x-amz-acl": [ "bucket-owner-full-control" ] } }跨度>
    【解决方案2】:

    条件参数不是一个列表。 尝试将其声明为字符串而不是列表。

    iBucket.add_to_resource_policy(
    iam.PolicyStatement(
        ...
        conditions={"StringEquals":  {"s3:x-amz-acl": "bucket-owner-full-control"}},
        ...
    )
    

    )

    【讨论】:

      猜你喜欢
      • 2022-11-08
      • 1970-01-01
      • 2020-10-22
      • 2019-05-15
      • 2016-06-13
      • 2019-01-16
      • 1970-01-01
      • 2018-05-22
      • 2020-11-05
      相关资源
      最近更新 更多