目次

はじめに

第1章 Laravelアプリケーションの作成

1.1 本章完了時点のサンプルコード
1.2 GitHubにLaravelの新規リポジトリを作成する
1.3 リポジトリをローカルにクローンする
1.4 DockerのビルドとLaravelのインストール
1.5 簡単な認証機能の追加
1.6 既存のGitHub Actionsのワークフローの削除

第2章 Terraformのセットアップ

2.1 本章完了時点のサンプルコード
2.2 Terraformのインストール
2.3 tfenvの利用
2.4 AWS CLIのインストールとプロファイルの設定
2.5 tfstate管理用のS3バケットの作成

第3章 ECRの構築とTerraformの基本操作

3.1 本章完了時点のサンプルコード
3.2 Terraform用のGitHubリポジトリの作成
3.3 .gitignoreの作成
3.4 環境別のディレクトリの作成
3.5 .terraform-versionの作成
3.6 目的別のディレクトリの作成
3.7 backendの設定
3.8 terraform fmt
3.9 プロバイダーの設定
3.10 terraformバージョンの固定
3.11 デフォルトのタグ設定
3.12 シンボリックリンクの作成
3.13 terraform initの実行
3.14 ECR用のtfファイルの作成
3.15 本書でのリソース命名規則
3.16 terraform plan / applyの実行
3.17 terraform state list / show / pull
3.18 リソースの削除方法
3.19 aws_ecr_lifecycle_policyの作成
3.20 モジュール
3.21 terraform state mv
3.22 PHP用ECRの作成
3.23 Local Valuesの使用

第4章 GitHub ActionsでイメージをECRにプッシュする

4.1 本章完了時点のサンプルコード
4.2 開発ブランチ名について
4.3 GitHub Actionsのワークフロー作成
4.4 AWSの認証情報の設定
4.5 TerraformでのIAMユーザーの作成
4.6 アクセスキーIDとシークレットアクセスキーの発行
4.7 GitHubのSecretsの設定
4.8 GitHub Actionsの実行と結果の確認
4.9 Assume Roleの実施
4.10 環境変数ENV_NAMEの設定
4.11 コードのチェックアウト
4.12 コンテナの起動
4.13 PHP関連パッケージのインストール
4.14 PHP関連パッケージのキャッシュ
4.15 Node.js関連パッケージのインストールとキャッシュ
4.16 JavaScriptのトランスパイルの実行
4.17 ECRへのログイン
4.18 nginxイメージのビルドとプッシュ
4.19 nginxのDockerfileの編集
4.20 .dockerignoreの作成
4.21 PHPイメージのビルドとプッシュ
4.22 PHPのDockerfileの編集
4.23 ワークフローの実行
4.24 検証用の記述の変更

第5章 ネットワーク(VPC)の構築

5.1 本章完了時点のサンプルコード
5.2 ディレクトリと各種tfファイルの作成
5.3 VPCの作成
5.4 インターネットゲートウェイの作成
5.5 サブネットの作成
5.6 パブリックサブネット用ルートテーブルの作成
5.7 NATゲートウェイの作成
5.8 プライベートサブネット用ルートテーブルの作成
5.9 セキュリティグループの作成

第6章 ドメインの取得とロードバランサーの構築

6.1 本章完了時点のサンプルコード
6.2 ドメインの取得
6.3 ディレクトリと各種tfファイルの作成
6.4 ホストゾーンの参照
6.5 証明書の発行
6.6 ALBのアクセスログ保存用S3バケットの作成
6.7 ALBの作成
6.8 ALBのリスナーの作成
6.9 ALIASレコードの作成

第7章 ECS(Fargate)の構築

7.1 本章完了時点のサンプルコード
7.2 Fargateに関連する用語の簡単な解説
7.3 ECSクラスターの作成
7.4 タスク実行ロールの作成
7.5 CloudWatchロググループの作成
7.6 パラメータストアの作成
7.7 タスク実行ロールのポリシー追加
7.8 タスクロールの作成とECS Exec
7.9 タスク定義の作成
7.10 ターゲットグループの作成
7.11 ECSサービスの作成

第8章 GitHub ActionsでFargateにデプロイする

8.1 本章完了時点のサンプルコード
8.2 ecspressoのセットアップ
8.3 ecspressoによる手動デプロイ
8.4 各定義ファイルの見直し
8.5 デプロイ用IAMロールの権限追加
8.6 GitHub Actionsによるデプロイ
8.7 サービスとタスク定義をTerraform管理外にする

