😊

cloudformationてなあに?

2024/09/04に公開

1. CloudFormationとは?

CloudFormationは、AWSが提供するインフラストラクチャをコードとして管理するためのサービスです。JSONまたはYAML形式のテンプレートファイルを使って、AWSリソースの定義・作成・更新・削除が行えます。インフラの設定や管理を手動で行う代わりに、コードによって自動化することができるため、インフラ管理のミスを減らし、効率を向上させることができます。

CloudFormationは、インフラストラクチャの「デプロイ」(展開)だけでなく、「インフラのコード化」や「バージョン管理」にも役立ちます。これにより、複雑なシステムを構築する際も、一貫した設定が可能になり、変更を追跡・管理することができます。

2. CloudFormationでできること

CloudFormationを利用することで、AWSが提供するさまざまなリソースを一括で管理し、展開することが可能です。具体的には以下のようなことができます:

インフラの自動化

CloudFormationでは、テンプレートを記述するだけでS3バケット、EC2インスタンス、RDSデータベース、VPCなど、さまざまなAWSリソースを自動で作成・設定できます。
インフラの一貫性

一度テンプレートを作成すれば、そのテンプレートを再利用することで、常に同じ構成のインフラをデプロイできます。これにより、開発・テスト・本番環境で設定が異なるというミスを防ぎます。
変更管理と追跡

CloudFormationは変更セット機能を提供しており、テンプレートを更新する際にどのリソースがどのように変更されるかを確認してから実行できます。これにより、思わぬリソースの削除や変更を防げます。
依存関係の管理

CloudFormationはリソース間の依存関係を自動で解決し、適切な順序でリソースを作成・削除します。例えば、EC2インスタンスを作成する前に、必要なセキュリティグループやサブネットを自動的に先に作成してくれます。

3. CloudFormationの簡単な実装

それでは、実際に簡単なCloudFormationテンプレートを使ってAWSリソースをデプロイしてみましょう。ここでは、基本的なS3バケットを作成する例を紹介します。

テンプレートの内容

以下はYAML形式で記述されたCloudFormationテンプレートです。このテンプレートは、S3バケットを作成するためのものです。

AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyS3Bucket:
    Type: 'AWS::S3::Bucket'
    Properties:
      BucketName: my-simple-s3-bucket-example

テンプレートの構成

AWSTemplateFormatVersion: テンプレートのフォーマットバージョンを指定します(常に'2010-09-09'を使用)。
Resources: ここでは、AWSリソース(S3バケット)を定義しています。
MyS3Bucket: リソースの論理名。テンプレート内で他のリソースが参照する際に使用されます。
Type: 作成するAWSリソースのタイプを指定します。ここでは、AWS::S3::Bucket(S3バケット)です。
Properties: バケットのプロパティを設定します。ここでは、バケット名(my-simple-s3-bucket-example)を指定しています。
デプロイ手順
テンプレートの作成
上記のYAMLテンプレートをテキストエディタで作成し、s3_bucket.yamlという名前で保存します。

AWSコンソールでスタック作成

AWS Management Consoleにログインし、CloudFormationのページに移動します。「テンプレートファイルのアップロード」を選び、作成を押します

スタックの設定

スタック名(例:s3-example-stack)を入力し、その他の設定はデフォルトのままにします。

デプロイの確認

スタック作成が完了したら、S3コンソールにアクセスして、my-simple-s3-bucket-exampleという名前のバケットが作成されていることを確認します。

スタックを確認

最後にs3で確認してみよう

簡単にバケットがつくれました!
次はもっといろいろやってみようと思います

Discussion