EC2 인스턴스에서 S3 Bucket의 파일을 다운로드 및 업로드

EC2 인스턴스에서 S3 Bucket의 파일을 다운로드 및 업로드해 보는 과정을 정리해 봤습니다.
2023.12.10

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 EC2 인스턴스에서 S3 Bucket의 파일을 다운로드 및 업로드해 보는 과정을 정리해 봤습니다.

S3 Bucket과 RDS를 연동하는 방법은 아래 블로그를 참고해 주세요.

S3 Bucket 준비

먼저 S3 Bucket에서는 EC2 인스턴스에서 다운로드할 파일인「test-image.jpeg」와 EC2 인스턴스에서 S3 Bucket으로 업로드할 파일을 모아둘 test 라는 폴더를 준비합니다.

※ S3 Bucket 자체의 설정은 EC2 인스턴스와 동일한 리전을 설정했으며, 다른 설정은 디폴트로 값으로 S3 Bucket을 생성했습니다.

IAM 권한 설정

An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied

IAM 설정 없이 EC2 인스턴스에서 S3 Bucket으로 접근을 시도하면 다음과 같은 에러가 발생하므로, EC2 인스턴스에 S3 Bucket에 접근할 권한을 할당해야합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::S3 Bucket 이름",
                "arn:aws:s3:::S3 Bucket 이름/*"
            ]
        },
        {
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*",
            "Effect": "Allow"
        }
    ]
}

먼저 상기와 같은 정책을 생성합니다.

이어서 IAM Role을 생성합니다.

  • 서비스에는 EC2를 선택합니다.
  • 사용 사례도 EC2를 선택합니다.
  • 「다음」을 클릭합니다.

  • 생성한 정책을 검색하여, 선택합니다.
  • 「다음」을 클릭하여, IAM Role 생성을 끝마칩니다.

이어서 EC2 인스턴스를 생성할 때, 혹은 EC2 인스턴스에 생성한 IAM Role을 연결하면 됩니다.

S3 Bucket 파일 다운로드 및 업로드

[root@ip-10-0-129-119 ~]# aws s3 ls
2023-12-10 10:32:42 test-s3-ec2-jw

aws s3 ls 명령어를 입력하면, S3 Bucket 리스트가 출력됩니다.

[root@ip-10-0-129-119 ~]# aws s3 cp s3://test-s3-ec2-jw/test-image.jpeg ./test-image.jpeg
download: s3://test-s3-ec2-jw/test-image.jpeg to ./test-image.jpeg
[root@ip-10-0-129-119 ~]# ls
test-image.jpeg

이어서 s3 cp 명령어를 사용해, test-image.jpeg 파일을 다운로드 할 수 있습니다.

[root@ip-10-0-129-119 ~]# aws s3 cp test-image.jpeg s3://test-s3-ec2-jw/test/
upload: ./test-image.jpeg to s3://test-s3-ec2-jw/test/test-image.jpeg

동일하게 s3 cp 명렁어를 통해, 다운로드한 파일을 S3 Bucket의 test 폴더로 업로드합니다.

S3 Bucket의 test 폴더로 들어가 보면, 파일이 업로드된 것을 확인할 수 있습니다.

업로드한 파일을 다운로드해 보면, 문제 없이 이미지 파일이 열리는 것을 확인할 수 있습니다.

그 외, s3 cp와 같은 CLI 수준의 명령어는 아래 공식 문서를 참고해 주세요.

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 kim.jaewook@classmethod.jp 로 연락 주시면 회신 드릴 수 있도록 하겠습니다 !