目的
・AWS上にS3バケットを作成し、静的Webサイトホスティング設定を行う。
前提条件
・Terraformを使用してAWS上にリソースを作成する。
・作成する内容は以下と同様
TFファイル
aws_s3.tf
resource "aws_s3_bucket" "WebBucket" {
bucket = "terraform-webbucket-${data.aws_caller_identity.self.account_id}"
}
resource "aws_s3_bucket_versioning" "versioning_WebBucket" {
bucket = aws_s3_bucket.WebBucket.id
versioning_configuration {
status = "Enabled"
}
}
resource "aws_s3_bucket_public_access_block" "public_access_block_WebBucket" {
bucket = aws_s3_bucket.WebBucket.id
block_public_acls = false
block_public_policy = false
ignore_public_acls = false
restrict_public_buckets = false
}
resource "aws_s3_bucket_website_configuration" "website_configuration_WebBucket" {
bucket = aws_s3_bucket.WebBucket.id
index_document {
suffix = "index.html"
}
}
resource "aws_s3_bucket_policy" "allow_access_to_WebBucket" {
bucket = aws_s3_bucket.WebBucket.id
policy = data.aws_iam_policy_document.allow_access_to_WebBucket.json
}
data "aws_caller_identity" "self" { }
data "aws_iam_policy_document" "allow_access_to_WebBucket" {
statement {
principals {
type = "*"
identifiers = ["*"]
}
effect = "Allow"
actions = ["s3:GetObject"]
resources = ["${aws_s3_bucket.WebBucket.arn}/*"]
}
}
・WebBucket:S3バケット
・versioning_WebBucket:バージョニング有効化
・public_access_block_WebBucket:パブリックアクセス有効化
・website_configuration_WebBucket:静的Webサイトホスティング設定
・allow_access_to_WebBucket:バケットポリシー設定
動作確認
①作成されたS3バケットへ「index.html」をアップロードする
index.html
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>My Website Home Page</title>
</head>
<body>
<h1>Welcome to my website</h1>
<p>Now hosted on Amazon S3 using Terraform!</p>
</body>
</html>