본문 바로가기
공부/AWS

[AWS] S3 CLI로 관리하기(+IAM 정책 생성/연결)

by haejang 2020. 8. 1.
728x90
728x90

 

먼저 대충 연결할 수 있는 VPC와 EC2를 만들어보자

만들어져있는게 있다면 그걸 사용해도 된다

 

그냥 S3 CLI 명령이 궁금한거면 아래 글을 보자

2020/07/31 - [공부] - [AWS] S3 버킷 CLI 사용(버전 관리, 동기화, 복구)

 

[AWS] S3 버킷 CLI 사용(버전 관리, 동기화, 복구)

1. 버전 관리 활성화 aws s3api put-bucket-versioning --bucket 버킷이름 --versioning-configuration Status=Enabled 2. 동기화 aws s3 sync 동기화할위치 s3://버킷이름 3. 삭제한거 동기화 aws s3 sync 동기..

honglab.tistory.com

 

VPC랑 EC2 만드는 자세한 과정이 궁금하면 아래 글을 보자

2020/07/22 - [공부] - [AWS] VPC랑 EC2 만들어보기

 

[AWS] VPC랑 EC2 만들어보기

먼저 아마존에 로그인한 후 계좌를 등록해야한다 1달러 빠져나가면 그 때부터 시작할 수 있다 https://aws.amazon.com/ko/ 클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services 피트니스 글로벌 ��

honglab.tistory.com

 

VPC 생성
서브넷 생성
자동 할당 IP 설정
인터넷 게이트웨이 생성 후 VPC에 연결
라우팅 테이블 편집
EC2 만들면서 SSH 허용하는 보안그룹도 생성
키 페어 생성(기존꺼 있으면 그거 사용)

 

이제 EC2에 접속해보자

접속하는 방법은

2020/07/24 - [공부] - [AWS] EC2 CLI로 접속하기(cmd, PuTTy)

 

[AWS] EC2 CLI로 접속하기(cmd, PuTTy)

2020/07/22 - [공부] - [AWS] VPC랑 EC2 만들어보기 [AWS] VPC랑 EC2 만들어보기 먼저 아마존에 로그인한 후 계좌를 등록해야한다 1달러 빠져나가면 그 때부터 시작할 수 있다 https://aws.amazon.com/ko/ 클라우..

honglab.tistory.com

여기서 보자

 

 

접속이 확인되면 S3 버킷을 만들러 가 보자

서비스 >> S3 >> 버킷 만들기 를 누른다

 

 

버킷 이름은 고유해야 한다. 알아서 이름만 잘 지은 후 생성을 눌러주자

 

이제 IAM 역할을 생성하고 연결해보겠다

서비스 >> IAM >> 역할 >> 역할 만들기 를 누르자

 

 

AWS 서비스 >> EC2 선택 후 계속 다음 누름

 

 

이름 하나 설정해주고 끝내면 된다

그 후 방금 만든 버킷의 이름을 선택해주면

 

 

나오는 창에서 인라인 정책 추가 를 눌러준다

거기서 JSON을 선택한 후, 원래 있던걸 지우고

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:HeadBucket",
                "s3:ListBucket"
                ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::아까만든버킷이름/*",
                "arn:aws:s3:::아까만든버킷이름"
            ]
        }
    ]
}

얘를 넣어준다

얘는 지정된 버킷에 대한 전체 액세스 권한을 인스턴스에 부여하며, 버킷에 저장된 객체를 포함한 버킷의 콘텐츠도 인스턴스에 부여한다

/*은 버킷의 내용을 참조한다

 

 

정책 이름은 그냥 버킷 이름이랑 같게 가겠다. 이러고 생성하면 된다

 

생성을 완료했으면 이제 얘를 EC2에 연결해줘야 한다. EC2로 다시 돌아가보자

 

 

아까 만든 EC2 인스턴스를 누르고 IAM 역할 연결/바꾸기 를 눌러준다

 

 

만들어놓은 IAM역할을 연결해주면 된다

 

이제 아까 접속되어있던 EC2로 돌아와서 S3를 만져보자

먼저 S3와 동기화 할 폴더와 파일들을 만들어주겠다

 

mkdir hello
cd hello

echo hello >> 1.txt
echo mynameis >> 2.txt
echo haejang >> 3.txt

cd ..

 

먼저 파일들을 버킷과 동기화하기 전에 버킷에서 버전 관리를 활성화해야 한다

aws s3api put-bucket-versioning --bucket 아까만든버킷이름 --versioning-configuration Status=Enabled

 

동기화는 sync 명령으로 한다

aws s3 sync hello s3://아까만든버킷이름/hello/

 

 

업로드가 잘 되었는지 확인해보자

aws s3 ls s3://아까만든버킷이름
aws s3 ls s3://아까만든버킷이름/hello/

 

 

직접 콘솔에서도 확인해보자

 

 

아주 잘 들어와 있다

 

그럼 이번엔 삭제를 한 후 삭제동기화 를 해보겠다

일단 1.txt 파일을 삭제시켜보겠다

rm hello/1.txt

 

 

이를 버킷에도 동기화 시키려면 아까 했던 명령에 --delete를 붙여주면 된다

aws s3 sync hello s3://아까만든버킷이름/hello/ --delete
aws s3 ls s3://아까만든버킷이름/hello/

 

잘 삭제되었다

콘솔에서도 확인해보면

 

 

1.txt가 사라져있다

 

이제 삭제한 놈을 복구시켜보겠다

그러려면 일단 삭제한 놈의 정보를 먼저 알아야 한다

aws s3api list-object-versions --bucket 아까만든버킷이름 --prefix hello/1.txt

 

 

밑줄 친 VersionId와 Key를 복사해준다

aws s3api get-object --bucket 아까만든버킷이름 --key 키 --version-id 버전ID 다시저장할이름

 

 

EC2엔 복구가 되었지만 S3 버킷은 여전히 1.txt가 없다(당연히)

아까 한 대로 sync를 해주면 다시 버킷에도 복구가 된다

 

 

마지막으로 콘솔에서도 확인해주면?

 

 

잘 복구되어있다

728x90
728x90

댓글