View a markdown version of this page

Amazon EC2 인스턴스에서 Amazon S3 사용 - - Amazon Elastic Compute Cloud

Amazon EC2 인스턴스에서 Amazon S3 사용

Amazon Simple Storage Service(Amazon S3)는 업계 최고의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스입니다. Amazon S3를 사용하여 Amazon EC2 인스턴스 또는 인터넷을 통해 데이터 레이크, 웹 사이트, 백업 및 빅 데이터 분석과 같은 다양한 사용 사례에 대해 원하는 양의 데이터를 저장하고 검색할 수 있습니다. 자세한 내용은 Amazon S3란 무엇인가?를 참조하세요

Amazon EC2 인스턴스에서 Amazon S3 데이터에 액세스하는 두 가지 방법이 있습니다.

  • 파일 액세스 - Amazon S3 Files를 사용하여 S3 버킷을 인스턴스에 고성능 파일 시스템으로 탑재합니다.

  • 객체 액세스 - Amazon S3 API, AWS CLI, AWS SDK 또는 wget과 같은 도구를 사용하여 S3에서 또는 S3로 객체를 복사합니다.

Amazon S3 Files를 사용하는 파일 액세스

Amazon S3 Files는 S3 범용 버킷을 컴퓨팅 인스턴스에 고성능 파일 시스템으로 탑재할 수 있는 서버리스 파일 시스템입니다. S3 Files를 사용하면 로컬 탑재 경로에서 읽기 및 쓰기와 같은 표준 파일 시스템 작업을 통해 S3 객체를 파일로 액세스할 수 있습니다.

실행 중인 인스턴스에서 시작 시 또는 시작 후 S3 파일 시스템을 EC2 인스턴스에 탑재할 수 있습니다.

사전 조건

EC2 인스턴스에서 S3 Files를 설정하기 전에 다음 조건을 갖추었는지 확인합니다.

  • S3 파일 시스템 및 사용 가능한 상태의 탑재 대상 하나 이상. S3 파일 시스템 생성에 대한 자세한 내용은 Amazon S3 사용 설명서Working with Amazon S3 Files를 참조하세요.

  • 인스턴스 프로파일이 연결된 EC2 Linux 인스턴스. 파일 시스템을 탑재하는 데 필요한 권한에 대한 자세한 내용은 Amazon S3 사용 설명서IAM roles and policies를 참조하세요.

  • 인스턴스와 파일 시스템의 탑재 대상 사이에서 NFS 트래픽(포트 2049)을 허용하는 보안 그룹. 필요한 보안 그룹 설정에 대한 자세한 내용은 Amazon S3 사용 설명서Security groups를 참조하세요.

