CloudFromationとは
CloudFormationはプログラミング言語やYAML,JSONを使用してAWSリソースを構築出来、AWS環境をテンプレート化しておくことで、同じ環境を作成する際に時間を削減することができます。
今回はYAMLで作成していきますので、JSONに変換したい方は次の記事をご参照下さい。
YAMLからJSONに変換する方法
完成したテンプレート
テンプレート
AWSTemplateFormatVersion: "2010-09-09"
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
-
Label:
default: EC2
Parameters:
- Ec2Name
- InstanceType
- ImageId
- SshKeyName
- Ec2PubricIp
- SecurityGroupIds
- SubnetId
-
Label:
default: EBS
Parameters:
- VolumeType
- VolumeSizeGiB
- EbsKmsArn
Parameters:
Ec2Name:
Type: String
Default: 'EC2-NAME'
InstanceType:
Type: String
Default: 't2.micro'
# 許可するインスタンスタイプ
AllowedValues:
- t2.micro
- t2.nano
ImageId:
Type: AWS::EC2::Image::Id
SshKeyName:
Type: AWS::EC2::KeyPair::KeyName
Ec2PubricIp:
Type: String
AllowedValues:
- "true"
- "false"
SecurityGroupIds:
Type: AWS::EC2::SecurityGroup::Id
SubnetId:
Type: AWS::EC2::Subnet::Id
VolumeType:
Type: String
AllowedValues:
- gp2
- gp3
- io1
- io2
- sc1
- st1
- standard
# 許可するボリュームタイプ
AllowedValues:
- gp2
VolumeSizeGiB:
Type: Number
Default: '8'
EbsKmsArn:
Type: String
Default: 'KMS-ARN'
Resources:
Ec2Instance:
Type: AWS::EC2::Instance
Properties:
NetworkInterfaces:
- AssociatePublicIpAddress: !Ref Ec2PubricIp
DeleteOnTermination: "true"
Description: "Public IP Address"
SubnetId: !Ref SubnetId
DeviceIndex: '0'
GroupSet:
- !Ref SecurityGroupIds
InstanceType: !Ref InstanceType
ImageId: !Ref ImageId
KeyName: !Ref SshKeyName
BlockDeviceMappings:
- DeviceName: /dev/xvda
Ebs:
DeleteOnTermination: "true"
VolumeType: !Ref VolumeType
VolumeSize: !Ref VolumeSizeGiB
Encrypted: true
KmsKeyId: !Ref EbsKmsArn
Tags:
- Key: Name
Value: !Ref Ec2Name
構築手順
1 スタックの新規作成
AWS CloudFormation管理コンソールから、スタックの作成をクリックし、[新しいリソースを使用(標準)]を選択。
2 テンプレートアップロード
[スタックの作成]で、[テンプレートの準備完了]を選択し、[テンプレートファイルのアップロード]>
[ファイルの選択]で、テンプレートを選択。
3 パラメータ入力
各パラメータを入力します。スタックの名前は任意の名前を入れる
パラメータの詳細
パラメータ名 | 用途 | 備考 |
---|---|---|
Ec2Name | EC2の名前 | 例:CF-EC2 |
InstanceType | インスタンスタイプの入力 | 例:t2.micro |
ImageId | インスタンスのAMIID | 例:ami-xxxxxxxxxxx |
SshKeyName | SSHのKeyNameを選択 | 事前に作成が必要になります |
Ec2PubricIp | EC2にパブリックIPアドレスを付与するか | true=付与,false=付与しない |
SecurityGroupIds | EC2にアタッチするSGを選択 | 事前に作成が必要になります |
SubnetId | EC2インスタンスを起動するサブネットを選択 | 事前に作成が必要になります |
VolumeType | ボリュームのタイプを選択 | 例:gp2 |
VolumeSizeGiB | ボリュームのサイズ(GiB) | 例:8 |
EbsKmsArn | EBS暗号化のKMSのARN | 例:arn:aws:kms:452345234nafofpu:579823475723:key/ssssscasdfsdafsadfas |
4 CloudFormation詳細設定
次へを選択。CloudFormationの詳しい設定について次の記事をご覧下さい。
CloudFormationの詳しい設定について
5 最終確認
最終確認を行い送信
を選択
6 正常終了確認
ステータスがCREATE_COMPLETEになったらスタック正常終了です。