web-dev-qa-db-ja.com

cloudformationがサブネット作成のために利用可能なゾーンを照会する方法はありますか?

AZごとに1つのサブネットを持つVPCを作成しようとするクラウドフォーメーションスクリプトがあります。

私が走るとき:

aws ec2 describe-availablity-zones

4つのゾーンが返されます:

"AvailabilityZones": [
    {
        "State": "available", 
        "RegionName": "us-east-1", 
        "Messages": [], 
        "ZoneName": "us-east-1a"
    }, 
    {
        "State": "available", 
        "RegionName": "us-east-1", 
        "Messages": [], 
        "ZoneName": "us-east-1b"
    }, 
    {
        "State": "available", 
        "RegionName": "us-east-1", 
        "Messages": [], 
        "ZoneName": "us-east-1c"
    }, 
    {
        "State": "available", 
        "RegionName": "us-east-1", 
        "Messages": [], 
        "ZoneName": "us-east-1d"
    }
 ]

ただし、スタックを作成しようとすると、エラーが発生します。

  "ResourceStatusReason": "Value (us-east-1a) for parameter availabilityZone
   is invalid. Subnets can currently only be created in the following 
   availability zones: us-east-1c, us-east-1b, us-east-1d.", 

私はAZを指定しています

      "AvailabilityZone" : {
        "Fn::Select" : [ "0", { "Fn::GetAZs" : "" } ]
      },

AZがサブネットの作成に本当に利用可能かどうかを確認する方法はありますか?

24
chris

これは、CLIアプローチや正確なシナリオには役立たない場合がありますが、AWS管理コンソールを使用するとスムーズに機能します。

CloudFormationパラメーターを使用した最近の更新により、指定したAZに関連するAZを正確に特定できるようになります。

これは、DR/DRドリル中、およびCFNテンプレートをリージョンに依存しないようにするときに非常に便利です。

enter image description here

"Parameters": {
    "SubnetAZ": {
      "Description": "Availability Zone of the Subnet",
      "Type": "AWS::EC2::AvailabilityZone::Name"
    }
}

CloudFormation パラメータに関する詳細情報

8
Naveen Vijay

残念ながら、私は同じ問題を抱えていました。 CloudFormationにはこれを行う方法はなく、ゾーンはAWSアカウントごとに異なる可能性があります。これはVPCインフラストラクチャの制限であり、変更されない可能性があります。唯一のオプションは、Fn :: Selectの代わりにCloudFOrmationテンプレートで見つけたゾーンをハードコーディングすることです。次に例を示します。

"AvailabilityZone": "us-east-1b"

または、AvailabilityZoneを空白のままにすると、デフォルトの動作ではAWSが自動的に1つを選択します。

6
Arya

Fn :: GetAZは、各AZにサブネットを持つデフォルトのvpcがある限り、使用可能で使用可能なアベイラビリティーゾーンを提供します。ちなみに、手動で削除しない限り、すべての新しいawsアカウントにあります。

5
hellomichibye