0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudFormationデプロイ手順

0
Posted at

はじめに

CloudFormation を学び始めると、最初に次のような流れを理解する必要があります。

  1. CloudFormation テンプレートを書く
  2. AWS にテンプレートをアップロードする
  3. スタックを作成する
  4. 作成された AWS リソースを確認する

CloudFormation のテンプレート例はよく見かけますが、初学者のうちは次の点で迷いやすいと思います。

  • 書いた YAML をどこからアップロードするのか
  • スタックとは何か
  • 作成が成功したかどこで確認するのか
  • S3 側に本当にバケットができているのか

この記事では、AWS マネジメントコンソールから CloudFormation を使って S3 バケットを作成する手順を整理します。

CLI は使わず、AWS マネジメントコンソールの画面操作を中心に進めます。


今回作成するもの

今回は、CloudFormation で S3 バケットを 1 つ 作成します。

構成はとてもシンプルです。

CloudFormation スタック
└── S3 バケット

CloudFormation を初めて試す場合は、EC2 や VPC のように設定項目が多いものより、S3 バケット 1 つから始めると理解しやすいです。


この記事で使うテンプレート

次の YAML ファイルを用意します。

ファイル名の例は s3-template.yaml です。

AWSTemplateFormatVersion: '2010-09-09'
Description: My first CloudFormation deploy by AWS Console

Resources:
  SampleBucket:
    Type: AWS::S3::Bucket
    DeletionPolicy: Retain
    Properties:
      BucketName: my-cfn-learn-2026xxxx-yourname
      PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true
      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: AES256

Outputs:
  BucketName:
    Description: Created S3 bucket name
    Value: !Ref SampleBucket
  BucketArn:
    Description: Created S3 bucket ARN
    Value: !GetAtt SampleBucket.Arn

バケット名は変更してください

S3 バケット名は 世界中で一意 である必要があります。

そのため、上記の

BucketName: my-cfn-learn-2026xxxx-yourname

は、自分用の名前に変更してください。

例:

BucketName: my-cfn-learn-20260704-suzunari

すでに使われているバケット名を指定すると、スタック作成時にエラーになります。

テンプレート内の各設定項目の意味については、別記事「CloudFormationでS3バケットを作る最小構成と、初学者がつまずきやすい設定」でも解説しています。


事前準備

AWS アカウント

AWS アカウントにログインできる状態にしておきます。

学習用に試す場合でも、誤って本番環境のリソースを変更しないように、可能であれば検証用アカウントや検証用 IAM ユーザーを使うのがおすすめです。

必要な権限

今回作成するのは S3 バケットのみです。

最低限、以下のような操作権限が必要になります。

  • CloudFormation のスタック作成・参照・削除
  • S3 バケットの作成・参照・削除

権限が不足している場合は、スタック作成時に not authorized のようなエラーが表示されます。

リージョン

CloudFormation でスタックを作成するリージョンと、S3 で確認するリージョンを 同じ にしてください。

この記事のスクリーンショットは 東京リージョン(ap-northeast-1) で取得しています。


手順1: CloudFormation を開く

まず、AWS マネジメントコンソールから CloudFormation を開きます。

CloudFormation のトップ画面では、スタックの作成や既存スタックの確認ができます。

右側のカードから スタックの作成 を選択します。

cloudformation_console1.png


手順2: テンプレートファイルをアップロードする

スタック作成画面に進むと、テンプレートの指定画面が表示されます。

今回は、手元にある YAML ファイルをアップロードするため、次のように選択します。

  1. 既存のテンプレートを選択
  2. テンプレートファイルのアップロード
  3. ファイルの選択 から s3-template.yaml を選択

cloudformation_console2.png

ファイルを選択すると、CloudFormation がテンプレートを一時的に S3 にアップロードし、S3 URL が表示されます。

拡張子は .yaml または .yml を推奨します(JSON 形式も利用できます)。

ここまでできたら、画面右下の 次へ をクリックします。


