클라우드/AWS 서비스

S3

비니화이팅 2022. 10. 18. 10:41

개요

  • 무제한 저장용량을 제공하는 스토리지 서비스
  • 최소 3 개의 가용영역에 데이터를 자동 분산 저장하기에 성능 , 확장성 , 가용성 , 내구성이 높음
  • 대표적 사용사례 : 백업 및 복원 , 재해 복구 (DR), 아카이브 , 클라우드 스토리지 , 정적 웹사이트 호스팅

버킷

  • 파일 저장 공간(= 디렉터리)
  • 버킷은 리전단위로 생성
  • 버킷이름은 유니크해야 함(다른 AWS 사용자와 중복되지 않아야 함)

객체

  • 파일
  • 개별 파일 업로드 사이즈는 최대 5TB 허용

백업

버전 관리

  • 객체 파일이 여러 버전을 가질 수 있음
  • 동일한 파일이름을 업로드 하면 여러 버전으로 저장됨 예 버전 1, 버전 2…
  • 실수로 객체를 덮어쓰거나 삭제한 경우 이전 버전으로 복구 가능
    • 삭제 후 “버전 표시”를 체크하면 마커되어 있음(실제로 삭제X)
  • 실수로 객체를 삭제 하는 것을 방지하기 위해 MFA Delete 옵션을 추가할 수 있음(버전관리 + MFA Delete 를 조합하면 삭제 방지가 더 강력함)
  • 객체를 하나의 파일이 아닌 여러 버전으로 보존 할 수 있음
  • 버전관리 기능을 사용하려면 해당 기능을 활성화 해야 함

Glacier 이용

지정 기간 후에 제거

지정 기간 후에 Glicier에 아카이브

Glacier에 아카이브하고 일정 기간 후에 제거

암호화

  • 데이터를 전송 중에 그리고 스토리지에 저장된 동안 보호하기 위해 암호화 사용

서버측 암호화

SSE-S3

  • S3 에서 관리하는 암호화

SSE-KMS

  • KMS( 키 관리 서버)에서 관리하는 암호화
  • 관리 서버를 이용하므로 키를 자동 교체하거나 감사기능을 지원 가능

SSE-C

  • 고객 사용자가 관리하는 암호화
  • 전송 시 반드시 HTTPS를 사용해야 함

클라이언트 측 암호화

  • 데이터를 전송하기 전에 클라이언트 사이드에서 암호화

S3접근 관리

퍼블릭 액세스 차단(버킷 설정)

  • 버킷과 객체에 대한 퍼블릭 액세스를 차단하거나 허용
  • 데이터 보호를 위해 기본적으로 퍼블릭 액세스를 차단 / Signed url로는 퍼블릭 액세스 접근 가능

버킷 정책

  • JSON 형식
  • 조건에 따라 버킷에 액세스를 부여하고 제한

Ex) 특정 AWS 리소스에서만 S3 버킷에 액세스 허용

Ex) 다른 AWS 계정에 버킷 액세스 권한 부여 가능(교차 계정 액세스)

// 암호화하지 않으면(true) 모든리소스로부터 업로드 거부
{
    "Version": "2012-10-17",
    "Id": "Policy1643192361886",
    "Statement": [
        {
            "Sid": "Stmt1643192358371",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
            "Condition": {
                "Null": {
                    "s3:x-amz-server-side-encryption": "true"
                }
            }
        }
    ]
}

ACL(액세스 제어 목록)

  • 버킷 레벨에서 ACL을 적용하거나 객체 레벨에서 ACL 적용 가능
  •  

S3정적 웹사이트 호스팅

  • S3 에서 웹사이트 호스팅을 하면 EC2 등의 별도의 웹서버 운영을 하지 않아도 됨

  • 퍼블릭 액세스 모두 허용 후 아래와 같은 정책 적용하면 정상적으로 접근 가능
{
  "Id": "Policy1643193045514",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1643193044002",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
      "Principal": "*"
    }
  ]
}

CORS(Cross-Origin Resource Sharing)

Access Logs

  • S3 버킷의 모든 활동 (접속, 읽기, 쓰기, 변경 등)을 파일로 만들어 S3 버킷이 저장하는 기능
  • 감사 목적으로 활용 가능
  • 로그 분석을 위해 Amazon Athena같은 분석 도구를 사용 가능
  • 절대로 로그 파일 저장소를 같은 버킷에 하지 말것! (무한루프로 인해 로그파일 지속적 증가)

S3 Replication(복제 규칙)

  • S3 버킷 간에 객체를 자동으로 복제하는 기능(활성화 이후에 변경된 파일만 자동으로 복제)
  • 버킷 복제를 위해서는 원본과 대상 버킷 모두 버전관리가 활성화 되어 있어야 함

교차 리전 복제 (CRR, Cross Region Relication)

  • 서로 다른 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 지리적으로 가까운 액세스가 필요한 경우, 재해복구(DR)

동일 리전 복제 (SRR, Same Region Relication)

  • 같은 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 동일한 데이터를 사용하는 프로덕션과 테스트계정 간의 복제, 법적 준수사항으로 같은 리전안에 데이터 복사본을 만들어 놓아야 하는 경우

S3 스토리지 클래스

객체 수명주기 관리(Lifecycle Policy)

  • 객체가 저장되어 삭제될 때까지의 수명주기를 비용효율적으로 저장되도록 관리하는 기능
  • S3 Standard —30days—> S3 Standard-Ia —60days—> Glacier —365days—> 삭제

이벤트 알림

  • S3 의 이벤트가 발생할 때마다 알리는 기능
  • 이벤트는 객체의 생성 , 복제 복원 등이 있음
  • 생성된 이벤트 알림을 Amazon SNS, Amazon SQS, AWS Lambda 로 보낼 수 있음
  • 예를 들어 객체가 삭제될 때 마다 S3 에서 Amazon SNS 로 이벤트 알림을 보내 사용자의 이메일로 전송

전송 가속화

  • S3 버킷의 객체를 사용자에게 더 빠르게 전송해 주는 기능
  • AWS 의 엣지로케이션을 활용해서 S3 데이터를 사용자와 가까운 곳에 캐싱하여 전송

객체 잠금

  • Object Lock( 객체 잠금 ), Glacier Vault (글라시아 아카이브 잠금 ) 2 가지 잠금이 있음
  • 일정시간 또는 무기한으로 객체가 삭제되거나 덮어쓰이지 않도록 하는 기능으로 읽기만 가능
  • 법적인 보존기간이 있는 객체의 경우에 사용

