首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fn::GetAZs +Fn::选择不合作

Fn::GetAZs +Fn::选择不合作
EN

Stack Overflow用户
提问于 2017-03-14 00:48:26
回答 3查看 3.8K关注 0票数 4

因此,我在我的网络模板中有这个CloudFormation资源:

代码语言:javascript
复制
Resources:
    ...

    PubSubnetAz2:
        Type: AWS::EC2::Subnet
        Properties:
            VpcId: !Ref Vpc
            CidrBlock: !FindInMap [VpcCidrs, !Ref "AWS::Region", pubsubnet2]
            AvailabilityZone: !Select
            - 1
            - Fn::GetAZs: !Ref "AWS::Region"

当我试图创建这个堆栈时,我得到了这个错误:

代码语言:javascript
复制
17:40:06 UTC-0700   CREATE_FAILED   AWS::EC2::Subnet    PubSubnetAz2    Template error: Fn::Select cannot select nonexistent value at index 1

模板验证,我有一个相同的PubSubnetAz1块,并传递(虽然它选择index=0 )。

我用错了Fn::GetAZs吗?

PS。我使用的是us-west-2区域,据我所知,有>1个AZs。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-14 21:31:23

以下模板成功地跨us-west-2中的多个子网部署了VPC

代码语言:javascript
复制
---
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  vpc1:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      InstanceTenancy: default
      EnableDnsSupport: true
      EnableDnsHostnames: false
      Tags:
      - Key: Name
        Value: My-VPC
  subnet1:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone:
        Fn::Select:
        - 0
        - Fn::GetAZs: ''
      CidrBlock: 10.0.0.0/24
      VpcId:
        Ref: vpc1
      Tags:
      - Key: Name
        Value: Subnet-A
  subnet2:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone:
        Fn::Select:
        - 1
        - Fn::GetAZs: ''
      CidrBlock: 10.0.1.0/24
      VpcId:
        Ref: vpc1
      Tags:
      - Key: Name
        Value: Subnet-B

我手动创建了VPC,使用哈瓦将其转换为JSON CloudFormation模板,手动插入Select语句,然后使用json2yaml.com将其转换为YAML。

票数 2
EN

Stack Overflow用户

发布于 2019-11-27 15:38:12

第二次在做示例演示时,我得到了一个类似的错误。我发现我需要列出我希望使用的AZ,以及成功创建的堆栈。

代码语言:javascript
复制
  PrivateSubnetTwo:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: us-east-2b
      VpcId: !Ref 'VPC'
      CidrBlock: !FindInMap ['SubnetConfig', 'PrivateTwo', 'CIDR']
票数 1
EN

Stack Overflow用户

发布于 2017-03-14 03:52:11

Fn::GetAZs文档显示了如下示例:

代码语言:javascript
复制
mySubnet: 
  Type: "AWS::EC2::Subnet"
  Properties: 
    VpcId: 
      !Ref VPC
    CidrBlock: 10.0.0.0/24
    AvailabilityZone: 
      Fn::Select: 
        - 0
        - Fn::GetAZs: ""

它有一个空区域,这显然等同于指定AWS::Region

它还显示了一个使用完整格式的示例,如:

代码语言:javascript
复制
"Fn::GetAZs": ""
"Fn::GetAZs": { Ref: "AWS::Region" }
"Fn::GetAZs": "us-east-1"

尝试其中的一些格式,看看它们是否有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42776016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档