0
1

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でS3バケットを作る最小構成と、初学者がつまずきやすい設定

0
Last updated at Posted at 2026-06-22

CloudFormationでS3バケットを作る最小構成と、初学者がつまずきやすい設定

はじめに

CloudFormationを学び始めると、まず最初に作成するAWSリソースの1つがAmazon S3ではないでしょうか。

S3バケット自体は数行のYAMLで作成できますが、実際に試してみると

  • バケット名重複で作成できない
  • パブリックアクセス設定がよく分からない
  • スタック削除時に削除できない

といったポイントでつまずくことがあります。

この記事では、CloudFormationでS3バケットを作成する最小構成と、初学者が理解しておきたい設定について解説します。


最小構成

まずは最小構成です。

AWSTemplateFormatVersion: '2010-09-09'
Description: Simple S3 bucket template

Resources:
  SampleBucket:
    Type: AWS::S3::Bucket

これだけでS3バケットを作成できます。

CloudFormationでは AWS::S3::Bucket を定義するだけで、バケット名が自動生成されます。


バケット名を指定する場合

バケット名を固定したい場合は BucketName を指定します。

Resources:
  SampleBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: my-sample-bucket-12345

つまずきやすいポイント① バケット名はグローバルで一意

S3バケット名はAWSアカウント単位ではなく、世界中で一意である必要があります。

例えば以下のような名前は既に使われている可能性が高いです。

test-bucket
sample
my-bucket

スタック作成時に次のようなエラーになることがあります。

Bucket already exists

そのため、

  • プロジェクト名
  • 環境名(dev / stg / prod)
  • ランダム文字列

などを組み合わせることが一般的です。


つまずきやすいポイント② パブリックアクセス設定

S3は静的Webサイト公開でも利用できますが、基本は非公開を前提に考えるのが安全です。

CloudFormationでは次の設定をよく利用します。

PublicAccessBlockConfiguration:
  BlockPublicAcls: true
  BlockPublicPolicy: true
  IgnorePublicAcls: true
  RestrictPublicBuckets: true

完全に有効化すると、意図しない公開を防止できます。

学習中は

「なぜ公開できないのか」

ではなく

「なぜ公開されないようになっているのか」

という視点で理解すると分かりやすいです。


つまずきやすいポイント③ 暗号化設定

現在はS3側でも暗号化が有効になりますが、CloudFormation上で明示しておくと設定意図が分かりやすくなります。

BucketEncryption:
  ServerSideEncryptionConfiguration:
    - ServerSideEncryptionByDefault:
        SSEAlgorithm: AES256

チーム開発では特に明示しておくことをおすすめします。


つまずきやすいポイント④ スタック削除で消えない

CloudFormation初心者が意外とハマるポイントです。

S3バケット内にオブジェクトが存在すると、スタック削除時にバケット削除が失敗する場合があります。

The bucket you tried to delete is not empty

検証環境でよく遭遇するエラーです。


DeletionPolicyを利用する

削除時の扱いを明示したい場合は DeletionPolicy を利用できます。

Resources:
  SampleBucket:
    Type: AWS::S3::Bucket
    DeletionPolicy: Retain

この設定を入れると、スタック削除後もS3バケットを残せます。


少し実用的な構成例

AWSTemplateFormatVersion: '2010-09-09'
Description: S3 bucket with basic security settings

Resources:
  SampleBucket:
    Type: AWS::S3::Bucket
    DeletionPolicy: Retain

    Properties:
      BucketName: my-sample-bucket-12345

      PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true

      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: AES256

学習用途であれば、このあたりの設定を理解しておくとS3の基本を一通り確認できます。


まとめ

S3バケットはCloudFormationで簡単に作成できますが、実際には次のポイントを理解しておくことが重要です。

  • バケット名はグローバルで一意
  • パブリックアクセス設定は慎重に扱う
  • 暗号化設定を明示する
  • スタック削除時の挙動を理解する

最初は最小構成から始めて、少しずつ設定を追加していくのがおすすめです。


おまけ

私は現在、CloudFormationをGUIで作成できる学習支援ツール IaCraft を個人開発しています。

S3やCloudFrontなどの設定をフォーム入力で作成し、CloudFormationテンプレートを生成できるようにしています。

現在は試験公開中で、どのような機能が役立つかを検証しています。

もし興味があれば触ってみていただき、感想をいただけると嬉しいです。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?