手順3: スタック名を入力する

次に、スタックの詳細を指定します。

今回はスタック名として、例として次のように入力します。

s3-test-stack

cloudformation_console3.png

スタック名は、CloudFormation 上でこの構成を管理するための名前です。S3 バケット名とは別物 です。

名前の種類 意味
スタック名 CloudFormation 側で管理する単位の名前
バケット名 実際に作成される S3 バケットの名前

今回のテンプレートでは Parameters を定義していないため、パラメータ欄は パラメータなし のままになります。

入力できたら 次へ をクリックします。


手順4: スタックオプションを確認する

次の画面では、タグ、アクセス許可、ロールバック設定などを指定できます。

今回は学習用のシンプルな S3 バケット作成なので、基本的にはデフォルトのままで問題ありません。

必要に応じてタグを付ける場合は、例えば次のようなタグを設定できます。

キー
Project cfn-learning
Environment test

何も変更しない場合は、そのまま 次へ をクリックします。


手順5: 内容を確認してスタックを作成する

最後に確認画面が表示されます。

確認するポイントは次のとおりです。

  • スタック名が正しいか
  • アップロードしたテンプレートが正しいか
  • 作成対象が意図したリソースか

問題なければ、画面下部の 送信 をクリックします。

これで CloudFormation によるリソース作成が開始されます。


手順6: イベントタブで作成状況を確認する

スタック作成後は、CloudFormation のスタック詳細画面に移動します。

イベント タブを開くと、リソース作成の進行状況を確認できます。

cloudformation_console4.png

今回の例では、SampleBucket が作成されています。

作成中は CREATE_IN_PROGRESS のような状態になり、成功すると CREATE_COMPLETE になります。

表示形式は タイムラインビューテーブルビュー を切り替えられます。テーブルビューでは、ステータス列で CREATE_COMPLETE を確認できます。

主なステータス

ステータス 意味
CREATE_IN_PROGRESS 作成中
CREATE_COMPLETE 作成成功
CREATE_FAILED 作成失敗
ROLLBACK_IN_PROGRESS 失敗したためロールバック中
ROLLBACK_COMPLETE ロールバック完了

CREATE_COMPLETE になれば、CloudFormation 側の作成は成功です。

出力 タブを開くと、テンプレートの Outputs で定義したバケット名や ARN も確認できます。


手順7: S3 側でバケットを確認する

次に、S3 の画面を開いて、実際にバケットが作成されているか確認します。

S3 のバケット一覧で、テンプレートに指定したバケット名を検索します。

cloudformation_console5.png

テンプレートで指定したバケットが表示されていれば成功です。

これで、CloudFormation を使って S3 バケットを作成できました。


CloudFormation で作るメリット

AWS コンソールから直接 S3 バケットを作ることもできます。

ただし、CloudFormation を使うと、設定内容を YAML として残せます。

