#!/bin/bash
# S3 관련 정보 확인 스크립트 (버킷 이름을 첫 번째 파라미터로 전달받음)
# 첫 번째 파라미터로 S3 버킷 이름을 받음
bucket_name="$1"
# 버킷 이름이 전달되지 않은 경우 에러 출력
if [ -z "$bucket_name" ]; then
echo "Usage: $0 <bucket-name>"
echo "Example: $0 sungbin-s3-demo-bucket-ap-northeast-2"
exit 1
fi
echo "==== S3 Bucket 정보 확인 중 ===="
echo "==== 환경 변수로 설정된 인증 정보 확인 ===="
# env_auth: AWS 환경 변수에 설정된 인증 정보 확인
env | grep -i AWS
echo "==== AWS CLI에 설정된 Access Key와 Secret Access Key 확인 ===="
# Access Key와 Secret Access Key 확인
echo "Access Key ID:"
aws configure get aws_access_key_id
echo "Secret Access Key:"
aws configure get aws_secret_access_key
echo "==== 현재 설정된 리전(region) 확인 ===="
# CLI에 설정된 리전 확인
aws configure get region
echo "==== 특정 버킷의 위치(location) 확인 ===="
# S3 버킷의 위치 (리전) 확인
aws s3api get-bucket-location --bucket "$bucket_name"
echo "==== S3 버킷의 제약 조건(constraint) 확인 ===="
# S3 버킷의 LocationConstraint 값 확인
aws s3api get-bucket-location --bucket "$bucket_name"
echo "==== S3 버킷의 액세스 제어 리스트(ACL) 확인 ===="
# S3 버킷의 ACL 정보 확인
aws s3api get-bucket-acl --bucket "$bucket_name"
echo "==== S3 버킷의 서버 측 암호화(server side encryption) 설정 확인 ===="
# S3 버킷의 서버 측 암호화 설정 확인
aws s3api get-bucket-encryption --bucket "$bucket_name" || echo "No encryption found for this bucket."
echo "==== S3 버킷에서 KMS 키 ID(sse_kms_key_id) 확인 ===="
# S3 KMS Key ID 확인 (server-side encryption 설정 확인 시 함께 출력됨)
aws s3api get-bucket-encryption --bucket "$bucket_name"
echo "==== S3 버킷의 모든 객체 및 스토리지 클래스(storage_class) 확인 ===="
# S3 버킷의 모든 객체 리스트 가져오기
aws s3 ls "s3://$bucket_name" --recursive | awk '{print $4}' > object_list.txt
# 각 객체의 스토리지 클래스 확인
while IFS= read -r object_key; do
echo "Object Key: $object_key"
aws s3api head-object --bucket "$bucket_name" --key "$object_key" | grep StorageClass || echo "No StorageClass found for this object."
done < object_list.txt
# 스토리지 클래스 조회
cat object_list.txt
# 임시 파일 삭제
rm -f object_list.txt
echo "==== 모든 작업 완료 ===="