第9章 Laravelとnginxを本番環境向けに修正する

9.1 本章完了時点のサンプルコード
9.2 LaravelのリンクをHTTPSにする
9.3 LaravelのログをCloudWatch Logsに連携する
9.4 nginxアクセスログのアクセス元IPの修正
9.5 ALBからのヘルスチェックをログに出力しない
9.6 その他nginxの修正
9.7 ソフトウェア情報等を隠蔽する
9.8 JavaScriptやCSSの古いキャッシュを使わせない
9.9 Laravelの設定ファイルをキャッシュする

第10章 RDSとプライベートホストゾーンの構築

10.1 本章完了時点のサンプルコード
10.2 RDS用セキュリティグループの作成
10.3 DBサブネットグループの作成
10.4 DBパラメータグループの作成
10.5 DBオプショングループの作成
10.6 CloudWatch ロググループの作成
10.7 RDS(DBインスタンス)の作成
10.8 RDSのパスワードの変更
10.9 パラメータストアの作成
10.10 タスク定義ファイルの編集
10.11 ECSサービスにRDS用セキュリティグループを付与
10.12 DBマイグレーション処理の追加
10.13 RDS用のCNAMEレコードの作成
10.14 .env.prodの編集
10.15 動作確認

第11章 ElastiCache(Redis)の構築

11.1 本章完了時点のサンプルコード
11.2 ElastiCache(Redis)を使う目的
11.3 ローカル環境でRedisを使えるようにする
11.4 ElastiCache用セキュリティグループの作成
11.5 ElastiCacheサブネットグループの作成
11.6 ElastiCacheパラメータグループの作成
11.7 ElastiCache(レプリケーショングループ)の作成
11.8 ECSサービスにElastiCache用セキュリティグループを付与
11.9 ElastiCache用のCNAMEレコードの作成
11.10 .env.prodの編集
11.11 動作確認

付録A 参考文献

おわりに

謝辞

はじめに

 本書を手に取ってくださり、ありがとうございます。


 本書では、nginx + Laravel + MySQL + Redisで構成されるアプリケーションをAWS上に構築する方法を解説します。nginxとLaravelは、AWSのコンテナオーケストレーションサービスであるECS(Fargate)を使用します。また、AWSの各リソースはTerraformで構築し、デプロイはGitHub Actionsでおこないます。

図: 構成図

対象読者

 本書では、次のような人を対象としています。

 ・LaravelをAWS Fargateに自動デプロイする方法を知りたい人

 ・上記のAWS環境をTerraformで構築する方法を知りたい人

 ・GitHub Actionsの基本的な使い方を知りたい人

事前準備

 本書を進めるにあたっては、以下が必要です。

 ・Gitの基本知識(ブランチ作成、コミット、プッシュをおこなえる等)

 ・GitHubの基本知識(リポジトリ作成、プルリクエスト作成、マージがおこなえる等)

 ・Docker Desktop for Macをインストール済み

 ・Homebrewをインストール済み

 ・AWSアカウントを持っている

環境

 本書は、MacOSで動作確認をおこなっています。その他、使用するバージョンは以下の通りです。

 ・Laravel 8.*

 ・nginx 1.20

 ・MySQL 8.0

 ・Redis 6.*

 ・Terraform 1.0.0

 ・TerraformのAWSプロバイダ 3.38.0

 ・AWS Fargate 1.4.0

サンプルコード

 本書で作成するコードはGitHubで公開しています。

 ・https://github.com/shonansurvivors/laravel-fargate-app

 ・https://github.com/shonansurvivors/laravel-fargate-infra

 その他、各章終了時点のコードも用意しているので、参考にしてください。それらへのリンクは、各章の冒頭に記載するようにしています。

AWSの利用料金について

 本書では、有料のAWSリソースを作成します。できるだけ料金の安い構成にする、有料のリソースをこまめに削除しやすいTerraformのコードにするなど工夫はしていますが、リソースを長期間作りっぱなしにして想定以上の料金を請求されることがないよう注意してください。思わぬ高額請求が不安な方は、以下の記事などを参考に、予想請求額が一定額を超えたら通知メールが飛ぶ設定を入れることをお勧めします。

 ・https://blog.shonansurvivors.com/entry/aws-budgets

第1章 Laravelアプリケーションの作成

この章では、ローカル環境でLaravelアプリケーションの作成をおこないます。