EC2 콘솔을 사용하여 시작 시 파일 시스템을 EC2 인스턴스에 탑재하는 방법
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 인스턴스 시작을 선택합니다.

  3. Network settings(네트워크 설정)에서 다음을 수행합니다.

    1. 편집을 선택합니다.

    2. 서브넷에서 서브넷을 선택합니다.

    3. 기본 보안 그룹을 선택하여 EC2 인스턴스에서 S3 파일 시스템에 액세스할 수 있는지 확인하세요. 이 보안 그룹을 사용하여 Secure Shell(SSH)로 EC2 인스턴스에 액세스할 수 없습니다. SSH 액세스의 경우 나중에 기본 보안을 편집하고 SSH를 허용하는 규칙을 추가하거나 SSH를 허용하는 새 보안 그룹을 추가할 수 있습니다. 다음 설정을 사용할 수 있습니다.

      1. 유형: SSH

      2. 프로토콜: TCP

      3. 포트 범위: 22

      4. 소스: 위치 무관 0.0.0.0/0

  4. 스토리지 구성에서 다음 작업을 수행하세요.

    1. 파일 시스템에서 S3 Files를 선택하세요.

    2. 공유 파일 시스템 추가(Add shared file system)를 선택합니다.

    3. S3 파일 시스템의 경우 네트워크 설정에서 선택한 서브넷을 기반으로 파일 시스템이 가용 영역에 나타납니다. 탑재할 S3 파일 시스템을 선택하세요. 파일 시스템이 없는 경우 새 파일 시스템 생성을 선택하여 새 항목을 생성하세요.

    4. 파일 시스템을 탑재하려는 EC2 인스턴스의 로컬 탑재 경로(예: /mnt/s3files)를 입력하세요.

    5. 파일 시스템을 탑재하고 fstab에 추가하기 위한 명령이 생성됩니다. 고급 세부 정보사용자 데이터 필드에 이 명령을 추가할 수 있습니다. 이제 EC2 인스턴스는 시작될 때와 재부팅될 때마다 S3 파일 시스템을 탑재하도록 구성됩니다. 시작된 후에도 EC2 인스턴스에서 이러한 명령을 실행할 수 있습니다.

  5. 고급 세부 정보에서 인스턴스 프로파일을 인스턴스에 연결하세요. IAM 역할에는 파일 시스템을 탑재하고 S3 버킷에 액세스하기 위한 권한이 있어야 합니다. 필요한 권한에 대한 자세한 내용은 Amazon S3 사용 설명서IAM roles and policies를 참조하세요.

  6. 인스턴스 시작을 선택합니다.

    인스턴스가 시작되면 필요한 소프트웨어 유틸리티가 설치되고 파일 시스템이 탑재됩니다. 로컬 탑재 경로로 이동하여 파일 시스템을 볼 수 있습니다.

시작 후 EC2 파일 시스템을 인스턴스에 탑재하는 방법
  1. Secure Shell(SSH)을 통해 또는 EC2 콘솔에서 EC2 Instance Connect를 사용하여 EC2 인스턴스에 연결하세요.

  2. S3 파일 시스템을 탑재하려면 탑재 헬퍼 유틸리티 amazon-efs-utils를 사용하세요. Linux 배포에 따라 다음 명령 중 하나를 사용하여 amazon-efs-utils 패키지를 설치하세요.

    1. Amazon Linux를 사용하는 경우 다음 명령을 실행하여 Amazon 리포지토리에서 efs-utils를 설치하세요.

      sudo yum -y install amazon-efs-utils
    2. 기타 지원되는 Linux 배포를 사용하는 경우 다음 명령을 실행하세요.

      curl https://amazon-efs-utils.aws.com/efs-utils-installer.sh | sudo sh -s -- --install
    3. 기타 Linux 배포는 GitHubefs-utils 리포지토리를 참조하세요.

  3. 다음 명령을 사용하여 파일 시스템 탑재 지점으로 사용할 디렉터리를 생성하세요.

    sudo mkdir {path/to/mount}
  4. S3 파일 시스템을 탑재하세요.

    FS="{YOUR_FILE_SYSTEM_ID}" sudo mount -t s3files $FS:/ {path/to/mount}
  5. 파일 시스템이 탑재되었는지 확인하세요.

    df -h {path/to/mount}
S3 버킷의 객체를 파일로 보는 방법

이전 절차를 완료했으면 이제 표준 파일 시스템 작업을 사용하여 로컬 탑재 경로에서 S3 객체를 파일로 읽고 쓸 수 있습니다. S3 버킷에 객체가 있는 경우 다음 명령을 사용하여 객체를 파일로 볼 수 있습니다.

ls {path/to/mount}

객체 기반 액세스

S3 API, AWS CLI, AWS SDK 또는 표준 HTTP 도구를 사용하여 Amazon S3에서 또는 해당 위치로 파일을 복사할 수 있습니다. 필요한 권한이 있으면 다음 방법 중 하나를 사용하여 Amazon S3 및 사용자 인스턴스로 또는 해당 위치에서 파일을 복사할 수 있습니다.

wget
참고

