cloudformationてなあに?
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