AWS로 개발하기 - 스토리지 (S3)

joong·2022년 8월 12일
2

AWS에서 개발하기

목록 보기
4/6

💡 Amazon S3란?

  • S3란 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스이다
    • 콘텐츠 저장 및 배포
    • 정적 웹 사이트 호스팅
    • 재해 복구
    • 백업 및 아카이빙
    • 빅 데이터 분석

💬 자세한 내용은 아래 게시물을 확인해주세요!
▶️ S3 자세히 살펴보기

✔️ Python으로 S3 버킷 만들기

import boto3
s3 = boto3.client(    
	's3',  
    aws_access_key_id='<AWS_ACCESS_KEY_ID>',  # 액세스 키   
    aws_secret_access_key='<AWS_ACCESS_KEY_ID>')  # 비밀 엑세스 키
s3.create_bucket(            
	Bucket='my-bucket-name-fsoftwareengineer'
    )

▶️ Boto3 Docs


⏰ Amazon S3 이벤트 알림

📌 새로운 객체 생성, 객체 삭제/복원/복제 등 특정 이벤트 발생 시 알림을 받을 수 있다.

▶️ Amazon SNS (Amazon Simple Notification Service) 주제

▶️ Amazon SQS (Amazon Simple Queue Service) 대기열

▶️ AWS Lambda 함수

✔️ Schedule Lambda 기능

💬 AWS 공식 문서에 설명이 매우 잘되어있다!
▶️ Amazon S3 버킷 정책


⚙️ Amazon S3 액세스 제어

📌 기본적으로 Amazon S3 버킷 설정은 버킷 및 해당 객체에 대한 퍼블릭 액세스를 차단하지만,
Amazon S3 버킷 및 객체에 대한 액세스를 조정할 수 있다.

▶️ IAM 정책

  • 자격 증명(사용자 기반) 정책으로 사용자, 그룹 및 역할에 연결
  • 사용자, 그룹 및 역할이 버킷 및 객체에 대해 갖는 액세스 권한을 정의

▶️ 액세스 제어 목록 (ACL)

  • 레거시 리소스 기반 정책으로 S# 버킷 또는 객체에 연결된다.

▶️ 버킷 정책

  • S3 버킷에 연결되며, 버킷 및 콘텐츠에 대한 퍼블릭 또는 익명 액세스 권한을 부여할 수 있다.

✔️ S3 버킷 정책 예제

익명 사용자에게 읽기 전용 권한을 부여하는 예제

{
   "Version": "2012-10-17",
   "Statement": [
    {
      "Effect": " Allow", # Allow/Deny
      "Action": [         # 각 리소스에서 허용/거부 되는 작업
         "s3:GetObject",
         "s3:GetObjectVersion"
       ],
      "Resource": "arn:aws:s3:::notes-bucket/*", # 권한을 허용/거부할 리소스
      "Principal": "*" # 정책이 적용되는 사용자
    }
  ]
}

▶️ Amazon S3 버킷 정책


🖥️ Amazon S3 CLI

▶️ 하위 수준 명령(s3api)

  • Amazon S3 API와 일대일 매핑
  • 세부 수준 제어
> copy-object
> create-multipart-upload
> complete-multipart-upload
> abort-multipart-upload

▶️ 상위 수준 명령(s3)

  • 여러 번의 s3api 호출이 발생할 수 있음
  • 더 빠르지만 관리할 부분이 적음
> cp
> sync

→ 상위 수준 명령과 하위 수준 명령을 서로 바꾸어 사용할 수 있다


✔️ AWS SDK 사용해서 Amazon S3에서 작업하기

  1. SDK에 대한 Amazon S3 설정 구성
  2. 종속성 정의
  3. S3 클라이언트를 생성하여 서비스 요청 수행
  4. 작업 수행

1. 서비스 구성

AWS 서비스와 APi가 상호 작용하기 위해서는 AWS SDK 및 AWS CLI가 요청된 작업을 수행하기 위한 정보가 필요하다.

  • 구성 세부 정보
    • 사용된 API 버전
    • 요청의 기본 리전
    • 응답 형식
    • 서비스별 설정
  • 보안 인증정보
    • 사용자가 누구이며, AWS 리소스 액세스권한 여부 확인
  • 보안 인증공급자
    • 다양한 방법을 사용해 보안 인증 및 구성 정보 제공

2. 종속성 정의

SDK는 서비스의 종속성을 구성해야한다.
각 AWS 서비스에는 서비스 API는 각 작업에 대한 메서드와 서비스 인터페이스가 있다.

  • Python: 모든 서비스 설명하는 Boto3로 종속성 정의
  • .NET 및 JAVA : 애플리케이션에 필요한 특정 서비스 패키지 및 메서드만 정의

3. S3 클라이언트를 생성하여 서비스 요청 보내기

✔️ S3 클라이언트 구성 및 생성 예제 (python)

import boto3
# 세션 객체가 프로파일의 보안 인증 정보에서 생성
session=boto3.session.Session(profile_name='staging')
current_region = session.region_name
# S3 리소스를 생성하고 버킷의 이름을 설정
s3resource = boto3.resource('s3')
bucket = resource.Bucket('notes--bucket')
# 프로파일에 지정된 대로 버킷을 생성
bucket.create(CreateBucketConfiguration={
	'LocationConstraint': current_region
    }
)

이 예제에서는 특정 프로파일 구성 정보가 클라이언트 생성 시 파라미터로 전달된다.
세션은 구성 상태를 저장하는 객체로, 이 정보를 가져와 클라이언트를 생성 할 수 있다.

4. 작업 수행

0개의 댓글