S3
https://gyazo.com/a6626679d0878e8d51757ddc19090b2a
Simple Storage Service
ファイル突っ込むとURLが貰えてアクセスできる
物理サーバー自体がブラジルとかアメリカとかにあって遠い
なのでCloudFrontと組み合わせる
可用性99.99%
耐久性99.999999999% ref
イレブンナインと呼ぶらしいmrsekut.icon
S3 Bucket
S3のStorage class
S3のアクセスコントロール
#WIP
デフォルトでは同一バケットに同名のファイルを入れると上書きされる
防ぐ方法
S3のObject Lock
https://dev.classmethod.jp/articles/s3-object-lock/
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/object-lock.html
オブジェクトロックを使用すると、特定のオブジェクトを不変としてマークし、指定された期間、または無期限で上書きや削除から保護することができます。これは、重要なレコードなど、変更されるべきではないデータを保持する場合に特に有効です。GPT-4.icon
S3のversioning
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/Versioning.html
https://dev.classmethod.jp/articles/3minutes-s3-versioning-lifecycle/
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/versioning-workflows.html
全てのバージョンに対し課金される
条件付き書き込み機能が最近生えたらしい
S3のConditional Writes
2024/8/28
https://www.itmedia.co.jp/news/articles/2408/28/news110.html
条件付き書き込みを利用すると、オブジェクトの書き込み時にオブジェクトの存在をチェックし、オブジェクトが存在しない時だけ書き込む、という指定が可能になります。
これにより、アプリケーションがデータをAmazon S3に書き込む際に、既存のオブジェクトを上書きすることを簡単に防ぐことができるようになります。k
このへんってなんでデフォルトで無効になってるの #??
S3の料金
従量課金
保存している容量
転送量
AWS加入から1年間は無料利用枠がある
完全無料というわけではないが、1人で遊ぶ分には超えないぐらいの条件がある
https://qiita.com/g_ayushi/items/0e0f34d19813b8fdc2b8#s3
概要
S3のreplication
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/replication.html
S3 Bucketから別のバケットに自動で非同期コピーできる
S3上のprivateなbacketの画像にアクセスする
resource "aws_s3_bucket"
resource "aws_s3_bucket_versioning"
code:tf
resource "aws_s3_bucket_versioning" "enabled" {
bucket = aws_s3_bucket.terraform_state.id
versioning_configuration {
status = "Enabled"
}
}
S3 Bucketのバージョニング
/mrsekut-book-4814400527/202
resource "aws_s3_bucket_public_access_block"
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
}
/mrsekut-book-4814400527/204
resource "aws_s3_bucket_website_configuration"
resource "aws_s3_bucket_acl"
ここで見た
code:tf
resource "aws_s3_bucket_acl" "s3_bucket" {
bucket = aws_s3_bucket.s3_bucket.id
acl = "public-read"
}
resource "aws_s3_bucket_policy"
ここで見た
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}/*",
]
},
]
})
}
resource "aws_s3_object"
ここで見た
code:tf
resource "aws_s3_object" "object_www" {
depends_on = aws_s3_bucket.s3_bucket
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"
}
/mrsekut-book-486354314X/046