Rclone를 사용하여 Microsoft Azure Blob에서 Amazon S3로 데이터 마이그레이션하기 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Rclone를 사용하여 Microsoft Azure Blob에서 Amazon S3로 데이터 마이그레이션하기

수하스 바사바라즈 (AWS), 에이단 킨 (), 코리 레인 (AWS) 이 제작했습니다. AWS

환경: PoC 또는 파일럿

소스: Microsoft Azure 스토리지 컨테이너

대상: Amazon S3 버킷

R 유형: 리플랫포밍

워크로드: Microsoft

기술: 마이그레이션, 스토리지 및 백업

AWS서비스: 아마존 S3

요약

이 패턴은 Microsoft Azure Blob 객체 스토리지에서 Amazon Simple Storage Service(Amazon S3) 버킷으로 데이터를 마이그레이션하기 위해 Rclone을 사용하는 방법을 설명합니다. 이 패턴을 사용하여 데이터의 일회성 마이그레이션 또는 지속적인 동기화를 수행할 수 있습니다. Rclone은 Go로 작성된 명령줄 프로그램으로, 클라우드 공급자의 다양한 스토리지 기술 간에 데이터를 이동하는 데 사용됩니다.

사전 조건 및 제한 사항

사전 조건 

  • 활성 AWS 계정

  • Azure Blob 컨테이너 서비스에 저장된 데이터

아키텍처

소스 기술 스택

  • Azure Blob 스토리지 컨테이너너

대상 기술 스택

  • Amazon S3 버킷

  • 아마존 엘라스틱 컴퓨트 클라우드 (아마존EC2) 리눅스 인스턴스

아키텍처

Microsoft Azure에서 Amazon S3로 데이터 마이그레이션하기

도구

  • Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.

  • Rclonersync에서 영감을 받은 오픈 소스 명령줄 프로그램입니다. 여러 클라우드 스토리지 플랫폼에서 파일을 관리하는 데 사용됩니다.

모범 사례

