버킷 및 데이터를 관리하는 예제가 포함된 9개의 AWS S3 명령

데이터를 제어하고 관리하는 일은 복잡할 수 있습니다. 하지만 AWS S3 명령어를 활용하면 AWS S3 버킷과 데이터를 보다 빠르고 효율적으로 관리할 수 있습니다.

AWS S3는 AWS에서 제공하는 객체 스토리지 서비스입니다. 거의 무한한 양의 데이터를 저장할 수 있는 이 서비스는 AWS에서 가장 많이 사용되는 스토리지 솔루션 중 하나입니다. 높은 가용성과 내구성을 자랑하며, 다양한 AWS 서비스와 쉽게 통합됩니다.

AWS S3는 모바일 및 웹 애플리케이션 스토리지, 빅 데이터 저장, 머신러닝 데이터 저장, 정적 웹사이트 호스팅 등 다양한 요구 사항을 충족하는 데 활용될 수 있습니다.

만약 프로젝트에서 S3를 사용해 본 경험이 있다면, 방대한 스토리지 용량으로 인해 100개가 넘는 버킷과 테라바이트 단위의 데이터를 관리하는 것이 얼마나 어려운 일인지 잘 알 것입니다. 다음은 AWS S3 버킷과 데이터를 효율적으로 관리하는 데 사용할 수 있는 AWS S3 명령어 목록과 예시입니다.

AWS CLI 설정

AWS CLI를 성공적으로 다운로드하고 설치했다면, 이제 AWS 계정과 서비스에 액세스할 수 있도록 AWS 자격 증명을 설정해야 합니다. AWS CLI 구성 방법을 간략히 살펴보겠습니다.

첫 번째 단계는 AWS 계정에 프로그래밍 방식으로 접근할 수 있는 사용자를 생성하는 것입니다. AWS CLI용 사용자를 만들 때는 반드시 이 체크박스를 선택해야 합니다.

권한을 부여하고 사용자를 생성한 후, 마지막 화면에서 해당 사용자의 액세스 키 ID와 보안 액세스 키를 복사합니다. 이 자격 증명을 사용하여 AWS CLI를 통해 로그인하게 됩니다.

이제 원하는 터미널로 이동하여 다음 명령어를 실행합니다.

aws configure 

메시지가 표시되면 액세스 키 ID와 보안 액세스 키를 입력합니다. 원하는 AWS 리전과 명령 출력 형식을 선택합니다. 개인적으로 JSON 형식을 선호하지만, 이 값은 나중에 언제든지 변경할 수 있습니다.

이제 콘솔에서 모든 AWS CLI 명령어를 실행할 수 있습니다. AWS S3 명령어를 자세히 살펴보겠습니다.

cp

cp 명령어는 S3 버킷과 데이터를 복사하는 데 사용됩니다. 로컬에서 S3로, S3에서 로컬로, 또는 두 S3 버킷 간에 파일을 복사할 수 있습니다. 명령어와 함께 다양한 매개변수를 사용할 수 있습니다.

예를 들어, 명령어를 테스트하기 위한 --dryrun 매개변수, S3 데이터의 스토리지 클래스를 지정하기 위한 --storage-class 매개변수, 암호화를 설정하기 위한 다른 매개변수 등이 있습니다. cp 명령어를 사용하면 S3 데이터 보안을 완벽하게 제어할 수 있습니다.

사용법

aws s3 cp <SOURCE> <DESTINATION> [--options]

예시

로컬에서 S3로 데이터 복사

aws s3 cp file_name.txt s3://bucket_name/file_name_2.txt

S3에서 로컬로 데이터 복사

aws s3 cp s3://bucket_name/file_name_2.txt file_name.txt

S3 버킷 간에 데이터 복사

aws s3 cp s3://bucket_name/file_name.txt s3://bucket_name_2/file_name_2.txt

로컬에서 S3로 데이터 복사 – IA