요청자 지불 버킷

  • 일반적으로 버킷에 데이터를 다운로드 하거나 업로드 할 때 비용은 버킷 소유자가 지불
  • 데이터 전송비용을 버킷 소유자가 아닌 요청자 데이터를 다운로드 업로드 하는 사람 이 지불하는 기능

개요

  • 무제한 저장용량을 제공하는 스토리지 서비스
  • 최소 3 개의 가용영역에 데이터를 자동 분산 저장하기에 성능 , 확장성 , 가용성 , 내구성이 높음
  • 대표적 사용사례 : 백업 및 복원 , 재해 복구 (DR), 아카이브 , 클라우드 스토리지 , 정적 웹사이트 호스팅

버킷

  • 파일 저장 공간(= 디렉터리)
  • 버킷은 리전단위로 생성
  • 버킷이름은 유니크해야 함(다른 AWS 사용자와 중복되지 않아야 함)

객체

  • 파일
  • 개별 파일 업로드 사이즈는 최대 5TB 허용

백업

버전 관리

  • 객체 파일이 여러 버전을 가질 수 있음
  • 동일한 파일이름을 업로드 하면 여러 버전으로 저장됨 예 버전 1, 버전 2…
  • 실수로 객체를 덮어쓰거나 삭제한 경우 이전 버전으로 복구 가능
    • 삭제 후 “버전 표시”를 체크하면 마커되어 있음(실제로 삭제X)
  • 실수로 객체를 삭제 하는 것을 방지하기 위해 MFA Delete 옵션을 추가할 수 있음(버전관리 + MFA Delete 를 조합하면 삭제 방지가 더 강력함)
  • 객체를 하나의 파일이 아닌 여러 버전으로 보존 할 수 있음
  • 버전관리 기능을 사용하려면 해당 기능을 활성화 해야 함

Glacier 이용

지정 기간 후에 제거

지정 기간 후에 Glicier에 아카이브

Glacier에 아카이브하고 일정 기간 후에 제거

암호화

  • 데이터를 전송 중에 그리고 스토리지에 저장된 동안 보호하기 위해 암호화 사용

서버측 암호화

SSE-S3

  • S3 에서 관리하는 암호화

SSE-KMS

  • KMS( 키 관리 서버)에서 관리하는 암호화
  • 관리 서버를 이용하므로 키를 자동 교체하거나 감사기능을 지원 가능

SSE-C

  • 고객 사용자가 관리하는 암호화
  • 전송 시 반드시 HTTPS를 사용해야 함

클라이언트 측 암호화

  • 데이터를 전송하기 전에 클라이언트 사이드에서 암호화

S3접근 관리

퍼블릭 액세스 차단(버킷 설정)

  • 버킷과 객체에 대한 퍼블릭 액세스를 차단하거나 허용
  • 데이터 보호를 위해 기본적으로 퍼블릭 액세스를 차단 / Signed url로는 퍼블릭 액세스 접근 가능

버킷 정책

  • JSON 형식
  • 조건에 따라 버킷에 액세스를 부여하고 제한

Ex) 특정 AWS 리소스에서만 S3 버킷에 액세스 허용

Ex) 다른 AWS 계정에 버킷 액세스 권한 부여 가능(교차 계정 액세스)

// 암호화하지 않으면(true) 모든리소스로부터 업로드 거부
{
    "Version": "2012-10-17",
    "Id": "Policy1643192361886",
    "Statement": [
        {
            "Sid": "Stmt1643192358371",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
            "Condition": {
                "Null": {
                    "s3:x-amz-server-side-encryption": "true"
                }
            }
        }
    ]
}

ACL(액세스 제어 목록)

  • 버킷 레벨에서 ACL을 적용하거나 객체 레벨에서 ACL 적용 가능

S3정적 웹사이트 호스팅

  • 퍼블릭 액세스 모두 허용 후 아래와 같은 정책 적용하면 정상적으로 접근 가능
{
  "Id": "Policy1643193045514",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1643193044002",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
      "Principal": "*"
    }
  ]
}

CORS(Cross-Origin Resource Sharing)

Access Logs

  • S3 버킷의 모든 활동 (접속, 읽기, 쓰기, 변경 등)을 파일로 만들어 S3 버킷이 저장하는 기능
  • 감사 목적으로 활용 가능
  • 로그 분석을 위해 Amazon Athena같은 분석 도구를 사용 가능
  • 절대로 로그 파일 저장소를 같은 버킷에 하지 말것! (무한루프로 인해 로그파일 지속적 증가)

S3 Replication(복제 규칙)

  • S3 버킷 간에 객체를 자동으로 복제하는 기능(활성화 이후에 변경된 파일만 자동으로 복제)
  • 버킷 복제를 위해서는 원본과 대상 버킷 모두 버전관리가 활성화 되어 있어야 함

교차 리전 복제 (CRR, Cross Region Relication)

  • 서로 다른 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 지리적으로 가까운 액세스가 필요한 경우, 재해복구(DR)

동일 리전 복제 (SRR, Same Region Relication)

  • 같은 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 동일한 데이터를 사용하는 프로덕션과 테스트계정 간의 복제, 법적 준수사항으로 같은 리전안에 데이터 복사본을 만들어 놓아야 하는 경우

S3 스토리지 클래스

객체 수명주기 관리(Lifecycle Policy)

  • 객체가 저장되어 삭제될 때까지의 수명주기를 비용효율적으로 저장되도록 관리하는 기능
  • S3 Standard —30days—> S3 Standard-Ia —60days—> Glacier —365days—> 삭제

이벤트 알림

  • S3 의 이벤트가 발생할 때마다 알리는 기능
  • 이벤트는 객체의 생성 , 복제 복원 등이 있음
  • 생성된 이벤트 알림을 Amazon SNS, Amazon SQS, AWS Lambda 로 보낼 수 있음
  • 예를 들어 객체가 삭제될 때 마다 S3 에서 Amazon SNS 로 이벤트 알림을 보내 사용자의 이메일로 전송

전송 가속화

  • S3 버킷의 객체를 사용자에게 더 빠르게 전송해 주는 기능
  • AWS 의 엣지로케이션을 활용해서 S3 데이터를 사용자와 가까운 곳에 캐싱하여 전송

객체 잠금

  • Object Lock( 객체 잠금 ), Glacier Vault (글라시아 아카이브 잠금 ) 2 가지 잠금이 있음
  • 일정시간 또는 무기한으로 객체가 삭제되거나 덮어쓰이지 않도록 하는 기능으로 읽기만 가능
  • 법적인 보존기간이 있는 객체의 경우에 사용

요청자 지불 버킷

  • 일반적으로 버킷에 데이터를 다운로드 하거나 업로드 할 때 비용은 버킷 소유자가 지불
  • 데이터 전송비용을 버킷 소유자가 아닌 요청자 데이터를 다운로드 업로드 하는 사람 이 지불하는 기능

