0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

cloudFormationでECSの環境構築時に使ったものまとめ

Last updated at Posted at 2019-09-13

cloudFormation

https://aws.amazon.com/jp/cloudformation/
クラウド環境内のすべてのインフラストラクチャリソースを記述してプロビジョニングするための共通言語を提供します。

jsonまたはyamlファイルに構築したい環境を記載して、AWSの各サービスを起動することができる。
メリットとしては、テキストファイル管理(Infrastructure as code)できるのでインフラの構造をversion管理できるようになる。

cloudFormationの記法

セクション名 役割 必須
AWSTemplateFormatVersion テンプレートのバージョンを記載する。 ×
Description テンプレートのコメントを記載する。 ×
Metadata テンプレートの詳細情報を記載する。 ×
Parameters 作成時に自由に指定できる値を記載する。 ×
Mappings Key, Valueを記載する。 ×
Resources 実行する処理を記載する。
Outputs 実行後、出力したい値を記載する。 ×

Parameter

parameterは、スタックを実行する際に自由に値を入力し指定することができる。
例えば、事前にVPCを作成していた場合にそのVPCのIDを入力することで、入力したVPC上で作成される。

Parameters: 
  vpcId:
    Type: String
  subnetId:
    type: String
  instanceType:
    type: String
    Default: t2.micro
    AllowedValues:
      - t2.micro
      - t2.small
property名 役割
type 入力できるデータ型を指定する。
default 初期値を指定する。
AllowedValues 入力できる値を指定する。
Description 値の説明を指定する。

上記の場合、vpcId subnetIdはString型のみ有効で、instanceTypeは初期値にt2.microが指定されており、String型のみ有効でt2.microt2.smallしか入力できない。

その他、使用できるパラメーター

Resources

作成していくAWSの情報を記載する。

Resources:
  ec2Instance:
    Type: AWS::EC2::Instance
    Properties:
      AvailabilityZone: !Sub ${AWS::Region}a
      InstanceType: !Ref instanceType

実行するリージョンのaで入力したインスタンスタイプのサーバーのインスタンスを作成させる。

type

大量にあるので、とりあえず一部だけ。

type名 役割 公式
AWS::EC2::VPC VPCを指定する。 リファレンス
AWS::EC2::Subnet サブネットを指定する。 リファレンス
AWS::EC2::InternetGateway インターネットゲートウェイを指定する。 リファレンス
AWS::EC2::VPCGatewayAttachment インターネットゲートウェイをアタッチする。 リファレンス
AWS::EC2::SecurityGroup セキュリティグループを指定する。 リファレンス
AWS::EC2::SecurityGroupIngress リファレンス
AWS::EC2::SpotFleet スポットフリートを指定する。 リファレンス
AWS::ECS::Service ECSサービスを作成する。 リファレンス
AWS::ECS::Cluster ECSクラスターを作成する。 リファレンス
AWS::ECS::TaskDefinition ECSにタスクを定義を追加する。 リファレンス
AWS::ECR::Repository Dockerイメージ用にリポジトリを指定する。 リファレンス
AWS::IAM::Role IAMロールを作成する。 リファレンス
AWS::S3::Bucket S3のバケットを作成する。 リファレンス
AWS::ElasticLoadBalancingV2::LoadBalancer ALBまたは、NLBを指定する。 リファレンス
AWS::ElasticLoadBalancingV2::Listener Load Balancerにリスナーを追加する。 リファレンス
AWS::ElasticLoadBalancingV2::TargetGroup Load Balancerにターゲットを追加する。 リファレンス
AWS::Route53::RecordSetGroup Route53を追加・設定する。 リファレンス
AWS::Logs::LogGroup Logのグループを追加する。 リファレンス
AWS::CodeBuild::Project build環境を作成する。 リファレンス
AWS::CodePipeline::Pipeline ソースの変更方法を記述する。 リファレンス

Outputs

Resourcesが実行された後に、記載したデータを他のスタックに引き継ぐことができる。

Outputs:
  vpcId:
    Value: !Ref vpcId
    Export: 
      name: vpc-dev

他のスタックで、vpc-devとして呼び出すことができるようになる。

関数一覧

Fn名 役割
Ref 指定した名前のValueを返却する。 例) !Ref vpcId
Sub 変数に置き換えた値を返却する。 例) !Sub ${AWS:Region}a
ImportValue 他のスタックでOutputされた値を返却する。 例) !ImportValue vpc-dev

!Refなどの書き方は、省略形です。他の書き方は下記の形式。

Ref : vpcId

Fn::Sub : ${AWS:Region}a

まとめ

cloudFormationでテンプレートを作っておけば、新しくプロジェクトを作成するときなど、コピペで少し変えるだけで使えるのでかなり便利。それにコンソールだと、以前した操作を辿れないので覚えておかないといけないが、テキストファイルだと、Version管理もできて、かなり楽になる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?