例えば今回のテンプレートでは、次の設定がコードとして残っています。

  • S3 バケット名
  • パブリックアクセスブロック設定
  • サーバーサイド暗号化設定
  • 削除時の保持設定(DeletionPolicy
  • Outputs

コンソールで手作業だけ行うと、「どの設定で作ったか」が後から分かりにくくなります。

CloudFormation を使うと、インフラ設定をファイルとして管理できるため、再作成やレビューがしやすくなります。


スタックを削除する場合

検証が終わったら、CloudFormation のスタックを削除できます。

CloudFormation のスタック一覧から対象スタックを選択し、右上の 削除 をクリックします。

ただし、今回のテンプレートでは次の設定を入れています。

DeletionPolicy: Retain

これは、CloudFormation スタックを削除しても、対象リソースを残すための設定です。

今回の場合は、次のような動きになります。

  • CloudFormation スタックは削除される
  • S3 バケットは残る

初めて CloudFormation を使う場合、スタックを削除したのに S3 バケットが残っていて混乱することがあります。

これは DeletionPolicy: Retain による 意図した動き です。

S3 バケットも削除したい場合

S3 バケットも削除したい場合は、S3 の画面から対象バケットを削除します。

ただし、S3 バケットの中にオブジェクトが残っている場合、そのままでは削除できません。

削除する流れは次のとおりです。

  1. S3 バケットを開く
  2. 中のオブジェクトを削除する
  3. バケット自体を削除する

学習用のバケットであっても、本当に削除してよいか確認してから操作してください。


つまずきやすいポイント

バケット名が重複している

S3 バケット名は世界中で一意です。

そのため、次のような名前はすでに使われている可能性があります。

test-bucket
sample-bucket
my-bucket

学習用でも、日付や名前を入れて重複しにくい名前にするのがおすすめです。

例:

my-cfn-learn-20260704-yourname

リージョンを間違える

CloudFormation でスタックを作成したリージョンと、S3 で確認しているリージョンが違うと、作成したリソースを見つけにくくなります。

CloudFormation と S3 の画面で、同じリージョンを見ているか確認してください。

権限不足で失敗する

IAM 権限が不足していると、スタック作成に失敗します。

例えば、CloudFormation のスタック作成権限はあっても、S3 バケットを作成する権限がない場合は失敗します。

その場合は、イベントタブに失敗理由が表示されるため、CREATE_FAILED になっているイベントを確認します。

ROLLBACK_COMPLETE になる

テンプレートに問題があったり、バケット名が重複していたりすると、スタックが ROLLBACK_COMPLETE になることがあります。

ROLLBACK_COMPLETE になった場合は、イベントタブで失敗理由を確認します。

原因を修正したら、同じスタックを更新するより、一度スタックを削除して作り直す方が分かりやすいです。


CLI で実行する場合との違い

今回は AWS コンソールからデプロイしました。

同じことは AWS CLI でも実行できます。

aws cloudformation deploy \
  --template-file s3-template.yaml \
  --stack-name s3-test-stack \
  --region ap-northeast-1

コンソールは、画面で流れを確認しながら進められるため、初学者には分かりやすいです。

一方で、CLI はコマンドとして手順を残せるため、自動化や CI/CD につなげやすいです。

最初はコンソールで流れを理解し、その後 CLI を試すと理解しやすいと思います。


まとめ

この記事では、AWS コンソールから CloudFormation を使って S3 バケットを作成する手順を整理しました。

流れは次のとおりです。

  1. CloudFormation を開く
  2. テンプレートファイルをアップロードする
  3. スタック名を入力する
  4. スタックを作成する
  5. イベントタブで CREATE_COMPLETE を確認する
  6. S3 側でバケットが作成されたことを確認する

CloudFormation は、最初は難しく見えますが、まずは S3 バケット 1 つのような小さな構成から試すと理解しやすいです。

手作業でリソースを作るだけでなく、テンプレートとして残せる点が CloudFormation の大きなメリットです。


おまけ: YAML は手書きでも、ツールでも作れます

CloudFormation テンプレートは手書きでも作れます。

ただ、初学者のうちは次のように感じることもあります。

  • どのプロパティが必要か分からない
  • YAML のインデントでエラーになる
  • AWS 公式ドキュメントを見ても設定項目が多い

私は学習支援として IaCraftStudio というツールを個人開発しています。

S3 などの設定をフォーム入力すると、CloudFormation YAML を生成できます。

手書きで学ぶのもよいですし、ツールで生成した YAML を見ながら学ぶのもよいと思います。


関連記事

CloudFormation や IaC の学習記事として、次の記事も書いています。

  • CloudFormationでS3バケットを作る最小構成と、初学者がつまずきやすい設定
  • なぜIaCが必要なのか、実務で理解した話
  • 【個人開発】CloudFormationのYAMLをフォーム入力で生成できるツールを作った(S3はログイン不要)
  • 【個人開発】CloudFormation設計中にAWS料金の月額目安を試算できるようにした
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?