개요

  • 무제한 저장용량을 제공하는 스토리지 서비스
  • 최소 3 개의 가용영역에 데이터를 자동 분산 저장하기에 성능 , 확장성 , 가용성 , 내구성이 높음
  • 대표적 사용사례 : 백업 및 복원 , 재해 복구 (DR), 아카이브 , 클라우드 스토리지 , 정적 웹사이트 호스팅

버킷

  • 파일 저장 공간(= 디렉터리)
  • 버킷은 리전단위로 생성
  • 버킷이름은 유니크해야 함(다른 AWS 사용자와 중복되지 않아야 함)

객체

  • 파일
  • 개별 파일 업로드 사이즈는 최대 5TB 허용

백업

버전 관리

  • 객체 파일이 여러 버전을 가질 수 있음
  • 동일한 파일이름을 업로드 하면 여러 버전으로 저장됨 예 버전 1, 버전 2…
  • 실수로 객체를 덮어쓰거나 삭제한 경우 이전 버전으로 복구 가능
    • 삭제 후 “버전 표시”를 체크하면 마커되어 있음(실제로 삭제X)
  • 실수로 객체를 삭제 하는 것을 방지하기 위해 MFA Delete 옵션을 추가할 수 있음(버전관리 + MFA Delete 를 조합하면 삭제 방지가 더 강력함)
  • 객체를 하나의 파일이 아닌 여러 버전으로 보존 할 수 있음
  • 버전관리 기능을 사용하려면 해당 기능을 활성화 해야 함

Glacier 이용

지정 기간 후에 제거

지정 기간 후에 Glicier에 아카이브

Glacier에 아카이브하고 일정 기간 후에 제거

암호화

  • 데이터를 전송 중에 그리고 스토리지에 저장된 동안 보호하기 위해 암호화 사용

서버측 암호화

SSE-S3

  • S3 에서 관리하는 암호화

SSE-KMS

  • KMS( 키 관리 서버)에서 관리하는 암호화
  • 관리 서버를 이용하므로 키를 자동 교체하거나 감사기능을 지원 가능

SSE-C

  • 고객 사용자가 관리하는 암호화
  • 전송 시 반드시 HTTPS를 사용해야 함

클라이언트 측 암호화

  • 데이터를 전송하기 전에 클라이언트 사이드에서 암호화

S3접근 관리

퍼블릭 액세스 차단(버킷 설정)

  • 버킷과 객체에 대한 퍼블릭 액세스를 차단하거나 허용
  • 데이터 보호를 위해 기본적으로 퍼블릭 액세스를 차단 / Signed url로는 퍼블릭 액세스 접근 가능

버킷 정책

  • JSON 형식
  • 조건에 따라 버킷에 액세스를 부여하고 제한

Ex) 특정 AWS 리소스에서만 S3 버킷에 액세스 허용

Ex) 다른 AWS 계정에 버킷 액세스 권한 부여 가능(교차 계정 액세스)

// 암호화하지 않으면(true) 모든리소스로부터 업로드 거부
{
    "Version": "2012-10-17",
    "Id": "Policy1643192361886",
    "Statement": [
        {
            "Sid": "Stmt1643192358371",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
            "Condition": {
                "Null": {
                    "s3:x-amz-server-side-encryption": "true"
                }
            }
        }
    ]
}

ACL(액세스 제어 목록)

  • 버킷 레벨에서 ACL을 적용하거나 객체 레벨에서 ACL 적용 가능

S3정적 웹사이트 호스팅

  • 퍼블릭 액세스 모두 허용 후 아래와 같은 정책 적용하면 정상적으로 접근 가능
{
  "Id": "Policy1643193045514",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1643193044002",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
      "Principal": "*"
    }
  ]
}

CORS(Cross-Origin Resource Sharing)

Access Logs

  • S3 버킷의 모든 활동 (접속, 읽기, 쓰기, 변경 등)을 파일로 만들어 S3 버킷이 저장하는 기능
  • 감사 목적으로 활용 가능
  • 로그 분석을 위해 Amazon Athena같은 분석 도구를 사용 가능
  • 절대로 로그 파일 저장소를 같은 버킷에 하지 말것! (무한루프로 인해 로그파일 지속적 증가)

S3 Replication(복제 규칙)

  • S3 버킷 간에 객체를 자동으로 복제하는 기능(활성화 이후에 변경된 파일만 자동으로 복제)
  • 버킷 복제를 위해서는 원본과 대상 버킷 모두 버전관리가 활성화 되어 있어야 함

교차 리전 복제 (CRR, Cross Region Relication)

  • 서로 다른 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 지리적으로 가까운 액세스가 필요한 경우, 재해복구(DR)

동일 리전 복제 (SRR, Same Region Relication)

  • 같은 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 동일한 데이터를 사용하는 프로덕션과 테스트계정 간의 복제, 법적 준수사항으로 같은 리전안에 데이터 복사본을 만들어 놓아야 하는 경우

S3 스토리지 클래스

객체 수명주기 관리(Lifecycle Policy)

  • 객체가 저장되어 삭제될 때까지의 수명주기를 비용효율적으로 저장되도록 관리하는 기능
  • S3 Standard —30days—> S3 Standard-Ia —60days—> Glacier —365days—> 삭제

이벤트 알림

  • S3 의 이벤트가 발생할 때마다 알리는 기능
  • 이벤트는 객체의 생성 , 복제 복원 등이 있음
  • 생성된 이벤트 알림을 Amazon SNS, Amazon SQS, AWS Lambda 로 보낼 수 있음
  • 예를 들어 객체가 삭제될 때 마다 S3 에서 Amazon SNS 로 이벤트 알림을 보내 사용자의 이메일로 전송

전송 가속화

  • S3 버킷의 객체를 사용자에게 더 빠르게 전송해 주는 기능
  • AWS 의 엣지로케이션을 활용해서 S3 데이터를 사용자와 가까운 곳에 캐싱하여 전송

객체 잠금

  • Object Lock( 객체 잠금 ), Glacier Vault (글라시아 아카이브 잠금 ) 2 가지 잠금이 있음
  • 일정시간 또는 무기한으로 객체가 삭제되거나 덮어쓰이지 않도록 하는 기능으로 읽기만 가능
  • 법적인 보존기간이 있는 객체의 경우에 사용

요청자 지불 버킷

  • 일반적으로 버킷에 데이터를 다운로드 하거나 업로드 할 때 비용은 버킷 소유자가 지불
  • 데이터 전송비용을 버킷 소유자가 아닌 요청자 데이터를 다운로드 업로드 하는 사람 이 지불하는 기능