Azure에서 Amazon S3로 데이터를 마이그레이션할 때는 불필요한 비용이나 느린 전송 속도를 방지하기 위해 다음 고려 사항을 염두에 두십시오.

  • Azure 스토리지 계정 및 Blob 컨테이너와 동일한 지리적 지역 (예: 지역 us-east-1 (버지니아 북부) 및 Azure AWS 지역에 AWS 인프라를 생성합니다. East US

  • NAT게이트웨이를 사용하면 수신 대역폭과 송신 대역폭 모두에 대해 데이터 전송 요금이 발생하므로 가능하면 Gateway를 사용하지 마십시오.

  • Amazon S3용 VPC 게이트웨이 엔드포인트를 사용하여 성능을 향상시키십시오.

  • Intel x86 인스턴스보다 비용을 낮추고 성능을 높이려면 AWS Graviton2 (ARM) 프로세서 기반 EC2 인스턴스를 사용해 보십시오. Rclone은 주로 크로스 컴파일되며 사전 컴파일된 바이너리를 제공합니다. ARM

에픽

작업설명필요한 기술

대상 S3 버킷을 준비합니다.

적절한 AWS 지역에 새 S3 버킷을 만들거나 마이그레이션할 데이터의 대상으로 기존 버킷을 선택합니다.

AWS관리자

Amazon의 IAM 인스턴스 역할을 생성합니다EC2.

Amazon의 새 AWS Identity 및 Access Management (IAM) 역할을 생성합니다 EC2. 이 역할은 EC2 인스턴스에 대상 S3 버킷에 대한 쓰기 액세스 권한을 부여합니다.

AWS관리자

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

IAM콘솔 또는 AWS 명령줄 인터페이스 (AWSCLI) 를 사용하여 대상 S3 버킷에 대한 쓰기 액세스 권한을 허용하는 EC2 인스턴스 역할에 대한 인라인 정책을 생성합니다. 예제 정책은 추가 정보 섹션을 참조하세요.

AWS관리자

EC2 인스턴스를 시작합니다.

새로 생성한 IAM 서비스 역할을 사용하도록 구성된 Amazon Linux EC2 인스턴스를 시작합니다. 또한 이 인스턴스는 인터넷을 통해 Azure 퍼블릭 API 엔드포인트에 액세스해야 합니다. 

참고: 비용을 낮추려면 AWS Graviton 기반 인스턴스를 EC2 사용해 보세요. Rclone은 컴파일된 바이너리를 제공합니다. ARM

AWS관리자

Azure AD 서비스 보안 주체를 생성합니다.

CLIAzure를 사용하여 소스 Azure Blob 스토리지 컨테이너에 대한 읽기 전용 액세스 권한이 있는 Azure Active Directory (Azure AD) 서비스 주체를 만들 수 있습니다. 지침은 추가 정보 섹션을 참조하세요. 이러한 자격 증명을 인스턴스의 해당 위치에 저장합니다. EC2 ~/azure-principal.json

클라우드 관리자, Azure
작업설명필요한 기술

Rclone을 다운로드하고 설치합니다.

Rclone 명령줄 프로그램을 다운로드하고 설치합니다. 설치 지침은 Rclone 설치 설명서를 참조하세요.

일반AWS, 클라우드 관리자

Rclone을 구성합니다.

다음 rclone.conf 샘플 파일을 복사합니다. Azure Storage 계정 이름과 us-east-1 S3 버킷이 위치한 AWS 지역으로 AZStorageAccount 바꾸세요. 이 파일을 EC2 인스턴스의 ~/.config/rclone/rclone.conf 위치에 저장합니다.

[AZStorageAccount] type = azureblob account = AZStorageAccount service_principal_file = azure-principal.json [s3] type = s3 provider = AWS env_auth = true region = us-east-1
일반AWS, 클라우드 관리자

Rclone 구성을 확인하십시오.

Rclone이 구성되어 있고 권한이 제대로 작동하는지 확인하려면, Rclone이 구성 파일을 파싱할 수 있고 Azure Blob 컨테이너 및 S3 버킷 내의 객체에 액세스할 수 있는지 확인하십시오. 검증 명령 예는 다음을 참조하십시오.

  • 구성 파일에 구성된 원격 항목을 나열합니다. 이렇게 하면 구성 파일이 올바르게 파싱될 수 있습니다. 출력을 검토하여 rclone.conf 파일과 일치하는지 확인하십시오.

    rclone listremotes AZStorageAccount: s3:
  • 구성된 계정의 Azure Blob 컨테이너를 나열합니다. rclone.conf 파일에 사용한 저장소 계정 이름으로 AZStorageAccount를 바꿉니다.

    rclone lsd AZStorageAccount: 2020-04-29 08:29:26 docs
  • Azure Blob 컨테이너에 있는 파일을 나열합니다. 이 명령의 문서를 Azure 저장소 계정의 실제 Blob 컨테이너 이름으로 바꿉니다.

    rclone ls AZStorageAccount:docs 824884 administrator-en.a4.pdf
  • AWS계정의 버킷을 나열하세요.

    [root@ip-10-0-20-157 ~]# rclone lsd s3: 2022-03-07 01:44:40 examplebucket-01 2022-03-07 01:45:16 examplebucket-02 2022-03-07 02:12:07 examplebucket-03
  • S3 버킷에 있는 파일을 나열합니다.

    [root@ip-10-0-20-157 ~]# rclone ls s3:examplebucket-01 template0.yaml template1.yaml
일반AWS, 클라우드 관리자
작업설명필요한 기술

컨테이너에서 데이터를 마이그레이션합니다.

Rclone 복사 또는 동기화 명령을 실행합니다. 

예: 복사

이 명령은 소스 Azure Blob 컨테이너의 데이터를 대상 S3 버킷으로 복사합니다.

rclone copy AZStorageAccount:blob-container s3:examplebucket-01

예: 동기화

이 명령은 소스 Azure Blob 컨테이너와 대상 S3 버킷 간에 데이터를 동기화합니다.

rclone sync AZStorageAccount:blob-container s3:examplebucket-01

중요: 동기화 명령을 사용하면 소스 컨테이너에 없는 데이터가 대상 S3 버킷에서 삭제됩니다.

일반AWS, 클라우드 관리자

컨테이너를 동기화합니다.

초기 복사가 완료된 후, Rclone 동기화 명령을 실행하여 대상 S3 버킷에서 누락된 새 파일만 복사되도록 지속적인 마이그레이션을 수행합니다.

일반AWS, 클라우드 관리자

데이터가 성공적으로 마이그레이션되었는지 확인하십시오.

데이터가 대상 S3 버킷에 성공적으로 복사되었는지 확인하려면 Rclone lsdls 명령을 실행합니다.

일반AWS, 클라우드 관리자

관련 리소스

추가 정보

EC2인스턴스의 역할 정책 예시

이 정책은 EC2 인스턴스에 계정의 특정 버킷에 대한 읽기 및 쓰기 권한을 부여합니다. 버킷이 서버 측 암호화에 고객 관리 키를 사용하는 경우 정책에 따라 키 관리 서비스 () AWS KMS 에 AWS 대한 추가 액세스 권한이 필요할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:DeleteObject", "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::BUCKET_NAME/*", "arn:aws:s3:::BUCKET_NAME" ] }, { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "arn:aws:s3:::*" } ] }

읽기 전용 Azure AD 서비스 보안 주체 생성

Azure 서비스 보안 주체는 고객 애플리케이션, 서비스 및 자동화 도구가 특정 Azure 리소스에 액세스하는 데 사용하는 보안 ID입니다. 특정 역할이 있고 리소스에 액세스할 수 있도록 엄격하게 제어되는 권한을 가진 사용자 ID(로그인 및 암호 또는 인증서)라고 생각하면 됩니다. 최소 권한을 따르고 Azure의 데이터가 실수로 삭제되지 않도록 보호하는 읽기 전용 서비스 보안 주체를 만들려면 다음 단계를 따릅니다.

  1. Microsoft Azure 클라우드 계정 포털에 로그인하고 워크스테이션에서 클라우드 셸을 PowerShell 실행하거나 Azure 명령줄 인터페이스 (CLI) 를 사용하십시오.

  2. 서비스 보안 주체를 만들고 Azure Blob 저장소 계정에 대한 읽기 전용 액세스 권한으로 구성하세요. 이 명령의 JSON 출력을 라는 로컬 파일에 저장합니다. azure-principal.json 파일이 EC2 인스턴스에 업로드됩니다. 중괄호({})로 표시된 자리 표시자 변수를 Azure 구독 ID, 리소스 그룹 이름 및 스토리지 계정 이름으로 바꿉니다.

    az ad sp create-for-rbac ` --name AWS-Rclone-Reader ` --role "Storage Blob Data Reader" ` --scopes /subscriptions/{Subscription ID}/resourceGroups/{Resource Group Name}/providers/Microsoft.Storage/storageAccounts/{Storage Account Name}