퍼블릭 클라우드(AWS)

[AWS] Public/Private S3(Simple Storage Service) 스토리지 구성

JooRi 2025. 11. 19. 17:02
728x90
반응형
SMALL

2023.11.22 - [퍼블릭 클라우드(AWS)] - [AWS] S3 - 파일 업로드, AWS CLI로 백업, 백업 자동화

 

[AWS] S3 - 파일 업로드, AWS CLI로 백업, 백업 자동화

* Amazon S3(Simple Storage Services)Amazon S3은 무한대로 저장 가능하고 사용한 만큼만 지불하는 스토리지 서비스이다.버킷(Bucket)이라는 리전에서 영역을 생성하고 데이터를 키값 형식의 객체(Object)로 저

djjin02.tistory.com

 

 

* S3(Simple Storage Service)란 무엇인가

Amazon S3는 EC2와 더불어 가장 오래되고, 기본이 되는 객체 스토리지 서비스이다.

S3에 저장되는 데이터를 객체라고 하며, 이 객체 저장소를 버킷(Bucket)이라고 한다.

객체에 대한 입출력은 HTTP 프로토콜로 하며, REST API를 이용하여 명령이 전달된다.

 

S3의 가장 큰 특징은 높은 내구성이며, 데이터 손실을 최소화하도록 규정되어 있다.

또한 데이터 저장 공간이 거의 무제한에 가까워 특별한 용량 제한 없이 데이터를 저장할 수 있다.

 

S3의 객체는 기본적으로 웹 접속이 가능하기 때문에 간단한 정적 웹 콘텐츠를 S3에 올려 웹 서버의 도움 없이 바로 웹 서비스가 가능하다.

 

그리고 S3는 보안 규정 준수 및 감시 기능을 제공하고 있어 데이터가 안전하게 저장되고 인증된 사용자만 접근할 수 있도록 구성한다. 필요한 경우 접근 권한 정책을 이용하여 해당 객체의 접근을 제어할 수 있다.

 

S3 스토리지 클래스

 

 


 

 

1. Public S3 스토리지로 외부 접근

S3는 객체 스토리지 서비스로, 설정에 따라 OS 없이 자체적인 웹 서버로 사용되거나 API 방식을 이용한 데이터 백업 및 공유를 할 수 있다.

공개된 S3 스토리지를 만들고 외부에서 접근을 이용한 정적 웹 서버로 사용되는 환경을 만들어 보았다.

 

[버킷 만들기]

 

 

버킷 이름 지정, [ACL 활성화됨] 체크, [모든 퍼블릭 액세스 차단] 체크 해제하고 [버킷 만들기]

 

 

생성된 버킷을 선택한 후 [업로드]

 

 

[파일 추가]를 누르고 이미지 파일을 업로드한다.

 

 

업로드된 파일을 선택하면 객체 URL을 확인할 수 있다.

 

 

웹 브라우저에서 객체 URL에 접속하면 이미지가 표시되지 않는다.

버킷에 업로드된 파일은 기본적으로 외부에서 접근하는 것이 차단되어 있다.

 

 

외부에서 접근하기 위해 [객체 작업] - [ACL을 사용하여 퍼블릭으로 설정] - [퍼블릭으로 설정]

 

 

퍼블릭으로 설정한 후 다시 URL에 접속하면 이미지가 보이는 것을 확인할 수 있다.

 

 

인스턴스 터미널에 접속하여 웹 접근을 할 때 S3 스토리지에 업로드된 파일을 사용하도록 웹서버의 index.html 파일을 위처럼 설정한다.

 

 

정상 동작한다.

 

 

이제 객체마다 추가 설정 없어도 외부에서 접근하면 자동으로 사용할 수 있도록 설정하겠다.

앞서 생성한 버킷을 생성하고 [권한]-[편집]을 누른 후, 

 

 

{
    "Version": "2012-10-17",
    "Statement": [
        {
        "Sid": "PublicReadGetObject",
        "Effect": "Allow",
        "Principal": "*",
        "Action": [
            "s3:GetObject"
            ],
        "Resource": [
            "arn:aws:s3:::kjr-cloudneta/*"
            ]
        }
    ]
}

위 정책을 추가하고 저장한다.

 

 

새 객체 파일을 업로드하고, 객체 URL에 접속해 보면 이번엔 바로 접속되는 것을 확인할 수 있다.

 

 

2. Private S3 스토리지의 제한된 접근 및 데이터 백업

이번엔 S3 스토리지를 관리 콘솔이 아닌 AWS CLI에서 만들어 VPC 내부에서만 접근해서 사용할 수 있도록 Private S3를 구성해 보겠다.

 

기존 S3 조회

 

 

버킷 이름을 작성하여 S3 버킷 생성

 

 

버킷이 생성된 것을 확인

 

 

버킷 이름을 변수에 지정하고(MyS3=버킷),

echo 명령으로 파일 생성 후 S3에 업로드하고,

웹 디렉터리를 S3 버킷에 업로드하고 확인한다.

 

코드를 입력하여 파일을 업로드한 후 버킷을 조회하고 로그를 확인한다.

 

# crontab 내용 추가

cat <> letc/crontab

*/1 * * * * root aws 53 sync --delete /var/www/html s3://$MyS3

EOF

 

# crontab 내용 확인

cat letc/crontab

 

# 적용 및 추가 따일 생성

systemctl restart crond

echo "222" > /var/www/html/222.txt

echo "333" > /var/www/html/333.txt

 

# While문으로 실시간 버킷 조회 후 tail 명령으로 로그 확인

 

 

CLI에서 생성한 파일 확인

 

 

생성된 Private S3 버킷은 일반적으로 외부 접근이 불가능하지만 Pre-sign URL 기능을 이용하여 특정한 사용자에게 제한된 시간 동안 외부 접근을 허용할 수 있다.

 

# 테스트 파일 생성 후 S3에 업로드

echo "presigned test " > /var/www/html/presigned.txt

aws s3 cp /var/www/html/presigned.txt s3://$MyS3

 

# 잭체 URL로 직접 접근은 불가하나 Pre-sign URL 생성

aws s3 presign s3://$MyS3/presi gned.txt --expires-in 120

 

끝...

728x90
반응형
LIST