개요

  • 무제한 저장용량을 제공하는 스토리지 서비스
  • 최소 3 개의 가용영역에 데이터를 자동 분산 저장하기에 성능 , 확장성 , 가용성 , 내구성이 높음
  • 대표적 사용사례 : 백업 및 복원 , 재해 복구 (DR), 아카이브 , 클라우드 스토리지 , 정적 웹사이트 호스팅

버킷

  • 파일 저장 공간(= 디렉터리)
  • 버킷은 리전단위로 생성
  • 버킷이름은 유니크해야 함(다른 AWS 사용자와 중복되지 않아야 함)

객체

  • 파일
  • 개별 파일 업로드 사이즈는 최대 5TB 허용

백업

버전 관리

  • 객체 파일이 여러 버전을 가질 수 있음
  • 동일한 파일이름을 업로드 하면 여러 버전으로 저장됨 예 버전 1, 버전 2…
  • 실수로 객체를 덮어쓰거나 삭제한 경우 이전 버전으로 복구 가능
    • 삭제 후 “버전 표시”를 체크하면 마커되어 있음(실제로 삭제X)
  • 실수로 객체를 삭제 하는 것을 방지하기 위해 MFA Delete 옵션을 추가할 수 있음(버전관리 + MFA Delete 를 조합하면 삭제 방지가 더 강력함)
  • 객체를 하나의 파일이 아닌 여러 버전으로 보존 할 수 있음
  • 버전관리 기능을 사용하려면 해당 기능을 활성화 해야 함

Glacier 이용

지정 기간 후에 제거

지정 기간 후에 Glicier에 아카이브

Glacier에 아카이브하고 일정 기간 후에 제거

암호화

  • 데이터를 전송 중에 그리고 스토리지에 저장된 동안 보호하기 위해 암호화 사용

서버측 암호화

SSE-S3

  • S3 에서 관리하는 암호화

SSE-KMS

  • KMS( 키 관리 서버)에서 관리하는 암호화
  • 관리 서버를 이용하므로 키를 자동 교체하거나 감사기능을 지원 가능

SSE-C

  • 고객 사용자가 관리하는 암호화
  • 전송 시 반드시 HTTPS를 사용해야 함

클라이언트 측 암호화

  • 데이터를 전송하기 전에 클라이언트 사이드에서 암호화

S3접근 관리

퍼블릭 액세스 차단(버킷 설정)

  • 버킷과 객체에 대한 퍼블릭 액세스를 차단하거나 허용
  • 데이터 보호를 위해 기본적으로 퍼블릭 액세스를 차단 / Signed url로는 퍼블릭 액세스 접근 가능

버킷 정책

  • JSON 형식
  • 조건에 따라 버킷에 액세스를 부여하고 제한

Ex) 특정 AWS 리소스에서만 S3 버킷에 액세스 허용

Ex) 다른 AWS 계정에 버킷 액세스 권한 부여 가능(교차 계정 액세스)

// 암호화하지 않으면(true) 모든리소스로부터 업로드 거부
{
    "Version": "2012-10-17",
    "Id": "Policy1643192361886",
    "Statement": [
        {
            "Sid": "Stmt1643192358371",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
            "Condition": {
                "Null": {
                    "s3:x-amz-server-side-encryption": "true"
                }
            }
        }
    ]
}

ACL(액세스 제어 목록)

  • 버킷 레벨에서 ACL을 적용하거나 객체 레벨에서 ACL 적용 가능

S3정적 웹사이트 호스팅

  • 퍼블릭 액세스 모두 허용 후 아래와 같은 정책 적용하면 정상적으로 접근 가능
{
  "Id": "Policy1643193045514",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1643193044002",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
      "Principal": "*"
    }
  ]
}

CORS(Cross-Origin Resource Sharing)

Access Logs

  • S3 버킷의 모든 활동 (접속, 읽기, 쓰기, 변경 등)을 파일로 만들어 S3 버킷이 저장하는 기능
  • 감사 목적으로 활용 가능
  • 로그 분석을 위해 Amazon Athena같은 분석 도구를 사용 가능
  • 절대로 로그 파일 저장소를 같은 버킷에 하지 말것! (무한루프로 인해 로그파일 지속적 증가)

S3 Replication(복제 규칙)

  • S3 버킷 간에 객체를 자동으로 복제하는 기능(활성화 이후에 변경된 파일만 자동으로 복제)
  • 버킷 복제를 위해서는 원본과 대상 버킷 모두 버전관리가 활성화 되어 있어야 함

교차 리전 복제 (CRR, Cross Region Relication)

  • 서로 다른 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 지리적으로 가까운 액세스가 필요한 경우, 재해복구(DR)

동일 리전 복제 (SRR, Same Region Relication)

  • 같은 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 동일한 데이터를 사용하는 프로덕션과 테스트계정 간의 복제, 법적 준수사항으로 같은 리전안에 데이터 복사본을 만들어 놓아야 하는 경우

S3 스토리지 클래스

객체 수명주기 관리(Lifecycle Policy)

  • 객체가 저장되어 삭제될 때까지의 수명주기를 비용효율적으로 저장되도록 관리하는 기능
  • S3 Standard —30days—> S3 Standard-Ia —60days—> Glacier —365days—> 삭제

이벤트 알림

  • S3 의 이벤트가 발생할 때마다 알리는 기능
  • 이벤트는 객체의 생성 , 복제 복원 등이 있음
  • 생성된 이벤트 알림을 Amazon SNS, Amazon SQS, AWS Lambda 로 보낼 수 있음
  • 예를 들어 객체가 삭제될 때 마다 S3 에서 Amazon SNS 로 이벤트 알림을 보내 사용자의 이메일로 전송

전송 가속화

  • S3 버킷의 객체를 사용자에게 더 빠르게 전송해 주는 기능
  • AWS 의 엣지로케이션을 활용해서 S3 데이터를 사용자와 가까운 곳에 캐싱하여 전송

객체 잠금

  • Object Lock( 객체 잠금 ), Glacier Vault (글라시아 아카이브 잠금 ) 2 가지 잠금이 있음
  • 일정시간 또는 무기한으로 객체가 삭제되거나 덮어쓰이지 않도록 하는 기능으로 읽기만 가능
  • 법적인 보존기간이 있는 객체의 경우에 사용

요청자 지불 버킷

  • 일반적으로 버킷에 데이터를 다운로드 하거나 업로드 할 때 비용은 버킷 소유자가 지불
  • 데이터 전송비용을 버킷 소유자가 아닌 요청자 데이터를 다운로드 업로드 하는 사람 이 지불하는 기능

