AWS

AWS CLI를 통한 Amazon S3 데이터 업로드

JAEJUNG 2021. 8. 11. 17:58

이번 포스팅에선 S3에 접근 권한이 있는 IAM 역할을 만들고, CLI를 통해 S3에 파일을 업로드하는 과정을 설명한다.

 

Overview

1. IAM 역할 생성하기

2. EC2 인스턴스에서 S3로 데이터 업로드하기

 

Step1. IAM 역할 생성하기

IAM은 AWS 리소스에 대한 Access를 안전하게 제어할 수 있도록 도와주는 서비스이다.

AWS 계정 자체가 root 권한으로 동작하는데, 계정을 공유하여 사용하거나 중요한 작업을 할 경우

root 권한으로 모든 작업을 수행하면 문제가 생길 수 있다.

이를 방지하기 위해 여러 사용자를 만들고 필요한 권한만을 부여하기 위해 IAM 서비스를 사용한다.

 

IAM 서비스에선 "역할"을 할당한 사용자를 생성할 수 있다.

기존 정의된 역할 이외에 [역할 만들기]를 통해 Custom한 역할을 만들어보자.

 

여러 서비스, 계정에 대한 역할을 생성할 수 있지만 이번 실습에선 EC2 인스턴스에 부여할 역할을 생성한다.

 

마찬가지로, EC2 인스턴스에서 S3 버킷에 파일을 업로드해야 하기 때문에 "AmazonS3FullAccess"를 체크해준다.

 

태그도 하나 추가해준다.

 

[검토] 항목에서 [역할 이름]을 설정하고 "역할 만들기"를 클릭한다.

 

이제 생성한 역할을 EC2 인스턴스에 할당해보자.

[작업]-[보안]-[IAM 역할 수정]을 클릭한다.

조금 전 생성했던 IAM 역할을 할당해준다.

 

이제 이 인스턴스는 Amazon S3에 접근 가능한 권한이 생긴 것이다.

+ 만약, IAM 역할을 할당해줄 수 없는 외부 시스템에서 Amazon 리소스에 권한을 부여하려면 어떻게 해야 할까?

정답은 IAM 서비스에서 "사용자"를 생성하고 AccessKey를 발급받는 것이다.

이 과정은 추후 포스팅에서 다시 언급할 예정이다.

 

Step2. EC2 인스턴스에서 S3로 데이터 업로드하기

이제 EC2로 접속한 다음 S3로 데이터를 업로드해보자.

이를 위해 먼저 AWS CLI를 설치해야 한다.

기본적으로 AWS Linux는 이미 CLI가 설치돼있으므로 별도의 설치과정이 필요하지 않고,

 

윈도우라면

msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi

리눅스 OS는 아래 명령어를 사용하여 설치한다.

리눅스 운영체제는 Python2 혹은 Python3가 설치돼있다는 가정 하에 진행한다.

pip install awscli --upgrade --user

 

설치가 다 완료되었다면 아래 명령어를 통해 설치가 정상적으로 이루어졌는지 확인해보자

[ec2-user@ip-172-31-12-206 ~]$ aws --version
aws-cli/1.18.147 Python/2.7.18 Linux/4.14.238-182.422.amzn2.x86_64 botocore/1.18.6

 

이제 데이터 업로드를 위해 10MB dummy 파일을 만든다.

이름은 testfile로 변경해주겠다.

[ec2-user@ip-172-31-12-206 ~]$ fallocate -l 10MB 10MB
[ec2-user@ip-172-31-12-206 ~]$ ls
10MB
[ec2-user@ip-172-31-12-206 ~]$ mv 10MB testfile
[ec2-user@ip-172-31-12-206 ~]$ ls
testfile

 

AWS CLI를 통해 파일을 업로드하는 방법은 여러 가지가 있지만 본 실습에선 cp 명령어를 통해 진행한다.

[ec2-user@ip-172-31-12-206 ~]$ aws s3 cp testfile s3://s3-handson-202108/
upload: ./testfile to s3://s3-handson-202108/testfile

 

실제 S3 버킷을 확인해보면 testfile이 업로드 된 것을 확인할 수 있다.

 

혹은 명령어로도 확인할 수 있다.

[ec2-user@ip-172-31-12-206 ~]$ aws s3 ls s3://s3-handson-202108/
2021-08-11 08:51:32   10000000 testfile

'AWS' 카테고리의 다른 글

CloudFront를 활용한 S3 앱 배포하기  (0) 2021.08.12
VPC를 구성하고 Load Balancing과 Auto Scaling 적용하기  (0) 2021.08.11
VPC_hands-on  (0) 2021.08.10
S3_hands-on  (0) 2021.08.10
EC2_hands-on  (0) 2021.08.10