はじめに
CloudFormation を学び始めると、最初に次のような流れを理解する必要があります。
- CloudFormation テンプレートを書く
- AWS にテンプレートをアップロードする
- スタックを作成する
- 作成された 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 のトップ画面では、スタックの作成や既存スタックの確認ができます。
右側のカードから スタックの作成 を選択します。
手順2: テンプレートファイルをアップロードする
スタック作成画面に進むと、テンプレートの指定画面が表示されます。
今回は、手元にある YAML ファイルをアップロードするため、次のように選択します。
- 既存のテンプレートを選択
- テンプレートファイルのアップロード
-
ファイルの選択 から
s3-template.yamlを選択
ファイルを選択すると、CloudFormation がテンプレートを一時的に S3 にアップロードし、S3 URL が表示されます。
拡張子は .yaml または .yml を推奨します(JSON 形式も利用できます)。
ここまでできたら、画面右下の 次へ をクリックします。
手順3: スタック名を入力する
次に、スタックの詳細を指定します。
今回はスタック名として、例として次のように入力します。
s3-test-stack
スタック名は、CloudFormation 上でこの構成を管理するための名前です。S3 バケット名とは別物 です。
| 名前の種類 | 意味 |
|---|---|
| スタック名 | CloudFormation 側で管理する単位の名前 |
| バケット名 | 実際に作成される S3 バケットの名前 |
今回のテンプレートでは Parameters を定義していないため、パラメータ欄は パラメータなし のままになります。
入力できたら 次へ をクリックします。
手順4: スタックオプションを確認する
次の画面では、タグ、アクセス許可、ロールバック設定などを指定できます。
今回は学習用のシンプルな S3 バケット作成なので、基本的にはデフォルトのままで問題ありません。
必要に応じてタグを付ける場合は、例えば次のようなタグを設定できます。
| キー | 値 |
|---|---|
| Project | cfn-learning |
| Environment | test |
何も変更しない場合は、そのまま 次へ をクリックします。
手順5: 内容を確認してスタックを作成する
最後に確認画面が表示されます。
確認するポイントは次のとおりです。
- スタック名が正しいか
- アップロードしたテンプレートが正しいか
- 作成対象が意図したリソースか
問題なければ、画面下部の 送信 をクリックします。
これで CloudFormation によるリソース作成が開始されます。
手順6: イベントタブで作成状況を確認する
スタック作成後は、CloudFormation のスタック詳細画面に移動します。
イベント タブを開くと、リソース作成の進行状況を確認できます。
今回の例では、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 を使って 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 バケットの中にオブジェクトが残っている場合、そのままでは削除できません。
削除する流れは次のとおりです。
- S3 バケットを開く
- 中のオブジェクトを削除する
- バケット自体を削除する
学習用のバケットであっても、本当に削除してよいか確認してから操作してください。
つまずきやすいポイント
バケット名が重複している
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 バケットを作成する手順を整理しました。
流れは次のとおりです。
- CloudFormation を開く
- テンプレートファイルをアップロードする
- スタック名を入力する
- スタックを作成する
- イベントタブで
CREATE_COMPLETEを確認する - S3 側でバケットが作成されたことを確認する
CloudFormation は、最初は難しく見えますが、まずは S3 バケット 1 つのような小さな構成から試すと理解しやすいです。
手作業でリソースを作るだけでなく、テンプレートとして残せる点が CloudFormation の大きなメリットです。
おまけ: YAML は手書きでも、ツールでも作れます
CloudFormation テンプレートは手書きでも作れます。
ただ、初学者のうちは次のように感じることもあります。
- どのプロパティが必要か分からない
- YAML のインデントでエラーになる
- AWS 公式ドキュメントを見ても設定項目が多い
私は学習支援として IaCraftStudio というツールを個人開発しています。
S3 などの設定をフォーム入力すると、CloudFormation YAML を生成できます。
手書きで学ぶのもよいですし、ツールで生成した YAML を見ながら学ぶのもよいと思います。
関連記事
CloudFormation や IaC の学習記事として、次の記事も書いています。
- CloudFormationでS3バケットを作る最小構成と、初学者がつまずきやすい設定
- なぜIaCが必要なのか、実務で理解した話
- 【個人開発】CloudFormationのYAMLをフォーム入力で生成できるツールを作った(S3はログイン不要)
- 【個人開発】CloudFormation設計中にAWS料金の月額目安を試算できるようにした