개요

  • 무제한 저장용량을 제공하는 스토리지 서비스
  • 최소 3 개의 가용영역에 데이터를 자동 분산 저장하기에 성능 , 확장성 , 가용성 , 내구성이 높음
  • 대표적 사용사례 : 백업 및 복원 , 재해 복구 (DR), 아카이브 , 클라우드 스토리지 , 정적 웹사이트 호스팅

버킷

  • 파일 저장 공간(= 디렉터리)
  • 버킷은 리전단위로 생성
  • 버킷이름은 유니크해야 함(다른 AWS 사용자와 중복되지 않아야 함)

객체

  • 파일
  • 개별 파일 업로드 사이즈는 최대 5TB 허용

백업

버전 관리

  • 객체 파일이 여러 버전을 가질 수 있음
  • 동일한 파일이름을 업로드 하면 여러 버전으로 저장됨 예 버전 1, 버전 2…
  • 실수로 객체를 덮어쓰거나 삭제한 경우 이전 버전으로 복구 가능
    • 삭제 후 “버전 표시”를 체크하면 마커되어 있음(실제로 삭제X)
  • 실수로 객체를 삭제 하는 것을 방지하기 위해 MFA Delete 옵션을 추가할 수 있음(버전관리 + MFA Delete 를 조합하면 삭제 방지가 더 강력함)
  • 객체를 하나의 파일이 아닌 여러 버전으로 보존 할 수 있음
  • 버전관리 기능을 사용하려면 해당 기능을 활성화 해야 함

Glacier 이용

지정 기간 후에 제거

지정 기간 후에 Glicier에 아카이브

Glacier에 아카이브하고 일정 기간 후에 제거

암호화

  • 데이터를 전송 중에 그리고 스토리지에 저장된 동안 보호하기 위해 암호화 사용

서버측 암호화

SSE-S3

  • S3 에서 관리하는 암호화

SSE-KMS

  • KMS( 키 관리 서버)에서 관리하는 암호화
  • 관리 서버를 이용하므로 키를 자동 교체하거나 감사기능을 지원 가능

SSE-C

  • 고객 사용자가 관리하는 암호화
  • 전송 시 반드시 HTTPS를 사용해야 함

클라이언트 측 암호화

  • 데이터를 전송하기 전에 클라이언트 사이드에서 암호화

S3접근 관리

퍼블릭 액세스 차단(버킷 설정)

  • 버킷과 객체에 대한 퍼블릭 액세스를 차단하거나 허용
  • 데이터 보호를 위해 기본적으로 퍼블릭 액세스를 차단 / Signed url로는 퍼블릭 액세스 접근 가능

버킷 정책

  • JSON 형식
  • 조건에 따라 버킷에 액세스를 부여하고 제한

Ex) 특정 AWS 리소스에서만 S3 버킷에 액세스 허용

Ex) 다른 AWS 계정에 버킷 액세스 권한 부여 가능(교차 계정 액세스)

// 암호화하지 않으면(true) 모든리소스로부터 업로드 거부
{
    "Version": "2012-10-17",
    "Id": "Policy1643192361886",
    "Statement": [
        {
            "Sid": "Stmt1643192358371",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
            "Condition": {
                "Null": {
                    "s3:x-amz-server-side-encryption": "true"
                }
            }
        }
    ]
}

ACL(액세스 제어 목록)

  • 버킷 레벨에서 ACL을 적용하거나 객체 레벨에서 ACL 적용 가능

S3정적 웹사이트 호스팅

  • 퍼블릭 액세스 모두 허용 후 아래와 같은 정책 적용하면 정상적으로 접근 가능
{
  "Id": "Policy1643193045514",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1643193044002",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
      "Principal": "*"
    }
  ]
}

CORS(Cross-Origin Resource Sharing)

Access Logs

  • S3 버킷의 모든 활동 (접속, 읽기, 쓰기, 변경 등)을 파일로 만들어 S3 버킷이 저장하는 기능
  • 감사 목적으로 활용 가능
  • 로그 분석을 위해 Amazon Athena같은 분석 도구를 사용 가능
  • 절대로 로그 파일 저장소를 같은 버킷에 하지 말것! (무한루프로 인해 로그파일 지속적 증가)

S3 Replication(복제 규칙)

  • S3 버킷 간에 객체를 자동으로 복제하는 기능(활성화 이후에 변경된 파일만 자동으로 복제)
  • 버킷 복제를 위해서는 원본과 대상 버킷 모두 버전관리가 활성화 되어 있어야 함

교차 리전 복제 (CRR, Cross Region Relication)

  • 서로 다른 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 지리적으로 가까운 액세스가 필요한 경우, 재해복구(DR)

동일 리전 복제 (SRR, Same Region Relication)

  • 같은 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 동일한 데이터를 사용하는 프로덕션과 테스트계정 간의 복제, 법적 준수사항으로 같은 리전안에 데이터 복사본을 만들어 놓아야 하는 경우

S3 스토리지 클래스

객체 수명주기 관리(Lifecycle Policy)

  • 객체가 저장되어 삭제될 때까지의 수명주기를 비용효율적으로 저장되도록 관리하는 기능
  • S3 Standard —30days—> S3 Standard-Ia —60days—> Glacier —365days—> 삭제

이벤트 알림

  • S3 의 이벤트가 발생할 때마다 알리는 기능
  • 이벤트는 객체의 생성 , 복제 복원 등이 있음
  • 생성된 이벤트 알림을 Amazon SNS, Amazon SQS, AWS Lambda 로 보낼 수 있음
  • 예를 들어 객체가 삭제될 때 마다 S3 에서 Amazon SNS 로 이벤트 알림을 보내 사용자의 이메일로 전송

전송 가속화

  • S3 버킷의 객체를 사용자에게 더 빠르게 전송해 주는 기능
  • AWS 의 엣지로케이션을 활용해서 S3 데이터를 사용자와 가까운 곳에 캐싱하여 전송

객체 잠금

  • Object Lock( 객체 잠금 ), Glacier Vault (글라시아 아카이브 잠금 ) 2 가지 잠금이 있음
  • 일정시간 또는 무기한으로 객체가 삭제되거나 덮어쓰이지 않도록 하는 기능으로 읽기만 가능
  • 법적인 보존기간이 있는 객체의 경우에 사용

요청자 지불 버킷

  • 일반적으로 버킷에 데이터를 다운로드 하거나 업로드 할 때 비용은 버킷 소유자가 지불
  • 데이터 전송비용을 버킷 소유자가 아닌 요청자 데이터를 다운로드 업로드 하는 사람 이 지불하는 기능