이 메서드는 퍼블릭 객체에만 적용됩니다. 객체가 퍼블릭이 아닌 경우 ERROR 403: Forbidden 메시지가 표시됩니다. 이 오류가 발생하는 경우 Amazon S3 콘솔, AWS CLI, AWS API, AWS SDK 또는 AWS Tools for Windows PowerShell을 사용해야 하며, 필요한 권한이 있어야 합니다. 자세한 내용은 Amazon S3 사용 설명서에서 Amazon S3의 자격 증명 및 액세스 관리객체 다운로드를 참조하세요.

wget 유틸리티는 Amazon S3에서 퍼블릭 객체를 다운로드하는 데 사용할 수 있는 HTTP 및 FTP 클라이언트입니다. 이는 Amazon Linux 및 대부분의 기타 배포판에서 기본적으로 설치되어 있으며, Windows에서 다운로드할 수 있습니다. Amazon S3 객체를 다운로드하려면 다운로드할 객체의 URL로 해당 부분을 대체하여 다음 명령을 사용합니다.

[ec2-user ~]$ wget https://amzn-s3-demo-bucket.s3.amazonaws.com/path-to-file
PowerShell

AWS Tools for Windows PowerShell을 사용하여 Amazon S3 사이에서 객체를 이동할 수 있습니다.

다음과 같이 Copy-S3Object cmdlet을 사용해서 Amazon S3 객체를 Windows 인스턴스로 복사합니다.

Copy-S3Object ` -BucketName amzn-s3-demo-bucket ` -Key path-to-file ` -LocalFile my_copied_file.ext

또는 Windows 인스턴스에서 웹 브라우저를 사용하여 Amazon S3 콘솔을 열 수 있습니다.

AWS CLI

AWS Command Line Interface(AWS CLI)를 사용하여 Amazon S3에서 제한된 항목을 다운로드하고 항목을 업로드할 수 있습니다. 이 도구의 설치 및 구성 등에 대한 자세한 내용은 AWS Command Line Interface 세부 정보 페이지 단원을 참조하십시오.

aws s3 cp 명령은 Unix cp 명령과 비슷합니다. Amazon S3에서 인스턴스로 파일을 복사하거나, 인스턴스에서 Amazon S3로 파일을 복사하거나, 하나의 Amazon S3 위치에서 다른 위치로 파일을 복사할 수도 있습니다.

다음 명령을 사용해서 Amazon S3에서 인스턴스로 객체를 복사합니다.

aws s3 cp s3://amzn-s3-demo-bucket/my_folder/my_file.ext my_copied_file.ext

다음 명령을 사용해서 인스턴스에서 Amazon S3로 객체를 다시 복사합니다.

aws s3 cp my_copied_file.ext s3://amzn-s3-demo-bucket/my_folder/my_file.ext

aws s3 sync 명령은 전체 Amazon S3 버킷을 로컬 디렉터리 위치에 동기화할 수 있습니다. 이는 데이터 세트를 다운로드하고 로컬 사본을 원격 세트에 따라 최신으로 유지하는 데 도움이 될 수 있습니다. Amazon S3 버킷에서 적절한 권한을 보유한 경우, 작업이 완료되면 소스와 대상의 위치를 바꿔 입력해 명령을 실행해서 로컬 디렉터리를 클라우드로 푸시할 수 있습니다.

다음 명령을 사용하여 전체 Amazon S3 버킷을 사용자 인스턴스의 로컬 디렉터리로 다운로드합니다.

aws s3 sync s3://amzn-s3-demo-source-bucket local_directory
Amazon S3 API

API를 사용하여 Amazon S3의 데이터에 액세스할 수 있습니다. 이런 API를 사용해서 애플리케이션 개발을 지원하고 이를 다른 API 및 SDK와 통합할 수 있습니다. 자세한 내용은 Amazon Simple Storage Service API 참조AWS SDK를 사용하는 Amazon S3의 코드 예제를 참조하세요.