S3
https://gyazo.com/a6626679d0878e8d51757ddc19090b2a
Simple Storage Service
ファイル突っ込むとURLが貰えてアクセスできる
物理サーバー自体がブラジルとかアメリカとかにあって遠い
可用性99.99%
デフォルトでは同一バケットに同名のファイルを入れると上書きされる
防ぐ方法
オブジェクトロックを使用すると、特定のオブジェクトを不変としてマークし、指定された期間、または無期限で上書きや削除から保護することができます。これは、重要なレコードなど、変更されるべきではないデータを保持する場合に特に有効です。GPT-4.icon
全てのバージョンに対し課金される
条件付き書き込み機能が最近生えたらしい
2024/8/28
条件付き書き込みを利用すると、オブジェクトの書き込み時にオブジェクトの存在をチェックし、オブジェクトが存在しない時だけ書き込む、という指定が可能になります。
これにより、アプリケーションがデータをAmazon S3に書き込む際に、既存のオブジェクトを上書きすることを簡単に防ぐことができるようになります。k
このへんってなんでデフォルトで無効になってるの #?? 従量課金
保存している容量
転送量
AWS加入から1年間は無料利用枠がある
完全無料というわけではないが、1人で遊ぶ分には超えないぐらいの条件がある
概要
code:tf
resource "aws_s3_bucket_versioning" "enabled" {
bucket = aws_s3_bucket.terraform_state.id
versioning_configuration {
status = "Enabled"
}
}
bucketのpublic accessを防ぐ
code:tf
resource "aws_s3_bucket_public_access_block" "public_access" {
bucket = aws_s3_bucket.terraform_state.id
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
code:tf
resource "aws_s3_bucket_acl" "s3_bucket" {
bucket = aws_s3_bucket.s3_bucket.id
acl = "public-read"
}
code:tf
resource "aws_s3_bucket_policy" "s3_bucket" {
bucket = aws_s3_bucket.s3_bucket.id
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Sid = "PublicReadGetObject"
Effect = "Allow"
Principal = "*"
Action = "s3:GetObject"
Resource = [
aws_s3_bucket.s3_bucket.arn,
"${aws_s3_bucket.s3_bucket.arn}/*",
]
},
]
})
}
code:tf
resource "aws_s3_object" "object_www" {
for_each = fileset("${path.root}", "*.html")
bucket = var.bucket_name
key = basename(each.value)
source = each.value
etag = filemd5("${each.value}")
content_type = "text/html"
acl = "public-read"
}