개요

  • 무제한 저장용량을 제공하는 스토리지 서비스
  • 최소 3 개의 가용영역에 데이터를 자동 분산 저장하기에 성능 , 확장성 , 가용성 , 내구성이 높음
  • 대표적 사용사례 : 백업 및 복원 , 재해 복구 (DR), 아카이브 , 클라우드 스토리지 , 정적 웹사이트 호스팅

버킷

  • 파일 저장 공간(= 디렉터리)
  • 버킷은 리전단위로 생성
  • 버킷이름은 유니크해야 함(다른 AWS 사용자와 중복되지 않아야 함)

객체

  • 파일
  • 개별 파일 업로드 사이즈는 최대 5TB 허용

백업

버전 관리

  • 객체 파일이 여러 버전을 가질 수 있음
  • 동일한 파일이름을 업로드 하면 여러 버전으로 저장됨 예 버전 1, 버전 2…
  • 실수로 객체를 덮어쓰거나 삭제한 경우 이전 버전으로 복구 가능
    • 삭제 후 “버전 표시”를 체크하면 마커되어 있음(실제로 삭제X)
  • 실수로 객체를 삭제 하는 것을 방지하기 위해 MFA Delete 옵션을 추가할 수 있음(버전관리 + MFA Delete 를 조합하면 삭제 방지가 더 강력함)
  • 객체를 하나의 파일이 아닌 여러 버전으로 보존 할 수 있음
  • 버전관리 기능을 사용하려면 해당 기능을 활성화 해야 함

Glacier 이용

지정 기간 후에 제거

지정 기간 후에 Glicier에 아카이브

Glacier에 아카이브하고 일정 기간 후에 제거

암호화

  • 데이터를 전송 중에 그리고 스토리지에 저장된 동안 보호하기 위해 암호화 사용

서버측 암호화

SSE-S3

  • S3 에서 관리하는 암호화

SSE-KMS

  • KMS( 키 관리 서버)에서 관리하는 암호화
  • 관리 서버를 이용하므로 키를 자동 교체하거나 감사기능을 지원 가능

SSE-C

  • 고객 사용자가 관리하는 암호화
  • 전송 시 반드시 HTTPS를 사용해야 함

클라이언트 측 암호화

  • 데이터를 전송하기 전에 클라이언트 사이드에서 암호화

S3접근 관리

퍼블릭 액세스 차단(버킷 설정)

  • 버킷과 객체에 대한 퍼블릭 액세스를 차단하거나 허용
  • 데이터 보호를 위해 기본적으로 퍼블릭 액세스를 차단 / Signed url로는 퍼블릭 액세스 접근 가능

버킷 정책

  • JSON 형식
  • 조건에 따라 버킷에 액세스를 부여하고 제한

Ex) 특정 AWS 리소스에서만 S3 버킷에 액세스 허용

Ex) 다른 AWS 계정에 버킷 액세스 권한 부여 가능(교차 계정 액세스)

// 암호화하지 않으면(true) 모든리소스로부터 업로드 거부
{
    "Version": "2012-10-17",
    "Id": "Policy1643192361886",
    "Statement": [
        {
            "Sid": "Stmt1643192358371",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
            "Condition": {
                "Null": {
                    "s3:x-amz-server-side-encryption": "true"
                }
            }
        }
    ]
}

ACL(액세스 제어 목록)

  • 버킷 레벨에서 ACL을 적용하거나 객체 레벨에서 ACL 적용 가능

S3정적 웹사이트 호스팅

  • 퍼블릭 액세스 모두 허용 후 아래와 같은 정책 적용하면 정상적으로 접근 가능
{
  "Id": "Policy1643193045514",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1643193044002",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
      "Principal": "*"
    }
  ]
}

CORS(Cross-Origin Resource Sharing)

Access Logs

  • S3 버킷의 모든 활동 (접속, 읽기, 쓰기, 변경 등)을 파일로 만들어 S3 버킷이 저장하는 기능
  • 감사 목적으로 활용 가능
  • 로그 분석을 위해 Amazon Athena같은 분석 도구를 사용 가능
  • 절대로 로그 파일 저장소를 같은 버킷에 하지 말것! (무한루프로 인해 로그파일 지속적 증가)

S3 Replication(복제 규칙)

  • S3 버킷 간에 객체를 자동으로 복제하는 기능(활성화 이후에 변경된 파일만 자동으로 복제)
  • 버킷 복제를 위해서는 원본과 대상 버킷 모두 버전관리가 활성화 되어 있어야 함

교차 리전 복제 (CRR, Cross Region Relication)

  • 서로 다른 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 지리적으로 가까운 액세스가 필요한 경우, 재해복구(DR)

동일 리전 복제 (SRR, Same Region Relication)

  • 같은 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 동일한 데이터를 사용하는 프로덕션과 테스트계정 간의 복제, 법적 준수사항으로 같은 리전안에 데이터 복사본을 만들어 놓아야 하는 경우

S3 스토리지 클래스

객체 수명주기 관리(Lifecycle Policy)

  • 객체가 저장되어 삭제될 때까지의 수명주기를 비용효율적으로 저장되도록 관리하는 기능
  • S3 Standard —30days—> S3 Standard-Ia —60days—> Glacier —365days—> 삭제

이벤트 알림

  • S3 의 이벤트가 발생할 때마다 알리는 기능
  • 이벤트는 객체의 생성 , 복제 복원 등이 있음
  • 생성된 이벤트 알림을 Amazon SNS, Amazon SQS, AWS Lambda 로 보낼 수 있음
  • 예를 들어 객체가 삭제될 때 마다 S3 에서 Amazon SNS 로 이벤트 알림을 보내 사용자의 이메일로 전송

전송 가속화

  • S3 버킷의 객체를 사용자에게 더 빠르게 전송해 주는 기능
  • AWS 의 엣지로케이션을 활용해서 S3 데이터를 사용자와 가까운 곳에 캐싱하여 전송

객체 잠금

  • Object Lock( 객체 잠금 ), Glacier Vault (글라시아 아카이브 잠금 ) 2 가지 잠금이 있음
  • 일정시간 또는 무기한으로 객체가 삭제되거나 덮어쓰이지 않도록 하는 기능으로 읽기만 가능
  • 법적인 보존기간이 있는 객체의 경우에 사용

요청자 지불 버킷

  • 일반적으로 버킷에 데이터를 다운로드 하거나 업로드 할 때 비용은 버킷 소유자가 지불
  • 데이터 전송비용을 버킷 소유자가 아닌 요청자 데이터를 다운로드 업로드 하는 사람 이 지불하는 기능

