🌧
rain buildとAWSのドキュメントの差分メモ
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
の実行時は、AWSTemplateFormatVersion
、Description
、Outputs
も出力してくれます!
-
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-az1
、apne1-az2
といった値 - AZ名(
ap-northeast-1a
、ap-northeast-1c
)とは別のもの
- 例えば、
- AWS Resource Access Managerのコンソール画面にて確認できる
- アカウントによって、AZ名とAZ IDの紐付けは異なる
- 障害発生時に確認するService Health Dashboardでは、AZ名ではなくAZ IDで表示されていた。このため、AZ名とAZ IDの紐付けは事前に確認しておくことが多かった(経験)
- 別の話になりますが、Service Health DashboardとPersonal Health Dashboardが統合されたとのこと。見やすくなりますね!
EnableDns64
- DNS64を有効化するか否か
- DNS64
- IPv6専用のリソース(IPv6専用サブネット内のインスタンスなど)と、IPv4のリソース(IPv4を使用するインスタンスなど)とを通信させるためのDNS変換を行なってくれる機能
- 参考
Ipv6Native
- IPv6専用のサブネットにするか否か
PrivateDnsNameOptionsOnLaunch
- インスタンスのホスト名に関するオプション。具体的には以下の値がある
- EnableResourceNameDnsAAAARecord
- DNS AAAAレコードを持っているインスタンスのホスト名に対するDNSクエリに応答するか否か
- EnableResourceNameDnsARecord
- DNS Aレコードを持っているインスタンスのホスト名に対するDNSクエリに応答するか否か
- HostnameType
- EC2ホスト名のタイプ
- EnableResourceNameDnsAAAARecord
- EC2のホスト名のタイプには、以下の2種類がある
- IPアドレスベースの命名(IPBN)
- インスタンスのプライベートIPv4アドレスがホスト名に含まれる
- このホスト名にDNSクエリを投げると、プライベートIPv4アドレス(Aレコード)が返せる
- インスタンスのプライベートIPv4アドレスがホスト名に含まれる
- リソースベースの命名(RBN)
- インスタンスIDがホスト名に含まれる
- このホスト名にDNSクエリを投げると・・・
- プライベートIPv4アドレス(Aレコード)が返せる
- IPv6グローバルユニキャストアドレス(AAAAレコード)も返せる
- このホスト名にDNSクエリを投げると・・・
- インスタンスIDがホスト名に含まれる
- IPアドレスベースの命名(IPBN)
- 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
- CodeGuru ReviewerをGitHub Actions内で使用する際に、レビュー対象のソースをアップロードして置いておくためのS3バケット
- Typeに
S3Bucket
を指定した場合は、このプロパティが必須となる - 参考:Amazon CodeGuru Reviewer が GitHub Actions との CI/CD 統合と Java の新しいセキュリティ検知器を発表
Rain v1.2.0のリリース日は2021/4/16なので、それ以降に発表・ローンチされたサービスの部分などが差分として出ている感じですかね。
本記事も、気づいたところからどんどん追記していけたらと考えています。(追記するする詐欺にならないように精進します・・・)
Discussion