Day4: CloudFormationを使ってインフラをコード化


【手順】

  1. AWSマネジメントコンソールでCloudFormationのテンプレートを作成
  2. EC2インスタンスの構成(AMI ID、インスタンスタイプ、セキュリティグループなど)をテンプレートに定義
  3. 作成したテンプレートを使ってスタックを作成
  4. 作成されたインフラリソースを確認し、適切に構成されていることを確認
  5. 変更管理を行い、コードでのインフラ構成を運用に反映

【実施したこと】

CloudFormationテンプレートを作成し、スタックを構築することでインフラをコードベースで定義しました。

テンプレートではAMI、インスタンスタイプ、キーペア、セキュリティグループの定義などを行いました。

【結果】

テンプレートからスタックを作成し、意図通りのEC2インスタンスを自動で立ち上げることに成功しました。 インフラをコードで管理することで、変更点の追跡や再利用が容易になり、構成の一貫性も確保できました。

作成したスタックの画像 スタック作成成功画像

【苦戦したこと】

S3にアップロードしたテンプレートファイル(YAML)のURL指定のエラー

URLの形式(例:s3://バケット名/ファイル名.yaml)や、ファイルが実際に正しくアップロードされているかの確認が不十分だったため、CloudFormation側でテンプレートが見つからない・内容が不正というエラーが出てしまいました。

また、テンプレートファイルの内容が正しく保存されていない状態でアップロードしてしまったことも原因でした。修正したはずの内容が反映されておらず、構文ミスやリソースの未定義などでスタック作成が失敗することがありました。

S3バケット名の重複エラー

最初は手動でバケット名を指定していましたが、スタック作成時に名前の重複エラーが発生することがありました。
そのため、S3バケット名を自動で生成するように変更しました。

これにより、名前の重複を避け、他のリソースと衝突することなく、スムーズにスタックを作成できるようになりました。

変更前のテンプレート

変更前のテンプレート

変更後のテンプレート

変更後のテンプレート

【今後の活用】

今回、CloudFormationテンプレートをアップロードするためにS3バケットを使用しましたが、
ブラウザ上での操作ではフォルダー構造を保ったままアップロードするのが難しく、作業効率がやや悪いと感じました。

今後は、WinSCPなどのS3対応ツールを活用し、テンプレートファイルをフォルダーごと一括で効率的にアップロードできるようにしたいです。

これにより、作業のスピードアップとミスの軽減が期待できます。