개요

  • 무제한 저장용량을 제공하는 스토리지 서비스
  • 최소 3 개의 가용영역에 데이터를 자동 분산 저장하기에 성능 , 확장성 , 가용성 , 내구성이 높음
  • 대표적 사용사례 : 백업 및 복원 , 재해 복구 (DR), 아카이브 , 클라우드 스토리지 , 정적 웹사이트 호스팅

버킷

  • 파일 저장 공간(= 디렉터리)
  • 버킷은 리전단위로 생성
  • 버킷이름은 유니크해야 함(다른 AWS 사용자와 중복되지 않아야 함)

객체

  • 파일
  • 개별 파일 업로드 사이즈는 최대 5TB 허용

백업

버전 관리

  • 객체 파일이 여러 버전을 가질 수 있음
  • 동일한 파일이름을 업로드 하면 여러 버전으로 저장됨 예 버전 1, 버전 2…
  • 실수로 객체를 덮어쓰거나 삭제한 경우 이전 버전으로 복구 가능
    • 삭제 후 “버전 표시”를 체크하면 마커되어 있음(실제로 삭제X)
  • 실수로 객체를 삭제 하는 것을 방지하기 위해 MFA Delete 옵션을 추가할 수 있음(버전관리 + MFA Delete 를 조합하면 삭제 방지가 더 강력함)
  • 객체를 하나의 파일이 아닌 여러 버전으로 보존 할 수 있음
  • 버전관리 기능을 사용하려면 해당 기능을 활성화 해야 함

Glacier 이용

지정 기간 후에 제거

지정 기간 후에 Glicier에 아카이브

Glacier에 아카이브하고 일정 기간 후에 제거

암호화

  • 데이터를 전송 중에 그리고 스토리지에 저장된 동안 보호하기 위해 암호화 사용

서버측 암호화

SSE-S3

  • S3 에서 관리하는 암호화

SSE-KMS

  • KMS( 키 관리 서버)에서 관리하는 암호화
  • 관리 서버를 이용하므로 키를 자동 교체하거나 감사기능을 지원 가능

SSE-C

  • 고객 사용자가 관리하는 암호화
  • 전송 시 반드시 HTTPS를 사용해야 함

클라이언트 측 암호화

  • 데이터를 전송하기 전에 클라이언트 사이드에서 암호화

S3접근 관리

퍼블릭 액세스 차단(버킷 설정)

  • 버킷과 객체에 대한 퍼블릭 액세스를 차단하거나 허용
  • 데이터 보호를 위해 기본적으로 퍼블릭 액세스를 차단 / Signed url로는 퍼블릭 액세스 접근 가능

버킷 정책

  • JSON 형식
  • 조건에 따라 버킷에 액세스를 부여하고 제한

Ex) 특정 AWS 리소스에서만 S3 버킷에 액세스 허용

Ex) 다른 AWS 계정에 버킷 액세스 권한 부여 가능(교차 계정 액세스)

// 암호화하지 않으면(true) 모든리소스로부터 업로드 거부
{
    "Version": "2012-10-17",
    "Id": "Policy1643192361886",
    "Statement": [
        {
            "Sid": "Stmt1643192358371",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
            "Condition": {
                "Null": {
                    "s3:x-amz-server-side-encryption": "true"
                }
            }
        }
    ]
}

ACL(액세스 제어 목록)

  • 버킷 레벨에서 ACL을 적용하거나 객체 레벨에서 ACL 적용 가능

S3정적 웹사이트 호스팅

  • 퍼블릭 액세스 모두 허용 후 아래와 같은 정책 적용하면 정상적으로 접근 가능
{
  "Id": "Policy1643193045514",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1643193044002",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
      "Principal": "*"
    }
  ]
}

CORS(Cross-Origin Resource Sharing)

Access Logs

  • S3 버킷의 모든 활동 (접속, 읽기, 쓰기, 변경 등)을 파일로 만들어 S3 버킷이 저장하는 기능
  • 감사 목적으로 활용 가능
  • 로그 분석을 위해 Amazon Athena같은 분석 도구를 사용 가능
  • 절대로 로그 파일 저장소를 같은 버킷에 하지 말것! (무한루프로 인해 로그파일 지속적 증가)

S3 Replication(복제 규칙)

  • S3 버킷 간에 객체를 자동으로 복제하는 기능(활성화 이후에 변경된 파일만 자동으로 복제)
  • 버킷 복제를 위해서는 원본과 대상 버킷 모두 버전관리가 활성화 되어 있어야 함

교차 리전 복제 (CRR, Cross Region Relication)

  • 서로 다른 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 지리적으로 가까운 액세스가 필요한 경우, 재해복구(DR)

동일 리전 복제 (SRR, Same Region Relication)

  • 같은 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 동일한 데이터를 사용하는 프로덕션과 테스트계정 간의 복제, 법적 준수사항으로 같은 리전안에 데이터 복사본을 만들어 놓아야 하는 경우

S3 스토리지 클래스

객체 수명주기 관리(Lifecycle Policy)

  • 객체가 저장되어 삭제될 때까지의 수명주기를 비용효율적으로 저장되도록 관리하는 기능
  • S3 Standard —30days—> S3 Standard-Ia —60days—> Glacier —365days—> 삭제

이벤트 알림

  • S3 의 이벤트가 발생할 때마다 알리는 기능
  • 이벤트는 객체의 생성 , 복제 복원 등이 있음
  • 생성된 이벤트 알림을 Amazon SNS, Amazon SQS, AWS Lambda 로 보낼 수 있음
  • 예를 들어 객체가 삭제될 때 마다 S3 에서 Amazon SNS 로 이벤트 알림을 보내 사용자의 이메일로 전송

전송 가속화

  • S3 버킷의 객체를 사용자에게 더 빠르게 전송해 주는 기능
  • AWS 의 엣지로케이션을 활용해서 S3 데이터를 사용자와 가까운 곳에 캐싱하여 전송

객체 잠금

  • Object Lock( 객체 잠금 ), Glacier Vault (글라시아 아카이브 잠금 ) 2 가지 잠금이 있음
  • 일정시간 또는 무기한으로 객체가 삭제되거나 덮어쓰이지 않도록 하는 기능으로 읽기만 가능
  • 법적인 보존기간이 있는 객체의 경우에 사용

요청자 지불 버킷

  • 일반적으로 버킷에 데이터를 다운로드 하거나 업로드 할 때 비용은 버킷 소유자가 지불
  • 데이터 전송비용을 버킷 소유자가 아닌 요청자 데이터를 다운로드 업로드 하는 사람 이 지불하는 기능