aws s3 cp file_name.txt s3://bucket_name/file_name_2.txt --storage-class STANDARD_IA

로컬 폴더의 모든 데이터를 S3로 복사

aws s3 cp ./local_folder s3://bucket_name --recursive

ls

ls 명령어는 버킷 또는 버킷의 내용을 나열하는 데 사용됩니다. 간단히 버킷 정보를 확인하거나 버킷 내 데이터를 볼 때 유용합니다.

사용법:

aws s3 ls NONE or <BUCKET_NAME> [--options]

예시

계정의 모든 버킷 나열

aws s3 ls

Output:
2022-02-02 18:20:14 BUCKET_NAME_1
2022-03-20 13:12:43 BUCKET_NAME_2
2022-03-29 10:52:33 BUCKET_NAME_3

이 명령어는 버킷 생성 날짜와 함께 계정의 모든 버킷을 보여줍니다.

버킷의 모든 최상위 객체 나열

aws s3 ls BUCKET_NAME_1 or s3://BUCKET_NAME_1

Output:
                           PRE samplePrefix/
2021-12-09 12:23:20       8754 file_1.png
2021-12-09 12:23:21       1290 file_2.json
2021-12-09 12:23:21       3088 file_3.html

이 명령어는 S3 버킷의 모든 최상위 객체를 나열합니다. samplePrefix/ 접두사가 있는 객체는 최상위 객체에만 표시되지 않습니다.

버킷의 모든 객체 나열

aws s3 ls BUCKET_NAME_1 or s3://BUCKET_NAME_1 --recursive

Output:
2021-12-09 12:23:20       8754 file_1.png
2021-12-09 12:23:21       1290 file_2.json
2021-12-09 12:23:21       3088 file_3.html
2021-12-09 12:23:20      16328 samplePrefix/file_1.txt
2021-12-09 12:23:20      29325 samplePrefix/sampleSubPrefix/file_1.css

이 명령어는 S3 버킷의 모든 객체를 보여줍니다. samplePrefix/ 접두사와 모든 하위 접두사가 있는 객체도 표시됩니다.

mb

mb 명령어는 새로운 S3 버킷을 생성하는 데 사용됩니다. 간단한 명령어이지만, 새로운 버킷 이름은 모든 S3 버킷에서 고유해야 합니다.

사용법

aws s3 mb <BUCKET_NAME>

예시

특정 리전에서 새 버킷 생성

aws s3 mb myUniqueBucketName --region eu-west-1

mv

mv 명령어는 S3 버킷에서 데이터를 이동하는 데 사용됩니다. cp 명령어와 마찬가지로, mv 명령어는 로컬에서 S3로, S3에서 로컬로, 또는 두 S3 버킷 간에 데이터를 이동할 수 있습니다.

mvcp 명령어의 유일한 차이점은 mv 명령어를 사용할 때 소스 파일이 삭제된다는 것입니다. AWS는 파일을 대상으로 이동시킵니다. 명령어에 지정할 수 있는 다양한 옵션이 있습니다.

사용법

aws s3 mv <SOURCE> <DESTINATION> [--options]

예시

로컬에서 S3로 데이터 이동

aws s3 mv file_name.txt s3://bucket_name/file_name_2.txt

S3에서 로컬로 데이터 이동

aws s3 mv s3://bucket_name/file_name_2.txt file_name.txt

S3 버킷 간에 데이터 이동

aws s3 mv s3://bucket_name/file_name.txt s3://bucket_name_2/file_name_2.txt

로컬에서 S3로 데이터 이동 – IA

aws s3 mv file_name.txt s3://bucket_name/file_name_2.txt --storage-class STANDARD_IA

S3의 접두사에서 로컬 폴더로 모든 데이터를 이동

aws s3 mv s3://bucket_name/somePrefix ./localFolder --recursive

presign

