【AWSチュートリアル】TerraformのState管理用のS3バケットを作成する。

トップ AWS
スポンサーリンク

本AWSチュートリアルでは、Terraformを利用してAWSリソースを構築していきます。

その準備として、今回は「TerraformのState管理要のS3バケット」を作成していきたいと思います。

スポンサーリンク

前提

  1. Terraform実行用のIAMロールを作成していること。
  2. 1のIAMロールにスイッチできるIAMユーザーを用意していること。(また、そのIAMユーザーのアクセスキーとシークレットキーを事前に取得しておく。)

まだ準備ができていないようであれば、以下の記事を参照して準備してもらえたら!

【AWSチュートリアル】IAMロールを準備する。(AWS構築用のIAMロールにスイッチしてTerraformが実行できるようにする。)

今回の目標

  1. TerraformのState管理用のS3バケットを作成する。

では、やっていきましょう!

TerraformのState管理用のS3バケットって何?

TerraformではAWSの状態をStateと呼ばれるファイルで管理しています。Stateはテキストファイルです。そのため、「GitHubとかで管理すれば?」と疑問を持たれるかもしれません。

確かに、そう思いそうなところですが、GitHubで管理すると「AWSの状態を管理したStateファイルが複数の場所に保存される可能性がある。」というデメリットが発生します。

例:各自でクローンし、ローカルでTerraformを実行するとそれぞれでAWSの状態を持つことになります。AさんはEC2を作成したStateを持っているけど、Bさんは作成していない。というような感じで。

そういった理由から、Terraformには、Stateファイルの管理を1箇所で行えるbackendと呼ばれる仕組みがあります。

今回はこのbackendを使用し、S3バケットでStateを管理しよう!ということです。

TerraformのState

S3バケットを作成する。

それではTerraformのState管理用のS3バケットを作成していきましょう!

1.「バケットを作成」をクリックする。

S3バケット作成手順01

2.各種設定を入力して「バケットを作成」をクリックする。

S3バケット作成手順02

ここが今回のメインどころ。設定項目を解説していきます。

設定項目解説
バケット名S3のバケット名を入力する。インターネットからアクセス可能なため、一意な名称にする必要があります。
AWSリージョンオブジェクトを保存するリージョンを選択します。今回は東京(ap-northeast-1)を選択。
オブジェクト所有者ACL設定をすることが可能です。ACLでは、作成するS3バケットやオブジェクトにアクセス許可をAWSアカウント単位で行うことが可能。IAMユーザー単位などで管理することができるバケットポリシーでアクセス制御を行うことが推奨のため、無効にしています。
パブリックアクセスを全てブロックパブリックからのアクセス制御を一括でできる設定。パブリックからのアクセスは拒否するため、有効にする。
バケットのバージョニングオブジェクトをバージョン管理することができる機能です。TerraformのStateファイルはS3でバージョン管理することが不要のため、無効にします。
デフォルトの暗号化オブジェクトをアップロードした際にデフォルトで暗号化するかどうかの設定。セキュリティの面から有効にしています。また、暗号化に使用するキーはAWSマネージドキー(SSE-S3)を使用しています。(自分達での管理が不要で楽なため。クロスアカウントアクセスできないなどの成約があるため、実務では要検討。)

3.S3バケットが完成!

S3バケット作成手順03

次回以降、Terraformを使ってAWSリソースを構築していく時は、この作成したS3バケットにStateが保存されていくことになります。

お疲れ様でした。

これにて本記事は終了です。

コメント

タイトルとURLをコピーしました