gpt4 book ai didi

amazon-s3 - 在AWS Cloudformation中如何在s3存储桶策略中的NotIpAddress条件中使用多个if语句

转载 作者:行者123 更新时间:2023-12-03 07:30:45 26 4
gpt4 key购买 nike

有一个要求,其中我必须创建一个 Cloudformation 堆栈集,它将在多个 AWS 区域中创建一个 S3 存储桶。

但这里的问题是我想将所有 AWS 区域的所有 S3 存储桶中的 IP 地址列入白名单,并且该 IP 地址对于每个 AWS 区域都不同。

因此,我定义了多个参数,这些参数将从用户那里获取 IP 地址。我还为其 AWS 区域定义了一个条件。因此,假设通过 stackset 部署的堆栈位于 us-east-1 区域,则 us-east-1 的条件将返回 true。现在,我在 S3 存储桶策略中给出“!if”语句,以便如果堆栈部署在 us-east-1 区域中,则将执行该特定的 is 语句。

以下是 S3 存储桶策略条件:-

Condition: 
NotIpAddress:
aws:SourceIp:
- !If [IsUSEast1, !Ref S3IPAddressUSEast1ToWhitelist, !Ref "AWS::NoValue"]
- !If [IsUSEast2, !Ref S3IPAddressUSEast2ToWhitelist, !Ref "AWS::NoValue"]
- !If [IsUSWest1, !Ref S3IPAddressUSWest1ToWhitelist, !Ref "AWS::NoValue"]
- !If [IsUSWest2, !Ref S3IPAddressUSWest2ToWhitelist, !Ref "AWS::NoValue"]
- !If [IsEUCentral1, !Ref S3IPAddressEUCentral1ToWhitelist, !Ref "AWS::NoValue"]
- !If [IsEUWest1, !Ref S3IPAddressEUWest1ToWhitelist, !Ref "AWS::NoValue"]

正如您在上面所看到的,如果要部署的 Cloudformation 堆栈位于 us-east-1 区域,则将执行第一个“!if”语句,并且它将使用“S3IPAddressUSEast1ToWhitelist”参数。但这在我的情况下不起作用,似乎“aws:SourceIp”只允许执行一个“!if”语句。我还尝试了各种其他方法,例如映射,但在这里我们不能使用 !Ref 函数将参数分配到映射中。

如果有人可以帮助解决这个问题,我将非常高兴。

最佳答案

您应该为此使用 CloudFormation map :

Mappings: 
IPAddresses:
us-east-1:
IP: 0.0.0.0
us-east-2:
IP: 1.1.1.1.
[...]:
IP: ...

然后您可以使用检索值

!FindInMap [IPAddresses, !Ref "AWS::Region", IP]

更多信息可以找到here .

(编辑)

如果您想使用参数作为 IP 地址的值,您只需使用单个参数并根据部署位置覆盖参数值即可。更多信息可查看here .

关于amazon-s3 - 在AWS Cloudformation中如何在s3存储桶策略中的NotIpAddress条件中使用多个if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68591862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com