웹사이트 검색

EC2 인스턴스에서 aws-cli를 사용하여 S3 버킷에서 작업 관리


AWS 콘솔을 사용하여 S3 버킷을 생성하고 관리할 수 있습니다. 때때로 명령줄에서 S3 버킷에 대한 작업을 생성하고 수행해야 할 필요가 있을 수 있습니다. S3 버킷에 대해 잘 모르고 이에 대해 알아보려면 여기를 클릭하여 제가 작성한 S3 버킷에 대한 기사를 찾을 수 있습니다.

이 기사를 진행하기 전에 S3 버킷에 대해 잘 알고 있다고 가정합니다.

이 문서에서는 명령줄에서 S3 버킷을 만들고 파일 복사, 파일 동기화 등과 같은 기본 작업을 수행하는 단계와 명령을 살펴봅니다.

전제 조건

  1. AWS 계정 (계정이 없는 경우 생성).
  2. S3 버킷에 대한 기본 이해(S3 버킷에 대해 자세히 알아보려면 여기를 클릭).
  3. Ubuntu 20.04 EC2 인스턴스(EC2 인스턴스 및 AWS 콘솔에서 생성하는 단계에 대해 알아보려면 여기를 클릭하십시오. 18.04 대신 Ubuntu 20.04의 AMI를 선택할 수 있습니다.)
  4. S3FullAccess 정책이 연결된 IAM 역할(IAM 역할을 생성하는 방법을 알아보려면 여기를 클릭).

우리는 무엇을 할 것인가?

  1. AWS 계정에 로그인합니다.
  2. aws-cli를 설치합니다.
  3. IAM 역할을 EC2 인스턴스에 연결합니다.
  4. aws-cli를 사용하여 버킷을 생성합니다.
  5. aws-cli를 사용하여 S3 버킷에서 기본 작업을 수행합니다.

AWS에 로그인

EC2 인스턴스에 aws-cli 명령 설치를 진행하기 전에 먼저 계정에 로그인하겠습니다.

AWS 로그인 페이지로 이동하려면 여기를 클릭하십시오.

위의 링크를 클릭하면 아래와 같은 로그인 페이지가 나타납니다.

성공적으로 로그인하면 아래와 같이 기본 AWS 대시보드가 표시됩니다.

aws-cli 설치

AWS EC2 인스턴스에 연결합니다.

먼저 리포지토리를 업데이트하겠습니다.

sudo apt-get update

Ubuntu 서버에서 다음 명령어를 사용하여 aws-cli 명령어를 설치합니다.

sudo apt install awscli

aws-cli 명령의 버전을 가져옵니다.

aws --version

지금까지는 필요한 IAM 역할이 연결되지 않은 EC2 인스턴스만 있었습니다.

이제 다음 명령을 사용하여 ID를 확인하려고 하면 모든 작업을 수행하는 데 사용할 자격 증명을 구성하라는 메시지가 표시됩니다.

aws sts get-caller-identity

EC2 인스턴스에 IAM 역할을 연결합니다.

AWS 계정의 AM 콘솔로 이동하여 규칙에 필수 정책이 연결되어 있는지 확인합니다.

여기에서 역할에 AmazonS3FullAccess 정책이 연결된 것을 볼 수 있습니다.

이제 EC2에서 콘솔로 이동하고 S3 버킷에서 작업을 수행하는 데 사용 중인 인스턴스를 선택합니다.

여기에서 작업 --> 보안 --> IAM 역할 수정을 클릭하여 인스턴스에 규칙을 연결합니다.

드롭다운 목록에서 연결할 규칙을 선택할 수 있는 화면이 표시됩니다. 계속 진행하려면 저장을 클릭하십시오.

aws-cli를 사용하여 S3 버킷에서 기본 작업 수행

EC2 터미널로 돌아가서 다음 명령을 실행합니다.

aws sts get-caller-identity

필요한 규칙을 인스턴스에 연결했기 때문에 터미널에서 작업을 수행하는 데 사용되는 역할의 ID를 확인하기 위해 위의 명령을 실행하면 응답으로 사용자 ID, 계정 및 해당 ARN을 볼 수 있습니다. 이는 EC2 인스턴스를 성공적으로 인증했음을 의미합니다. 이제 EC2 인스턴스에 연결된 역할을 사용하여 터미널에서 작업을 수행할 준비가 되었습니다.

AWS 계정에서 기존 S3 버킷을 확인하려면 다음 명령어를 실행합니다.

