本AWSチュートリアルでは、Terraformを利用してAWSリソースを構築していきます。
その準備として、今回は「TerraformのState管理要のS3バケット」を作成していきたいと思います。
前提
- Terraform実行用のIAMロールを作成していること。
- 1のIAMロールにスイッチできるIAMユーザーを用意していること。(また、そのIAMユーザーのアクセスキーとシークレットキーを事前に取得しておく。)
まだ準備ができていないようであれば、以下の記事を参照して準備してもらえたら!
【AWSチュートリアル】IAMロールを準備する。(AWS構築用のIAMロールにスイッチしてTerraformが実行できるようにする。)
今回の目標
- TerraformのState管理用のS3バケットを作成する。
では、やっていきましょう!
TerraformのState管理用のS3バケットって何?
TerraformではAWSの状態をStateと呼ばれるファイルで管理しています。Stateはテキストファイルです。そのため、「GitHubとかで管理すれば?」と疑問を持たれるかもしれません。
確かに、そう思いそうなところですが、GitHubで管理すると「AWSの状態を管理したStateファイルが複数の場所に保存される可能性がある。」というデメリットが発生します。
そういった理由から、Terraformには、Stateファイルの管理を1箇所で行えるbackendと呼ばれる仕組みがあります。
今回はこのbackendを使用し、S3バケットでStateを管理しよう!ということです。
S3バケットを作成する。
それではTerraformのState管理用のS3バケットを作成していきましょう!
1.「バケットを作成」をクリックする。
2.各種設定を入力して「バケットを作成」をクリックする。
ここが今回のメインどころ。設定項目を解説していきます。
設定項目 | 解説 |
---|---|
バケット名 | S3のバケット名を入力する。インターネットからアクセス可能なため、一意な名称にする必要があります。 |
AWSリージョン | オブジェクトを保存するリージョンを選択します。今回は東京(ap-northeast-1)を選択。 |
オブジェクト所有者 | ACL設定をすることが可能です。ACLでは、作成するS3バケットやオブジェクトにアクセス許可をAWSアカウント単位で行うことが可能。IAMユーザー単位などで管理することができるバケットポリシーでアクセス制御を行うことが推奨のため、無効にしています。 |
パブリックアクセスを全てブロック | パブリックからのアクセス制御を一括でできる設定。パブリックからのアクセスは拒否するため、有効にする。 |
バケットのバージョニング | オブジェクトをバージョン管理することができる機能です。TerraformのStateファイルはS3でバージョン管理することが不要のため、無効にします。 |
デフォルトの暗号化 | オブジェクトをアップロードした際にデフォルトで暗号化するかどうかの設定。セキュリティの面から有効にしています。また、暗号化に使用するキーはAWSマネージドキー(SSE-S3)を使用しています。(自分達での管理が不要で楽なため。クロスアカウントアクセスできないなどの成約があるため、実務では要検討。) |
3.S3バケットが完成!
次回以降、Terraformを使ってAWSリソースを構築していく時は、この作成したS3バケットにStateが保存されていくことになります。
お疲れ様でした。
これにて本記事は終了です。
コメント