presign 명령어는 S3 버킷의 특정 키에 대한 미리 서명된 URL을 생성합니다. 다른 사용자가 특정 S3 버킷 키의 파일에 접근할 수 있는 URL을 생성하는 데 사용됩니다.

사용법

aws s3 presign <OBJECT_KEY> --expires-in <TIME_IN_SECONDS>

예시

버킷의 객체에 대해 1시간 동안 유효한 미리 서명된 URL 생성

aws s3 presign s3://bucket_name/samplePrefix/file_name.png --expires-in 3600

Output:
https://s3.ap-south-1.amazonaws.com/bucket_name/samplePrefix/file_name.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA4MCZT73PAX7ZMVFW%2F20220314%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Date=20220314T054113Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=f14608bbf3e1f9f8d215eb5b439b87e167b1055bcd7a45c13a33debd3db1be96

rb

rb 명령어는 S3 버킷을 삭제하는 데 사용됩니다.

사용법

aws rb <BUCKET_NAME>

예시

S3 버킷 삭제

aws s3 mb myBucketName
# 이 명령어는 버킷에 데이터가 있는 경우 실패합니다.

데이터가 있는 S3 버킷 삭제

aws s3 mb myBucketName --force

rm

rm 명령어는 S3 버킷에서 객체를 삭제하는 데 사용됩니다.

사용법

aws s3 rm <S3Uri_To_The_File>

예시

S3 버킷에서 파일 하나 삭제

aws s3 rm s3://bucket_name/sample_prefix/file_name_2.txt

S3 버킷에서 특정 접두사가 있는 모든 파일 삭제

aws s3 rm s3://bucket_name/sample_prefix --recursive

S3 버킷의 모든 파일 삭제

aws s3 rm s3://bucket_name --recursive

sync

sync 명령어는 cp 명령어와 마찬가지로 소스에서 대상으로 파일을 복사하고 업데이트합니다. 하지만 cpsync 명령어의 차이점을 이해하는 것이 중요합니다. cp를 사용하면 대상에 이미 데이터가 있더라도 소스에서 대상으로 데이터를 복사합니다.

또한, 소스에서 파일이 삭제되더라도 대상에서 파일을 삭제하지 않습니다. 반면에 sync 명령어는 데이터를 복사하기 전에 대상을 확인하고, 새로운 파일과 업데이트된 파일만 복사합니다. sync 명령어는 git에서 원격 브랜치에 변경 사항을 커밋하고 푸시하는 것과 유사합니다. sync 명령어에는 명령어를 사용자 정의할 수 있는 다양한 옵션이 있습니다.

사용법

aws s3 sync <SOURCE> <DESTINATION> [--options]

예시

로컬 폴더를 S3에 동기화

aws s3 sync ./local_folder s3://bucket_name

S3 데이터를 로컬 폴더에 동기화

aws s3 sync s3://bucket_name ./local_folder

두 S3 버킷 간에 데이터 동기화

aws s3 sync s3://bucket_name s3://bucket_name_2

모든 .txt 파일을 제외하고 두 S3 버킷 간에 데이터 이동

aws s3 sync s3://bucket_name s3://bucket_name_2 --exclude "*.txt"

website

S3 버킷을 사용하여 정적 웹사이트를 호스팅할 수 있습니다. website 명령어는 버킷에 대한 S3 정적 웹사이트 호스팅을 구성하는 데 사용됩니다.

인덱스 파일과 오류 파일을 지정하면, S3에서 파일을 볼 수 있는 URL을 제공합니다.

사용법

aws s3 website <S3_URI> [--options]

예시:

S3 버킷에 대한 정적 호스팅 구성 및 인덱스 파일과 오류 파일 지정

aws s3 website s3://bucket_name --index-document index.html --error-document error.html

결론

위에서 소개한 내용이 버킷 관리에 자주 사용되는 AWS S3 명령어에 대한 이해를 돕기를 바랍니다. 더 자세한 내용은 AWS 인증 문서를 확인하십시오.