どこにでもいる30代SEの学習ブログ

主にプログラミング関連の学習内容。読んだ本の感想や株式投資についても書いてます。

【AWS】Cloud9のEC2環境をCloudFormationで構築する

f:id:predora005:20200919224031p:plain
AWS Cloud9のEC2環境をCloudFormationで構築する*1

※ 2020/02/12にQrunchで書いた記事を移行しました。

EC2環境をCloudFormationで構築することも出来ます。

EC2環境の構築はマネージメントコンソール経由でも非常に簡単です。 なので、個人で使う分には、CloudFormationとマネージメントコンソール、どちらで構築しても時間の差はほとんどないでしょう。

CloudFormationのメリットは、CLIで構築できる点です。 複数環境を用意するときや、構築や破棄を短期間に繰り返す場合には、CloudFormationのメリットが活きるでしょう。

SSH環境はCloudFormationで構築出来ませんでした。 CloudFormationで作成したEC2インスタンスを使って、SSH環境を構築することは可能です。

[1] テンプレートファイルの書き方

[1-1] 最小限の構成

InstanceTypeのみを指定すれば、残りの項目はデフォルト値をセットしてくれます。 Logical IDはテンプレートファイル内で任意であれば、なんでも良いです。

{Logical ID}:
  Type: AWS::Cloud9::EnvironmentEC2
  Properties:
    InstanceType: {インスタンスのタイプ}

[1-2] 全ての項目

AWS::Cloud9::EnvironmentEC2に全項目の説明が載っていますが、項目の数は少ないです。

{Logical ID}:
  Type: AWS::Cloud9::EnvironmentEC2
  Properties:
    InstanceType: {インスタンスのタイプ}
    Name: {環境の名前}
    Description: {環境の説明}
    AutomaticStopTimeMinutes: {最後に使ってからシャットダウンされるまでの時間}
    SubnetId: {インスタンスと通信するサブネットのID}
    Repositories:
      - RepositoryUrl: {CodeCommitリポジトリのURL}
        PathComponent: {CodeCommitリポジトリの展開先}

[1-3] 筆者の構成

パラメータで変更できるようにしています。

C9Environment:
  Type: AWS::Cloud9::EnvironmentEC2
  Properties:
    Name: !Sub '${AWS::StackName}-Cloud9-IDE'
    Description: !Sub '${AWS::AccountId}-${AWS::Region}-${AWS::StackName}'
    AutomaticStopTimeMinutes: !Ref C9StopTime
    InstanceType: !Ref C9InstanceType
    SubnetId: !Ref Subnet
    Repositories:
      - RepositoryUrl: !Sub 'https://git-codecommit.${AWS::Region}.amazonaws.com/v1/repos/${RepositoryName}'
        PathComponent: !Sub 'codecommit/${RepositoryName}'

[2] テンプレートファイル全体の構成

最小限の構成であればわずか6行で、t3.microのEC2環境が作成できます。

AWSTemplateFormatVersion: 2010-09-09
Resources:
  C9Environment:
    Type: AWS::Cloud9::EnvironmentEC2
    Properties:
      InstanceType: t3.micro

参考文献

Create an AWS Cloud9 environment with AWS CloudFormation

*1:Mudassar IqbalによるPixabayからの画像