aws s3 ls

\rahul-new-bucket-dec-2020\이라는 새 버킷을 생성해 보겠습니다. 버킷 이름은 전역적으로 고유해야 합니다.

aws s3 mb s3://rahul-new-bucket-dec-2020

이제 다시 버킷을 나열하면 새 버킷이 성공적으로 생성되었으며 기존 버킷 목록에서 사용할 수 있음을 알 수 있습니다.

aws s3 ls

로컬 컴퓨터에 새 파일을 만들 수 있습니다.

touch file-for-s3

로컬 시스템에서 S3 버킷으로 파일을 복사할 수 있습니다.

aws s3 cp file-for-s3  s3://rahul-new-bucket-dec-2020

S3 버킷의 콘텐츠를 나열할 수도 있습니다.

aws s3 ls s3://rahul-new-bucket-dec-2020

로컬 머신에서 S3 버킷으로 파일을 복사하는 방식으로 로컬 디렉터리를 버킷과 동기화할 수도 있습니다.

동기화는 로컬 머신에서 버킷으로 기존 파일 및 폴더를 복사하지 않습니다. 새로 생성되거나 수정된 파일만 복사합니다.

로컬 시스템을 호출하는 새 파일을 만들 수 있습니다.

touch new-file

동기화를 사용할 시간입니다.

aws s3 sync . s3://rahul-new-bucket-dec-2020

이제 다시 새 파일을 만들 수 있습니다.

touch file-after-sync

이제 다시 동기화하면 새로 생성된 파일만 복사되는 것을 볼 수 있습니다. 버킷에 이미 복사된 파일은 복사되지 않습니다.

aws s3 sync . s3://rahul-new-bucket-dec-2020

그러나 이것은 복사 옵션의 경우가 아닙니다. S3에서 사용 가능한 파일과 관계없이 모든 파일을 복사합니다.

aws s3 cp . s3://rahul-new-bucket-dec-2020 --recursive

방금 시도한 명령을 이해하려면 다음 스크린샷을 참조하십시오.

S3 버킷에서 어떤 파일을 사용할 수 있는지 확인해 보겠습니다.

aws s3 ls s3://rahul-new-bucket-dec-2020

\rm\ 하위 명령을 사용하여 S3 버킷에서 특정 파일을 삭제할 수 있습니다.

aws s3 rm s3://rahul-new-bucket-dec-2020/new-file

버킷에서 파일이 삭제되었는지 확인

aws s3 ls s3://rahul-new-bucket-dec-2020

--recursive 옵션을 사용하여 버킷에서 모든 객체를 삭제할 수도 있습니다.

aws s3 rm s3://rahul-new-bucket-dec-2020 --recursive

객체가 버킷에서 삭제되었는지 확인

aws s3 ls s3://rahul-new-bucket-dec-2020

방금 수행한 작업을 이해하려면 다음 스크린샷을 참조하십시오.

버킷에서 객체를 삭제하는 방법과 마찬가지로 버킷 자체도 삭제할 수 있습니다.

먼저 계정에서 사용 가능한 모든 버킷을 나열합니다.

 aws s3 ls

\rb\ 하위 명령을 사용하여 필요한 버킷을 삭제합니다.

 aws s3 rb s3://rahul-new-bucket-dec-2020

이제 지정된 버킷이 카운트에서 삭제되었음을 알 수 있습니다.

AWS S3 LS

인스턴스가 더 이상 자체적으로 권한을 부여할 수 없도록 인스턴스에 연결한 규칙을 제거할 수 있습니다.

연결된 역할을 제거하려면 EC2 인스턴스로 이동하여 작업 --> 보안 --> IAM 역할 수정을 클릭하고 연결된 규칙을 제거하고 구성을 저장합니다.

작업을 확인하십시오.

이번에는 \aws s3 ls\ 명령을 실행하면 계정에서 버킷을 나열할 수 없습니다. EC2 인스턴스에서 어떤 작업도 수행할 수 없습니다.

결론

AWS 콘솔에서 AWS S3 버킷을 관리하는 방식과 마찬가지로 CLI에서도 관리할 수 있습니다. aws-cli 명령줄 유틸리티를 설치하는 단계를 확인했습니다. 또한 EC2 인스턴스에서 I am Role을 연결하고 분리하는 단계도 보았습니다. aws-cli 명령줄 유틸리티를 사용하여 S3 버킷에서 몇 가지 기본 작업을 수행했습니다.