개요

  • 무제한 저장용량을 제공하는 스토리지 서비스
  • 최소 3 개의 가용영역에 데이터를 자동 분산 저장하기에 성능 , 확장성 , 가용성 , 내구성이 높음
  • 대표적 사용사례 : 백업 및 복원 , 재해 복구 (DR), 아카이브 , 클라우드 스토리지 , 정적 웹사이트 호스팅

버킷

  • 파일 저장 공간(= 디렉터리)
  • 버킷은 리전단위로 생성
  • 버킷이름은 유니크해야 함(다른 AWS 사용자와 중복되지 않아야 함)

객체

  • 파일
  • 개별 파일 업로드 사이즈는 최대 5TB 허용

백업

버전 관리

  • 객체 파일이 여러 버전을 가질 수 있음
  • 동일한 파일이름을 업로드 하면 여러 버전으로 저장됨 예 버전 1, 버전 2…
  • 실수로 객체를 덮어쓰거나 삭제한 경우 이전 버전으로 복구 가능
    • 삭제 후 “버전 표시”를 체크하면 마커되어 있음(실제로 삭제X)
  • 실수로 객체를 삭제 하는 것을 방지하기 위해 MFA Delete 옵션을 추가할 수 있음(버전관리 + MFA Delete 를 조합하면 삭제 방지가 더 강력함)
  • 객체를 하나의 파일이 아닌 여러 버전으로 보존 할 수 있음
  • 버전관리 기능을 사용하려면 해당 기능을 활성화 해야 함

Glacier 이용

지정 기간 후에 제거

지정 기간 후에 Glicier에 아카이브

Glacier에 아카이브하고 일정 기간 후에 제거

암호화

  • 데이터를 전송 중에 그리고 스토리지에 저장된 동안 보호하기 위해 암호화 사용

서버측 암호화

SSE-S3

  • S3 에서 관리하는 암호화

SSE-KMS

  • KMS( 키 관리 서버)에서 관리하는 암호화
  • 관리 서버를 이용하므로 키를 자동 교체하거나 감사기능을 지원 가능

SSE-C

  • 고객 사용자가 관리하는 암호화
  • 전송 시 반드시 HTTPS를 사용해야 함

클라이언트 측 암호화

  • 데이터를 전송하기 전에 클라이언트 사이드에서 암호화

S3접근 관리

퍼블릭 액세스 차단(버킷 설정)

  • 버킷과 객체에 대한 퍼블릭 액세스를 차단하거나 허용
  • 데이터 보호를 위해 기본적으로 퍼블릭 액세스를 차단 / Signed url로는 퍼블릭 액세스 접근 가능

버킷 정책

  • JSON 형식
  • 조건에 따라 버킷에 액세스를 부여하고 제한

Ex) 특정 AWS 리소스에서만 S3 버킷에 액세스 허용

Ex) 다른 AWS 계정에 버킷 액세스 권한 부여 가능(교차 계정 액세스)

// 암호화하지 않으면(true) 모든리소스로부터 업로드 거부
{
    "Version": "2012-10-17",
    "Id": "Policy1643192361886",
    "Statement": [
        {
            "Sid": "Stmt1643192358371",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
            "Condition": {
                "Null": {
                    "s3:x-amz-server-side-encryption": "true"
                }
            }
        }
    ]
}

ACL(액세스 제어 목록)

  • 버킷 레벨에서 ACL을 적용하거나 객체 레벨에서 ACL 적용 가능

S3정적 웹사이트 호스팅

  • 퍼블릭 액세스 모두 허용 후 아래와 같은 정책 적용하면 정상적으로 접근 가능
{
  "Id": "Policy1643193045514",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1643193044002",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::hbeen-s3-bucket-v1/*",
      "Principal": "*"
    }
  ]
}

CORS(Cross-Origin Resource Sharing)

Access Logs

  • S3 버킷의 모든 활동 (접속, 읽기, 쓰기, 변경 등)을 파일로 만들어 S3 버킷이 저장하는 기능
  • 감사 목적으로 활용 가능
  • 로그 분석을 위해 Amazon Athena같은 분석 도구를 사용 가능
  • 절대로 로그 파일 저장소를 같은 버킷에 하지 말것! (무한루프로 인해 로그파일 지속적 증가)

S3 Replication(복제 규칙)

  • S3 버킷 간에 객체를 자동으로 복제하는 기능(활성화 이후에 변경된 파일만 자동으로 복제)
  • 버킷 복제를 위해서는 원본과 대상 버킷 모두 버전관리가 활성화 되어 있어야 함

교차 리전 복제 (CRR, Cross Region Relication)

  • 서로 다른 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 지리적으로 가까운 액세스가 필요한 경우, 재해복구(DR)

동일 리전 복제 (SRR, Same Region Relication)

  • 같은 AWS 리전의 S3 버킷으로 객체를 복사
  • 사용사례 : 동일한 데이터를 사용하는 프로덕션과 테스트계정 간의 복제, 법적 준수사항으로 같은 리전안에 데이터 복사본을 만들어 놓아야 하는 경우

S3 스토리지 클래스

객체 수명주기 관리(Lifecycle Policy)

  • 객체가 저장되어 삭제될 때까지의 수명주기를 비용효율적으로 저장되도록 관리하는 기능
  • S3 Standard —30days—> S3 Standard-Ia —60days—> Glacier —365days—> 삭제

이벤트 알림

  • S3 의 이벤트가 발생할 때마다 알리는 기능
  • 이벤트는 객체의 생성 , 복제 복원 등이 있음
  • 생성된 이벤트 알림을 Amazon SNS, Amazon SQS, AWS Lambda 로 보낼 수 있음
  • 예를 들어 객체가 삭제될 때 마다 S3 에서 Amazon SNS 로 이벤트 알림을 보내 사용자의 이메일로 전송

전송 가속화

  • S3 버킷의 객체를 사용자에게 더 빠르게 전송해 주는 기능
  • AWS 의 엣지로케이션을 활용해서 S3 데이터를 사용자와 가까운 곳에 캐싱하여 전송

객체 잠금

  • Object Lock( 객체 잠금 ), Glacier Vault (글라시아 아카이브 잠금 ) 2 가지 잠금이 있음
  • 일정시간 또는 무기한으로 객체가 삭제되거나 덮어쓰이지 않도록 하는 기능으로 읽기만 가능
  • 법적인 보존기간이 있는 객체의 경우에 사용

요청자 지불 버킷

  • 일반적으로 버킷에 데이터를 다운로드 하거나 업로드 할 때 비용은 버킷 소유자가 지불
  • 데이터 전송비용을 버킷 소유자가 아닌 요청자 데이터를 다운로드 업로드 하는 사람 이 지불하는 기능