にほんブログ村
AWS の自動化サービスは、以下の 3つがあります。
- AWS Elastic Beanstalk
- AWS OpsWorks
- CloudFormation
どのサービスにも向き不向きがあり、得意とする部分がありますので、要件に合わせて使用することが大切です。
Elastic Beanstalk
インフラ構成の自動構築とアプリ導入の自動化サービスです。こちらの記事で、以前調べています。
- Web サーバー構成(ELB + AutoScaling + EC2)
- バッチワーカー構成(SQS + AutoScaling + EC2)
- OS より上も下も、標準構成の範囲内で対応(自由度は高くはない)
OpsWorks
Chef を利用した構成管理サービスです。
- EC2 上のエージェントが OpsWorks 上の Chef レシピ(構成設計図)を参照し自動構築
- 自前で Chef Client / Server を構築・保守する必要がない
- Chef を既に利用している環境に最適
- OS よりも下のレイヤーに関しては、できることが限られている
AWS のリソース管理・構築を自動化するサービスです。
- テンプレート(構築設計書)を JSON や YAML 形式で記述
- テンプレートを元に、AWS のリソースを自動構築
- OS より上は、Ansible や Chef を併用する必要がある
- OS より下は、テンプレートに従って何でも可能(自由度が高い)
CloudFormation は、以下の2つから構成されます。
テンプレート: AWS のリソースを JSON や YAML 形式で記載した構成設計図
スタック: テンプレートから構成された AWS のリソース群
複数のリソースを集合として管理しているため、削除する時も、個別でなく、全体で削除が可能となります。
テンプレートの構成
今回は、YAML 形式を使ってみます。サンプルのテンプレートは、こんな感じです。
テンプレートの内容ですが、
「VPC を作成し、そこにサブネットを 1つ作成し、IGW を作成して、デフォルトルートを向ける」
になっています。
AWSTemplateFormatVersion: '2010-09-09'
Description: Test CloudFormation Template
Resources:
cfnVpc:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: '192.168.0.0/16'
Tags:
- Key: 'Name'
Value: 'cfn-vpc'
cfnSubnet:
Type: 'AWS::EC2::Subnet'
Properties:
CidrBlock: '192.168.1.0/24'
MapPublicIpOnLaunch: true
Tags:
- Key: 'Name'
Value: 'cfn-subnet'
VpcId: !Ref cfnVpc
cfnInternetGateway:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: 'Name'
Value: 'cfn-igw'
cfnAttachGateway:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !Ref cfnVpc
InternetGatewayId: !Ref cfnInternetGateway
cfnRouteTable:
Type: AWS::EC2::RouteTable
Properties:
Tags:
- Key: 'Name'
Value: 'cfn-rt'
VpcId: !Ref cfnVpc
cfnRoute:
Type: AWS::EC2::Route
DependsOn: cfnInternetGateway
Properties:
RouteTableId: !Ref cfnRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref cfnInternetGateway
cfnSubnetRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref cfnSubnet
RouteTableId: !Ref cfnRouteTable
各項目を、1つずつ見ていきましょう。
「AWSTemplateFormatVersion: ‘2010-09-09’」ですが、バージョンの日付は、このまま使う必要があります。変更すると、エラーになります。
現在はこれを使うようにと、AWSのページにも記載がありました。
「Resources:」で、VPC、サブネット、IGW、ルートテーブルなどを指定して、設定をしていきます。
ここで指定できる項目や指定の仕方は、AWS のこちらのページに詳しく記載があります。
まず、VPC を作成します。
VPC で使用するアドレスブロックは、ここでは、「192.168.0.0 /16」 とします。
Tags の「Value:」 で、VPC の名前をタグ付けします。
cfnVpc:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: '192.168.0.0/16'
Tags:
- Key: 'Name'
Value: 'cfn-vpc'
次に、VPC 内に、サブネットを作成します。
サブネットで使用するアドレス範囲は、ここでは、「192.168.1.0 /24」 とします。
Tags の「Value:」で、サブネットの名前をタグ付けします。
「VpcId:」 で、どこの VPC 上にサブネットを作成するのかを指定するのですが、「!Ref」関数で、上で作成した VPC の名前を参照させます。
cfnSubnet:
Type: 'AWS::EC2::Subnet'
Properties:
CidrBlock: '192.168.1.0/24'
MapPublicIpOnLaunch: true
Tags:
- Key: 'Name'
Value: 'cfn-subnet'
VpcId: !Ref cfnVpc
次に、Internet Gateway を作成します。
Tags の「Value:」で、Internet Gateway の名前をタグ付けします。
cfnInternetGateway:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: 'Name'
Value: 'cfn-igw'
次に、作成したInternet Gateway を VPC にアタッチします。
「VpcId:」で、どこの VPC にアタッチするするのかを指定するのですが、「!Ref」関数で、上で作成した VPC の名前を参照させます。
cfnAttachGateway:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !Ref cfnVpc
InternetGatewayId: !Ref cfnInternetGateway
次に、ルートテーブルを作成します。
Tags の「Value:」で、Internet Gateway の名前をタグ付けします。
「VpcId:」で、どこの VPC にアタッチするするのかを指定するのですが、「!Ref」関数で、上で作成した VPC の名前を参照させます。
cfnRouteTable:
Type: AWS::EC2::RouteTable
Properties:
Tags:
- Key: 'Name'
Value: 'cfn-rt'
VpcId: !Ref cfnVpc
次に、デフォルトルートを作成します。
「RouteTableId:」で、どのルートテーブルに作成するのかを指定するのですが、「 !Ref cfnRouteTable」関数で、上で作成したルートテーブルの名前を参照させます。
cfnRoute:
Type: AWS::EC2::Route
DependsOn: cfnInternetGateway
Properties:
RouteTableId: !Ref cfnRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref cfnInternetGateway
最後に、ルートテーブルをサブネットに関連づけます。
「SubnetId:」 で、どのサブネットに関連づけるのかを指定するのですが、「!Ref cfnSubnet」関数で、上で作成したサブネットの名前を参照させます。
「RouteTableId:」で、どのルートテーブルに作成するのかを指定するのですが、「 !Ref cfnRouteTable」関数で、上で作成したルートテーブルの名前を参照させます。
cfnSubnetRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref cfnSubnet
RouteTableId: !Ref cfnRouteTable
「VPC を作成し、そこにサブネットを1つ作成し、IGW を作成して、デフォルトルートを向ける」
これくらいの作業であれば、GUI から行っても良いのですが、サブネットの数が多かったりすると大変です。自動化サービスを使うと便利ですね。
長くなってしまったので、実際にCloudFormation を使ってみるのは、次の記事にしたいと思います。
この教材を使って勉強してます。
「AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト」
AWSに関連する記事:
- AWSを学ぶ(25)VPCエンドポイントを理解しよう
- MS Azure を学ぶ (0) 用語比較
- SSL証明書を簡単に取得する方法 – Wiresharkで証明書を抽出
- オンラインで簡単に証明書を発行する方法
- AWS を学ぶ(24)3つのメッセージングサービス
- AWS を学ぶ(23)CloudFormation を使ってみる
- AWS を学ぶ(22)CloudFormation とは何か?
- AWS を学ぶ(21)Elastic Beanstalk って何だろう?
- AWS を学ぶ(20)AWS Certificate Manager を使ってみる
- AWS を学ぶ(19)AWS の暗号化サービス
- AWS を学ぶ(18)CloudFront を使ってみる
- AWS を学ぶ(17)CloudWatch を使ってみる
- AWSを学ぶ(16)IAMについて
- AWSを学ぶ(15)Glacier とは何か?どの様に使うのか?
- AWSを学ぶ(14)S3とは
- AWSを学ぶ(13)VPC、EC2、ELB、Route 53 を使ってみる
- AWSを学ぶ(12)EC2のイメージ取得と起動
- AWSを学ぶ(11)ストレージサービス
- AWSを学ぶ(10)RDSとは
- AWSを学ぶ(9)ELB を使ってみよう
- AWSを学ぶ(8)CloudFront って何だろう
- AWSを学ぶ(7)Route 53 について
- AWSを学ぶ(6)EC2 を使ってみよう
- AWSを学ぶ(5)EC2の性能とコストの考え方
- AWSを学ぶ(4)EC2を理解しよう
関連する記事:
- Raspberry PiでのPi-Hole設定ガイド
- Video CC TranslatorでUdemyを快適に学ぶ
- TimeMachineEditorでMacバックアップを最適化する方法
- BanBackup でバックアップの自動化
- Raspberry Pi 4 でサイト間 VPN を作ってみよう
- 超小型 Bluetooth スピーカー EWA A106
- カラアゲニスト・パーフェクトガイド(唐揚検定)
- 任天堂 ゲーム&ウォッチ – マリオゲームで懐かしさを再体験
- Raspberry pi 4 バックアップ・リストア
- Apple AirTag を買ってみた
最近の記事:
- 複数の宛先に ping を打つことができる「fping」
- ネイティブの英語 7 “A cup of joe”
- 死刑確定囚・野比のび太 – 第二十三話・昇華するのび太の鬱屈
- 死刑確定囚・野比のび太 – 第二十二話・静の怒りと武の苛立ち
- 死刑確定囚・野比のび太 – 第二十一話・夫婦間の亀裂とのび太の影響
- 死刑確定囚・野比のび太 – 第二十話・のび太の初出勤: 恐れと葛藤
- 死刑確定囚・野比のび太 – 第十九話・ジャイアンとのび太の絆
- 死刑確定囚・野比のび太 – 第十八話・引きこもりの息子と家族のジレンマ
- 死刑確定囚・野比のび太 – 第十七話・ドラえもんと30歳ののび太の葛藤
- 死刑確定囚・野比のび太 – 第十六話・剛田商店の成長と静香の貢献