1.1 本章完了時点のサンプルコード

 本章完了時点のサンプルコードは以下になります。必要に応じて参考にしてください。

 ・https://github.com/shonansurvivors/laravel-fargate-app/tree/chapter-1

1.2 GitHubにLaravelの新規リポジトリを作成する

 本書では、使いやすいLaravel開発環境として人気が高い、ucan-lab/docker-laravel1をフォークした、筆者のリポジトリをテンプレートとして利用します。

 本家のucan-lab/docker-laravelを使っても構わないのですが、日々更新されており、最新版では本書の内容を進められない可能性もあるため、フォークした筆者のリポジトリを使用することをお勧めします。

 まず、筆者のGitHubリポジトリにブラウザでアクセスしてください。

 ・https://github.com/shonansurvivors/docker-laravel

 本家のucan-lab/docker-laravelと同様、筆者のGitHubリポジトリもテンプレートリポジトリとなっているため、「Use this template」ボタンが表示されています。この「Use this template」ボタンを使うと、コピー元のコミット履歴は引き継がれずに新規リポジトリが作成されます。

図1.1: github.com/shonansurvivors/docker-laravel

 ボタンを押すと、リポジトリ作成画面が表示されます。「Repository name」には、これから作成するリポジトリの名前を入力します。本書ではlaravel-fargate-appとする前提で説明を続けます。入力が終わったら、「Create repository from template」ボタンを押してください。

図1.2: Laravel用リポジトリの作成

1.3 リポジトリをローカルにクローンする

 ボタンを押してリポジトリの作成が終わったら、リポジトリをローカルにクローンします。以下のコマンドを実行してください。

$ git clone https://github.com/{あなたのGitHubアカウント名}/laravel-fargate-app.git


開発ブランチの作成とコミットについて

 これより先ではローカルのリポジトリに各種変更を加えていきますが、開発ブランチを作成の上、適宜コミットを実施してください。

1.4 DockerのビルドとLaravelのインストール

 続いて、リポジトリに用意されたDockerfileからのDockerイメージのビルドと、Laravelのインストールをおこないます。

 docker-laravelではmake create-projectとコマンドを打つことで、DockerイメージのビルドやLaravelのインストールに加えて、データベースのマイグレーションなどを一挙に実行してくれます。ただし、インストールされるLaravelは、その時点の最新バージョンとなります。本書ではLaravel8系で動作確認をしているので、8系がインストールされるよう、Makefileのlaravel-installに続く行を以下の通り書き換えてください。

リスト1.1: Makefile

...(省略)...
laravel-install:
    docker-compose exec app composer create-project --prefer-dist "laravel/laravel=8.*" .
...(省略)...

 Makefileの編集が終わったら、以下コマンドを実行してください。

$ make create-project

 処理完了後、ブラウザでlocalhostにアクセスし、以下の画面が表示されれば問題ありません。

図1.3: localhost

1.5 簡単な認証機能の追加

 今後LaravelをFargateにデプロイした際に、データベースへのアクセスの伴う機能の動作確認をおこなうため、簡単な認証機能を追加します。

1.5.1 Laravel Breezeのインストール

 Laravelに認証機能を追加するパッケージとしてはLaravel JetstreamやLaravel Breezeがありますが、今回はシンプルなLaravel Breezeを使います。

 laravel-fargate-appディレクトリで以下を実行してください。

$ docker-compose exec app composer require laravel/breeze --dev

 docker-laravelでは、appコンテナにPHPとComposerがインストールされています。そのため、composerコマンドはappコンテナ上で実行するようにしてください。

1.5.2 php artisan breeze:installの実行

 Laravel Breezeから各種コントローラーやBlade等を生成します。以下を実行してください。

$ docker-compose exec app php artisan breeze:install

1.5.3 Node.js関連モジュールのインストール

 Node.js関連のモジュールをインストールします。以下コマンドを実行してください。

$ docker-compose exec web npm install

 docker-laravelでは、webコンテナにNode.jsとnpmがインストールされています。そのため、npmコマンドはwebコンテナ上で実行するようにしてください。

 なお、Makefileでは上記コマンドがnpm-installと定義されているので、代わりにmake npm-installと実行しても構いません。

1.5.4 .gitignoreの編集

 この後、JavaScriptやCSSをトランスパイルしますが、それによって生成されるファイルはGit管理不要です。そのため、.gitignoreを以下の通り編集してください。

リスト1.2: backend/.gitignore

