CloudFromationとは
CloudFormationはプログラミング言語やYAML,JSONを使用してAWSリソースを構築出来るサービスです。
AWS環境をテンプレート化しておくことで、同じ環境を作成する時間を削減することができます。
今回はYAMLで作成していきますので、JSONに変換したい方は次の記事をご参照下さい。
YAMLからJSONに変換する方法
構成
完成したテンプレート
テンプレート
AWSTemplateFormatVersion: 2010-09-09
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
-
Label:
default: SecurityGroup
Parameters:
- SgName1
- VpcId
- SgIngFromPort1
- SgIngCidrIp1
- SgIngFromPort2
- SgIngCidrIp2
Parameters:
SgName1:
Type: String
Default: 'SgName1'
VpcId:
Type: AWS::EC2::VPC::Id
SgIngCidrIp1:
Type: String
Default: '0.0.0.0/0'
SgIngFromPort1:
Type: String
Default: '80'
SgIngCidrIp2:
Type: String
Default: '0.0.0.0/0'
SgIngFromPort2:
Type: String
Default: '22'
Resources:
InstanceSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: !Ref SgName1
GroupDescription: Allow http to client host
VpcId: !Ref VpcId
# アウトバウンド設定(フルオープン)
SecurityGroupEgress:
- CidrIp: 0.0.0.0/0
IpProtocol: -1
# インバウンド設定
SecurityGroupIngress:
- CidrIp: !Ref SgIngCidrIp1
FromPort: !Ref SgIngFromPort1
IpProtocol: tcp
ToPort: !Ref SgIngFromPort1
- CidrIp: !Ref SgIngCidrIp2
FromPort: !Ref SgIngFromPort2
IpProtocol: tcp
ToPort: !Ref SgIngFromPort2
構築手順
1 スタックの新規作成
AWS CloudFormation管理コンソールから、スタックの作成をクリックし、[新しいリソースを使用(標準)]を選択。
2 テンプレートアップロード
[スタックの作成]で、[テンプレートの準備完了]を選択し、[テンプレートファイルのアップロード]>
[ファイルの選択]で、テンプレートを選択。
3 パラメータ入力
各パラメータを入力します。スタックの名前は任意の名前を入れる
パラメータの詳細
今回はSGのインバウンドをHTTPとSSHを許可する設定を想定しております。
パラメータ名 | 用途 | 備考 |
---|---|---|
SgName1 | SGの名前 | 例:SG-EC2 |
VpcId | SGを配置するVPC | VPCIDをプルダウンで選択 |
SgIngFromPort1 | インバウンドで許可するポート | 例:80 |
SgIngCidrIp1 | インバウンドで許可するCIDR | 例:0.0.0.0/0 |
SgIngFromPort2 | インバウンドで許可するポート | 例:22 |
SgIngCidrIp2 | インバウンドで許可するCIDR | 例:0.0.0.0/0 |
4 CloudFormation詳細設定
次へを選択。CloudFormationの詳しい設定について次の記事をご覧下さい。
CloudFormationの詳しい設定について
5 最終確認
6 正常終了確認
ステータスがCREATE_COMPLETEになったらスタック正常終了です。