🌧

rain buildとAWSのドキュメントの差分メモ

2022/03/06に公開

About

  • Rainは、CloudFormationの操作ができるCLIツールです。
  • rain build <AWSのリソースタイプ>コマンドを実行することで、CloudFormationのテンプレートのテンプレート(ややこしい😅 )が出力されます。
    • 出力例抜粋
      Resources:
      MyVPC:
          Type: AWS::EC2::VPC
          Properties:
          CidrBlock: CHANGEME
          EnableDnsHostnames: false # Optional
          EnableDnsSupport: false # Optional
          InstanceTenancy: CHANGEME # Optional
          Tags:
              - Key: CHANGEME
              Value: CHANGEME
      
      Outputs:
      MyVPCCidrBlock:
          Value: !GetAtt MyVPC.CidrBlock
      
      MyVPCCidrBlockAssociations:
          Value: !GetAtt MyVPC.CidrBlockAssociations
      
      MyVPCDefaultNetworkAcl:
          Value: !GetAtt MyVPC.DefaultNetworkAcl
      
      MyVPCDefaultSecurityGroup:
          Value: !GetAtt MyVPC.DefaultSecurityGroup
      
      MyVPCIpv6CidrBlocks:
          Value: !GetAtt MyVPC.Ipv6CidrBlocks
      
  • AWSのサービスは日々機能が追加されていくこともあり、rain buildの結果とAWSのリソースおよびプロパティタイプのリファレンスにはある程度差分があります。
    • この差分をメモしていこうというのがこの記事の趣旨です。
    • 差分を見ていく中で、AWSサービスの詳細についての理解も深まるかも・・・という思惑もあったりします😋

前提

  • ここでは、CloudFormationテンプレートの中でもリソースの部分のみ抜粋しています。
    • rain buildの実行時は、AWSTemplateFormatVersionDescriptionOutputsも出力してくれます!

AWS::EC2::VPC

  • 確認日:2022-03-06
  • Rainのバージョン:1.2.0

rain build結果

Type: AWS::EC2::VPC
Properties:
  CidrBlock: CHANGEME
  EnableDnsHostnames: false # Optional
  EnableDnsSupport: false # Optional
  InstanceTenancy: CHANGEME # Optional
  Tags:
    - Key: CHANGEME
      Value: CHANGEME

AWSドキュメントに記載されているテンプレート

Type: AWS::EC2::VPC
Properties: 
  CidrBlock: String
  EnableDnsHostnames: Boolean
  EnableDnsSupport: Boolean
  InstanceTenancy: String
  Ipv4IpamPoolId: String
  Ipv4NetmaskLength: Integer
  Tags: 
    - Tag

差分

Ipv4IpamPoolId

  • 昨年度のAWS re:Invent 2021にて発表された、Amazon VPC IP Address Manager(IPAM)にて作成するIPv4 IPAM poolのID
  • 参考:IPAM とは

Ipv4NetmaskLength

  • 上記と同様、IPAM関係の設定
  • IPv4 IPAM poolから、このVPCに割り当てるCIDRのネットマスク長

AWS::EC2::Subnet

  • 確認日:2022-03-06
  • Rainのバージョン:1.2.0

rain build結果

Type: AWS::EC2::Subnet
Properties:
  AssignIpv6AddressOnCreation: false # Optional
  AvailabilityZone: CHANGEME # Optional
  CidrBlock: CHANGEME
  Ipv6CidrBlock: CHANGEME # Optional
  MapPublicIpOnLaunch: false # Optional
  OutpostArn: CHANGEME # Optional
  Tags:
    - Key: CHANGEME
      Value: CHANGEME
  VpcId: CHANGEME

AWSドキュメントに記載されているテンプレート

Type: AWS::EC2::Subnet
Properties: 
  AssignIpv6AddressOnCreation: Boolean
  AvailabilityZone: String
  AvailabilityZoneId: String
  CidrBlock: String
  EnableDns64: Boolean
  Ipv6CidrBlock: String
  Ipv6Native: Boolean
  MapPublicIpOnLaunch: Boolean
  OutpostArn: String
  PrivateDnsNameOptionsOnLaunch: Json
  Tags: 
    - Tag
  VpcId: String

差分

AvailabilityZoneId

  • AZ ID
    • 例えば、apne1-az1apne1-az2といった値
    • AZ名(ap-northeast-1aap-northeast-1c)とは別のもの
  • AWS Resource Access Managerのコンソール画面にて確認できる
    • アカウントによって、AZ名とAZ IDの紐付けは異なる
    • 障害発生時に確認するService Health Dashboardでは、AZ名ではなくAZ IDで表示されていた。このため、AZ名とAZ IDの紐付けは事前に確認しておくことが多かった(経験)

EnableDns64

Ipv6Native

  • IPv6専用のサブネットにするか否か

PrivateDnsNameOptionsOnLaunch

  • インスタンスのホスト名に関するオプション。具体的には以下の値がある
    • EnableResourceNameDnsAAAARecord
      • DNS AAAAレコードを持っているインスタンスのホスト名に対するDNSクエリに応答するか否か
    • EnableResourceNameDnsARecord
      • DNS Aレコードを持っているインスタンスのホスト名に対するDNSクエリに応答するか否か
    • HostnameType
      • EC2ホスト名のタイプ
  • EC2のホスト名のタイプには、以下の2種類がある
    • IPアドレスベースの命名(IPBN)
      • インスタンスのプライベートIPv4アドレスがホスト名に含まれる
        • このホスト名にDNSクエリを投げると、プライベートIPv4アドレス(Aレコード)が返せる
    • リソースベースの命名(RBN)
      • インスタンスIDがホスト名に含まれる
        • このホスト名にDNSクエリを投げると・・・
          • プライベートIPv4アドレス(Aレコード)が返せる
          • IPv6グローバルユニキャストアドレス(AAAAレコード)も返せる
  • EC2のホスト名のタイプは、サブネット設定によって異なる
    • サブネットがIPv4専用の場合、IPBNかRBNが選択できる
    • サブネットがデュアルスタック(IPv4+IPv6)の場合、IPBNかRBNが選択できる
    • サブネットがIPv6専用の場合、RBNが自動的に使用される
  • 参考:Amazon EC2 インスタンスのホスト名のタイプ

AWS::CodeGuruReviewer::RepositoryAssociation

  • 確認日:2022-04-09
  • Rainのバージョン:1.2.0

rain build結果

Type: AWS::CodeGuruReviewer::RepositoryAssociation
Properties:
    ConnectionArn: CHANGEME # Optional
    Name: CHANGEME
    Owner: CHANGEME # Optional
    Tags:
    - Key: CHANGEME
        Value: CHANGEME
    Type: CHANGEME

AWSドキュメントに記載されているテンプレート

Type: AWS::CodeGuruReviewer::RepositoryAssociation
Properties: 
  BucketName: String
  ConnectionArn: String
  Name: String
  Owner: String
  Tags: 
    - Tag
  Type: String

差分

BucketName


Rain v1.2.0のリリース日は2021/4/16なので、それ以降に発表・ローンチされたサービスの部分などが差分として出ている感じですかね。
本記事も、気づいたところからどんどん追記していけたらと考えています。(追記するする詐欺にならないように精進します・・・)

Discussion