/node_modules
/public/css # この行を追加
/public/hot
/public/js # この行を追加
/public/mix-manifest.json # この行を追加
/public/storage
...(省略)...

1.5.5 トランスパイルの実行

 .gitignoreの編集が終わったらトランスパイルをおこないます。以下コマンドを実行してください。

$ docker-compose exec web npm run dev

 Makefileでは上記コマンドがnpm-devと定義されているので、代わりにmake npm-devと実行しても構いません。

1.5.6 認証機能の動作確認

 ここまでの作業が終わったら、ブラウザでlocalhostにアクセスし、ユーザー登録を実施してみてください。

図1.4: Registerを選択
図1.5: ユーザー情報を登録

 ユーザー登録後、以下のようにダッシュボード画面に遷移できれば、問題ありません。

図1.6: ダッシュボード画面

1.6 既存のGitHub Actionsのワークフローの削除

 最後に本書を進める上では不要な機能を削除します。

 docker-laravelでは、GitHub Actions上で定期実行されるテスト処理が定義されています。本書を進める上では不要なので削除してください。

.

└──laravel-fargate-app

    └── .github

        └── workflows

            ├── laravel-create-project.yml # 削除

            └── laravel-git-clone.yml # 削除

 以上で、本章は完了です。

第2章 Terraformのセットアップ

この章では、Terraformを使う準備をします。

2.1 本章完了時点のサンプルコード

 本章ではコードの変更はないため、サンプルコードはありません。

2.2 Terraformのインストール

 Terraformをクライアントにインストールします。今回はHomebrewを使用します。

$ brew install terraform

2.3 tfenvの利用

 次に、クライアントで使用するTerraformのバージョンを切り替えることのできる、tfenvをインストールします。

2.3.1 tfenvを使う理由

 Terraformでインフラを一度新規構築した後、クライアントで使用するTerraformのバージョンを上げると、Terraformの記法や利用できる機能が変わったことを理由として、作成済みのTerraformのコード(tfファイル)を一部書き換える必要が出てくる場合があります。そのため、一度構築したインフラは、いったんは新規構築時に使ったTerraformのバージョンで保守することになります。もし、利用するTerraformのバージョンを上げる際は、移行計画を別途立ててコードの書き換えをおこなうことになるかと思います。

 つまり、クライアントでは常時最新バージョンのTerraformを使うのではなく、特定のバージョンに固定して使う必要があります。一方で、複数プロジェクトでTerraformを使用している場合、プロジェクトごとにTerraformのバージョンは異なるでしょうから、クライアントで使用するTerraformは複数のバージョンから切り替えることができないと不便です。そこで、tfenvをインストールします。

2.3.2 tfenvのインストール

 tfenvもHomebrewを使ってインストールします。

$ brew install tfenv

 もし、以下のようなエラーが出たら、指示に従って、brew unlink terraformを実行した上で、改めてbrew install tfenvを実行してください。

Error: Cannot install tfenv because conflicting formulae are installed.

  terraform: because tfenv symlinks terraform binaries


Please `brew unlink terraform` before continuing.

2.3.3 tfenvでインストール可能なTerraformバージョンの確認

 tfenv list-remoteで、tfenvでインストール可能なTerraformバージョンを確認できます。

$ tfenv list-remote

1.0.1

1.0.0

0.15.5

...(省略)...

2.3.4 tfenvを使ったTerraformのインストール

 tfenv installで、指定したバージョンのTerraformをインストールできます。本書では、1.0.0をインストールします。

$ tfenv install 1.0.0

2.3.5 インストール済みおよび使用中のバージョンの確認

 tfenv listで、インストール済みのバージョンと、現在使用中のバージョンが確認できます。「*」が付いているバージョンが現在使用中なのですが、まだ1.0.0に「*」が付いていません。

$ tfenv list

  1.0.0

2.3.6 使用するバージョンの切り替え

 tfenv useで、使用するバージョンを切り替えできます。ここでは、1.0.0を指定してください。

$ tfenv use 1.0.0

Switching default version to v1.0.0

Switching completed

 tfenv listを改めて実行すると、使用中のバージョンが1.0.0になったことが確認できます。

$ tfenv list

* 1.0.0 (set by /usr/local/Cellar/tfenv/2.0.0/version)

2.4 AWS CLIのインストールとプロファイルの設定

 Terraformを使ってAWSにリソースを作成するには、AWS CLI(Command Line Interface)が必要です。そのため、AWS CLIをインストールします。また、AWS CLIで使用するプロファイルを設定します。

