Amazon S3
- 버킷
- Access Grants
- 액세스 지점
- 객체 Lambda 액세스 지점
- 다중 리전 액세스 지점
- 배치 작업
- S3용 IAM Access Analyzer
1. S3 버킷 (Bucket)
- 필수 항목:
- bucket: 버킷 이름 (필수)
- 선택 항목:
- acl: 버킷의 접근 제어 목록 (옵션)
- versioning: 버킷의 버전 관리 설정 (옵션)
- server_side_encryption_configuration: 서버 측 암호화 설정 (옵션)
- tags: 버킷에 태그를 추가 (옵션)
- 리소스 이름: aws_s3_bucket
resource "aws_s3_bucket" "example_bucket" {
bucket = "my-example-bucket" # 필수: 버킷 이름
# 옵션: 접근 제어 목록을 설정 (기본값은 private)
acl = "private"
# 옵션: 버전 관리 설정
versioning {
enabled = true
}
# 옵션: 서버 측 암호화 설정
server_side_encryption_configuration {
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}
# 옵션: 태그 추가
tags = {
Name = "MyExampleBucket"
Environment = "Production"
}
}
2. Access Grants (액세스 권한 부여)
필수 항목:
- bucket: 버킷 이름 (필수)
- policy: JSON 형식의 정책 문서 (필수)
리소스 이름: aws_s3_bucket_policy
resource "aws_s3_bucket_policy" "example_policy" {
bucket = aws_s3_bucket.example_bucket.bucket # 필수: 연결된 버킷
policy = <<POLICY
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "${aws_s3_bucket.example_bucket.arn}/*"
}
]
}
POLICY
}
3. S3 액세스 지점 (Access Point)
필수 항목:
- bucket: 연결할 S3 버킷 (필수)
선택 항목:
- vpc_configuration: VPC에서의 액세스 설정 (옵션)
리소스 이름: aws_s3_access_point
resource "aws_s3_access_point" "example_access_point" {
bucket = aws_s3_bucket.example_bucket.bucket # 필수: 연결된 버킷
# 옵션: VPC 내에서 접근할 수 있도록 설정
vpc_configuration {
vpc_id = aws_vpc.main.id
}
# 옵션: 태그 추가
tags = {
Name = "ExampleAccessPoint"
}
}
4. 객체 Lambda 액세스 지점
필수 항목:
- bucket: 연결할 S3 버킷 (필수)
- function_arn: Lambda 함수 ARN (필수)
리소스 이름: aws_s3_bucket_lambda_function
resource "aws_s3_bucket_lambda_function" "example_lambda_access_point" {
bucket = aws_s3_bucket.example_bucket.bucket # 필수: 연결된 버킷
function_arn = aws_lambda_function.example.arn # 필수: 연결된 Lambda 함수 ARN
events = ["s3:ObjectCreated:*"] # 트리거할 이벤트 (옵션)
filter {
prefix = "uploads/" # 필터링할 객체 경로
suffix = ".jpg"
}
}
5. 다중 리전 액세스 지점 (Multi-Region Access Point)
필수 항목:
- name: 액세스 지점 이름 (필수)
- regions: 여러 리전에서 사용할 버킷 정의 (필수)
리소스 이름: aws_s3control_multi_region_access_point
resource "aws_s3control_multi_region_access_point" "example_multi_region" {
name = "example-multi-region-access-point" # 필수: 액세스 지점 이름
region {
bucket = aws_s3_bucket.example_bucket.bucket # 첫 번째 리전의 버킷
}
region {
bucket = aws_s3_bucket.secondary_bucket.bucket # 두 번째 리전의 버킷
}
}
6. S3 배치 작업
필수 항목:
- manifest: 처리할 객체 목록 (필수)
- operation: 수행할 작업 (필수)
- role_arn: 작업을 수행할 IAM 역할 (필수)
리소스 이름: aws_s3control_batch_job
resource "aws_s3control_batch_job" "example_batch_job" {
manifest {
location {
object_arn = "arn:aws:s3:::my-manifest-bucket/manifest.json"
etag = "123456789abcdef"
}
format = "S3BatchOperations_CSV_20180820"
}
operation {
s3_put_object_copy {
target_resource = aws_s3_bucket.target_bucket.arn
}
}
role_arn = aws_iam_role.s3_batch_role.arn # 필수: 역할 ARN
}
7. S3용 IAM Access Analyzer
필수 항목:
- analyzer_name: Access Analyzer 이름 (필수)
리소스 이름: aws_accessanalyzer_analyzer
resource "aws_accessanalyzer_analyzer" "example_analyzer" {
analyzer_name = "s3-access-analyzer" # 필수: 이름
type = "ACCOUNT" # 계정 기반 분석기
}
'AWS' 카테고리의 다른 글
AWS VPC Transit G/W, 트래픽 미러링, VPC 래티스 리소스 (0) | 2024.10.22 |
---|---|
AWS VPN 가상 사설 네트워크, AWS가 확인한 액세스 리소스 (0) | 2024.10.22 |
AWS VPC 보안, DNS 방화벽, 네트워크 방화벽 리소스 (0) | 2024.10.22 |
AWS VPC 리소스 (0) | 2024.10.22 |
AWS DirectConnect 리소스 (0) | 2024.10.22 |