【AWS】Cloud9のEC2環境をCloudFormationで構築する
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からの画像