2.4.1 AWS CLIのインストール

 AWS CLIがインストールされているかどうかは、以下のコマンドで確認できます。

$ aws --version

 コマンド実行後、以下のようにバージョンが表示されれば、AWS CLIはインストール済みです。

aws-cli/2.1.10 Python/3.9.1 Darwin/19.6.0 source/x86_64 prompt/off

 もし、AWS CLIがインストールされていなければ、以下コマンドを実行してください。

$ brew install awscli

 インストール完了後、以下のコマンドを実行してください。

$ aws --version

 コマンド実行後、以下のようにバージョン表示がされれば問題ありません。

aws-cli/2.1.10 Python/3.9.1 Darwin/19.6.0 source/x86_64 prompt/off

2.4.2 IAMユーザーのアクセスキーの発行

 AWS CLIで、あるIAMユーザーの権限で操作するには、そのIAMユーザーのアクセスキーIDとシークレットアクセスキーが必要です。これを発行します。

 もし、AWS CLIを普段から使っていて、AdministratorAccess権限を持ったIAMユーザーをプロファイルに設定済みであれば、実施することはありません。「2.5 tfstate管理用のS3バケットの作成」に飛んで、そこから先を読んでください。

 AWS CLIを使うのが初めてであったり、プロファイルというものをよく知らないという方は、このまま読み進めてください。

IAMの選択

 ブラウザからAWSマネジメントコンソールのIAMに移動してください。

管理者権限を持ったIAMユーザーの選択

 左側のメニューから「ユーザー」を選択し、AdministratorAccess権限を持っているIAMユーザーの名前を押してください。

図2.1: IAMユーザーの選択

 上の画面では、terraformという名前のIAMユーザーを選択していますが、これは筆者のAWSアカウント内だけに存在する、AdministratorAccess権限を持ったIAMユーザーです。実際には、あなたのAWSアカウント内に存在するAdministratorAccess権限を持っているIAMユーザーを選択するようにしてください。

アクセスキーの作成

 「認証情報」タブを選択すると表示される、「アクセスキーの作成」ボタンを押してください。

図2.2: アクセスキーの作成

 以下の画面が表示され、アクセスキーIDとシークレットアクセスキーが確認できるようになります。

図2.3: アクセスキーIDとシークレットアクセスキー

 この画面は閉じずに、そのままにしておいてください。

アクセスキーIDとシークレットアクセスキーの取り扱いについて

 アクセスキーIDとシークレットアクセスキーの値は、他人に知られないよう注意してください。たとえば、何かのファイルにメモ代わりに記述して、気づかないうちにうっかりGitHubのパブリックリポジトリにプッシュしてしまった、といったようなことがないようにしてください。もし他人に知られてしまうと、悪用されて高額課金されてしまうというリスクがあります。

2.4.3 AWS CLIでのアクセスキーIDとシークレットアクセスキーの利用方法について

 先ほどのアクセスキーIDとシークレットアクセスキーを使えるようにAWS CLIに設定すると、AdministratorAccess権限でターミナルからAWSの操作をおこなうことができます。具体的な設定方法としては、環境変数に設定する方法と、プロファイルに設定する方法があります。環境変数に設定する場合は、ターミナルで以下のようにコマンドを実行します。

$ export AWS_ACCESS_KEY_ID=XXX...

$ export AWS_SECRET_ACCESS_KEY=XXX...

$ export AWS_REGION=ap-northeast-1

 もうひとつの設定方法であるプロファイルを利用する場合は、上記のような一連の設定に名前を付けて呼び出すことができます。

 プロファイルを利用した方が管理しやすいので、本書ではプロファイルの設定方法を説明します。

2.4.4 プロファイルの作成と設定

 まず、プロファイルを作成します。ターミナルで以下コマンドを実行してください(実行場所のディレクトリはどこでも構いません)。

 terraformの部分は、プロファイルに付ける名前です。terraform以外のお好みの名前でも構いません。

$ aws configure --profile terraform

アクセスキーIDの設定

 コマンドを実行すると、最初に以下が表示されます。

AWS Access Key ID [None]:

 以下画面のアクセスキーIDの値を貼り付けてください。

図2.4: アクセスキーID

 入力が終わったら、ターミナルでエンターキーを押してください。

シークレットアクセスキーの設定

 次に以下が表示されます。

