CloudFormationスタック作成時のアベイラビリティーゾーンのエラーを避けられそうなAZID指定

2022.05.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、ゲストのNTT東日本 大瀧です。 CloudFormationでVPCを作成するときにありがちなエラーとして、利用不可なアベイラビリティーゾーン(以下AZ)をテンプレートから指定するケースがあります。 AZ指定を抽象化するための組み込み関数 Fn::GetAZs が利用できますが、これもデフォルトVPCへの依存性があり、たびたびトラブルになります。

一方で、アベイラビリティゾーンを一意に特定するためのAZIDがあり、これをCloudFormationのVPCサブネット作成時に指定できることに気づいたので、ブログでご紹介します。

CloudFormtaionテンプレートでAZIDを指定する

書き方は至ってシンプルです。VPCサブネットリソースのプロパティに AvailabilityZoneId を指定します。

AWSTemplateFormatVersion: "2010-09-09"
Description: A sample template
Resources:
  VPC:
    Type: "AWS::EC2::VPC"
    Properties:
      CidrBlock: "172.31.0.0/20"
  Subnet1:
    Type: "AWS::EC2::Subnet"
    Properties:
      CidrBlock: "172.31.0.0/24"
      AvailabilityZoneId: "apne1-az1"
      VpcId: !Ref VPC
  Subnet2:
    Type: "AWS::EC2::Subnet"
    Properties:
      CidrBlock: "172.31.1.0/24"
      AvailabilityZoneId: "apne1-az2"
      VpcId: !Ref VPC

まとめ

CloudFormationテンプレート内でAZIDを指定する AvailabilityZoneId プロパティをご紹介しました。

多くのAWSアカウントでは apne1-az1apne1-az2 が利用できると思いますので、3AZを求められるケースでなければこの2AZ指定で概ね事足りるかなぁ、と淡い期待をもってしばらく運用してみます。

参考ブログ記事