AWS Secret Access Key [None]:

 以下画面の表示を押すと表示される、シークレットアクセスキーの値を貼り付けてください。

図2.5: アクセスキーID

 入力が終わったら、ターミナルでエンターキーを押してください。

リージョンの設定

 次に以下が表示されます。

Default region name [None]:

 ここでは以下のように、ap-northeast-1(アジアパシフィック東京)と入力してエンターキーを押してください。

Default region name [None]: ap-northeast-1

出力フォーマットの設定

 最後に以下が表示されます。

Default output format [None]:

 ここでは以下のように、jsonと入力してエンターを押してください。

Default output format [None]: json

 ここで設定したのは、AWS CLIを実行した結果の出力形式です。他にもtextなどが選択1できます。

プロファイルの確認

 以上で、一連の設定をひとまとめにしたプロファイルが新規作成されました。この段階ではプロファイルが作成されただけで、まだ使用する状態になっていません。作成したプロファイルを使用するには、環境変数AWS_PROFILEにプロファイル名を設定します。

 以下コマンドを実行してください(以下は、プロファイルの名前をterraformで作成した場合の例です)。

$ export AWS_PROFILE=terraform

 次に、以下コマンドを実行してください。

$ aws configure list

 現在使用中のプロファイルが、表形式で表示されます。

      Name                    Value             Type    Location

      ----                    -----             ----    --------

   profile                terraform           manual    --profile

access_key     ****************XXXX shared-credentials-file

secret_key     ****************XXXX shared-credentials-file

    region           ap-northeast-1      config-file    ~/.aws/config

 profileと書かれた行のValue列の値が、先ほど作成したプロファイルの名前(terraform等)となっていれば問題ありません。

 今後、本書でTerraformを使っていく中で、もしも権限不足などでエラーになっていると思われるときは、aws configure listコマンドを使って、正しいプロファイルを使用する設定になっているかどうかを確認するようにしてください。

2.5 tfstate管理用のS3バケットの作成

 Terraformでは、インフラの最新の状態をtfstateと呼ばれるファイルで管理します。

 このtfstateはデフォルトではローカルに保存されますが、チームでTerraformを扱う場合は、ローカルではなくチーム全員が参照・更新可能な場所に保存する必要があります。

 読者の方は1人で本書のチュートリアルを進めていくでしょうから、tfstateをローカルに保存して進めることも可能かと思いますが、チーム開発などにも対応できるよう、tfstateをAWSのストレージサービスであるS3に保存していくようにします。

 なお、今回対応は見送りますが、Terraformでは複数人でのtfstateの更新が競合しないよう、DynamoDBを使ってロックをおこなう2こともできます。

2.5.1 S3バケットの作成

 S3バケットは先ほど設定が完了したAWS CLIを使って数回のコマンドで作成することもできるのですが、ここではマネジメントコンソールから作成していくことにします。

バケットの作成の選択

 ブラウザからAWSマネジメントコンソールのS33に移動し、「バケットの作成」を選択してください。

図2.6: Amazon S3

バケット名の入力とリージョンの選択

 以下の画面が表示されるので、バケット名を入力し、リージョンを選択します。

図2.7: 一般的な設定

 バケット名は、世界中で他と被らないユニークな名前にする必要があります。画面例では、筆者のSNSなどでのアカウント名を含めるようにして、shonansurvivors-tfstateとしました。読者の方は、何かユニークな名前-tfstateとするようにしてください。

 リージョンについては、「アジアパシフィック (東京) ap-northeast-1」を選択してください。

ブロックパブリックアクセスのバケット設定

 「パブリックアクセスをすべてブロック」はチェックをしたままとします。

図2.8: ブロックパブリックアクセス設定

バージョニング

 「バケットのバージョニング」は「有効にする」を選択してください。

図2.9: バージョニング

 バージョニング4を有効化すると、S3バケット内のオブジェクト(ファイル)を世代管理します。バージョニングを設定しておくことで、tfstateを誤って削除したり更新したりしてしまったときのリカバリが可能となります。

暗号化

 「サーバー側の暗号化」は「有効にする」、「暗号化キータイプ」は「Amazon S3 キー (SSE-S3)」を選択してください。

図2.10: デフォルトの暗号化

バケットの作成

 全ての入力が終わったら、「バケットを作成」を押してください。

図2.11: バケットを作成

 以上で本章は完了です。次の章では、Terraformを使って、AWSリソースを作成していきます。

試し読みはここまでです。
この続きは、製品版でお楽しみください。