본문으로 건너뛰기

AWS S3에서 카카오클라우드 Object Storage로 데이터 이관

클라우드 스토리지를 지원하는 오픈소스 커맨드라인 도구인 Rclone을 사용하여 AWS S3의 데이터를 카카오클라우드 Object Storage로 이관하는 방법을 설명합니다.

안내
  • 예상 소요 시간: 30분
  • 사용자 환경
    • 권장 운영 체제: Rocky, Ubuntu
    • Region: kr-central-2
  • 사전 준비 사항

시나리오 소개

이번 시나리오에서는 AWS S3의 데이터를 카카오클라우드 Object Storage로 이관하는 방법을 소개합니다. 데이터 이관 작업에는 다양한 클라우드 저장소 간 데이터 전송을 지원하는 Rclone을 사용합니다. 이 시나리오의 주요 내용은 다음과 같습니다.

  • Rclone 패키지 설치
  • 카카오클라우드 Object Storage와 AWS S3를 관리를 위한 Rclone 설정
  • AWS S3에서 카카오클라우드 Object Storage로 데이터 이관 후 정합성 검토

시나리오 아키텍처

주의

데이터 이관은 모두 인터넷망을 통해 이루어지므로, 데이터 이관용 VM 인스턴스와 Object Storage 간의 인터넷 연결이 가능해야 합니다.

시작하기 전에

이 시나리오의 실습을 위해 우선 데이터 이관을 위해 중계용 VM 인스턴스와 데이터를 저장할 목적지로 사용하기 위한 Object Storage 버킷이 필요합니다. VM 인스턴스 생성 방법은 VM 인스턴스 생성하기 문서를 참고하세요. 버킷 생성 및 관리에 대한 자세한 내용은 Object Storage 버킷 생성 및 관리 문서를 확인하시기 바랍니다.

또한, 데이터 이관은 인터넷망을 통해 이루어지므로, VM 인스턴스와 Object Storage 간의 인터넷 연결이 원활히 이루어질 수 있도록 네트워크 환경을 적절히 설정해야 합니다.

시작하기

아래 단계에서는 AWS S3 데이터를 카카오클라우드 Object Storage로 이관하는 전체 과정을 안내합니다.

Step 1. 데이터 이관용 VM 인스턴스 접속하기

데이터 이관용 VM 인스턴스에 Rclone 패키지를 설치하기 위하여 SSH로 접근합니다.

chmod 400 ${PRIVATE_KEY}.pem # 읽기 권한 부여
ssh -i ${PRIVATE_KEY}.pem ubuntu@${VM_PUBLIC_IP}
환경변수설명
PRIVATE_KEY🖌키 파일 이름
VM_PUBLIC_IP🖌Virtual Machine > 인스턴스 탭에서 퍼블릭 IP 확인

Step 2. Rclone 설치하기

데이터 이관을 위해 중계용 VM 인스턴스에 Rclone 패키지를 설치합니다. 자세한 설명은 Rclone Install 문서를 확인하시기 바랍니다.

Rclone 설치
## Rclone 설치 
curl https://rclone.org/install.sh | sudo bash

## Rclone 설치 확인
rclone --version

Step 3. Rclone 설정하기

중계용 VM 인스턴스에서 Rclone으로 카카오클라우드 Object Storage와 AWS S3를 관리할 수 있습니다. 이를 위해 Rclone 설정이 필요합니다. 자세한 설명은 Rclone config 문서를 확인하시기 바랍니다.

  1. rclone.conf 파일에 카카오클라우드와 AWS 설정 정보를 입력합니다.

    cat <<EOL > ~/.config/rclone/rclone.conf

    # 카카오클라우드 Object Storage 설정
    [kakaocloud-obj]
    type = s3
    provider = Ceph
    env_auth = True
    access_key_id = ${CREDENTIAL_ACCESS_KEY}
    secret_access_key = ${CREDENTIAL_SECRET_ACCESS_KEY}
    region = kr-central-2
    endpoint = https://objectstorage.kr-central-2.kakaocloud.com

    # AWS S3 설정
    [aws-s3]
    type = s3
    provider = AWS
    access_key_id = ${AWS_ACCESS_KEY}
    secret_access_key = ${AWS_SECRET_ACCESS_KEY}
    region = ${AWS_REGION}
    EOL
    환경변수설명
    CREDENTIAL_ACCESS_KEY🖌 S3 API 사용에 필요한 액세스 키
    CREDENTIAL_SECRET_ACCESS_KEY🖌S3 API 사용에 필요한 비밀 액세스 키
    AWS_ACCESS_KEY🖌AWS 액세스 키
    AWS_SECRET_ACCESS_KEY🖌AWS 비밀 액세스 키
    AWS_REGION🖌AWS 리전
    정보

    카카오클라우드 Object Storage 설정값에는 S3 API 사용에 필요한 Credential 발급 정보를 발급받아야 합니다.
    자세한 방법은 S3 API 사용에 필요한 Credential 발급 문서를 참고하시기 바랍니다.

  2. lsd 명령어를 사용하여 Object Storage의 모든 버킷을 나열합니다. 이를 통해 Rclone이 Object Storage와 정상적으로 연결되었는지 확인할 수 있습니다.

    Rclone과 Object Storage 연결 확인
    # 카카오클라우드 Object Storage 연결 확인
    rclone lsd kakaocloud-obj:/

    # AWS S3 연결 확인
    rclone lsd aws-s3:/

Step 4. 데이터 이관하기

sync 명령어를 사용하여 출발지와 목적지의 데이터를 동기화합니다. 이를 통해 AWS S3특정 버킷 데이터를 카카오클라우드 Object Storage로 이관할 수 있습니다. 자세한 설명은 Rclone sync 문서를 참조하세요.

# AWS S3를 카카오클라우드 Object Storage로 이관 전 테스트 
rclone sync aws-s3:/"${AWS_BUCKET}" kakaocloud-obj:/"${KAKAO_BUCKET}" --progress -v \
--create-empty-src-dirs --metadata --log-file "${LOGFILE}" --log-format date,time,KST,longfile --dry-run

# AWS S3를 카카오클라우드 Object Storage로 이관
rclone sync aws-s3:/"${AWS_BUCKET}" kakaocloud-obj:/"${KAKAO_BUCKET}" --progress -v \
--create-empty-src-dirs --metadata --log-file "${LOGFILE}" --log-format date,time,KST,longfile
환경변수설명
AWS_BUCKET🖌AWS Bucket 이름
KAKAO_BUCKET🖌카카오클라우드 Bucket 이름
LOGFILE🖌로그 파일명
주의

sync 명령어를 사용하여 데이터 이관 시, 목적지의 데이터가 변경됩니다. 따라서 데이터 이관을 진행하기 전에 출발지와 목적지가 올바른지 반드시 확인해야 합니다. 출발지와 목적지가 뒤바뀔 경우, 데이터 손실이 발생할 수 있습니다.

  • 출발지 : AWS S3
  • 목적지 : 카카오클라우드 Object Storage
안내

sync 예제의 --metadata 옵션은 Rclone 1.66부터 지원됩니다.

Step 5. 데이터 이관 정합성 확인

데이터의 정합성을 검토하여 정상적으로 이관이 되었는지 확인할 수 있습니다.

# 데이터 정합성 확인
rclone check aws-s3:/"${AWS_BUCKET}" kakaocloud-obj:/"${KAKAO_BUCKET}" --progress -v

# 두 Object Storage의 Object 수와 용량 확인
rclone size aws-s3:/"${AWS_BUCKET}"
rclone size kakaocloud-obj:/"${KAKAO_BUCKET}"
환경변수설명
AWS_BUCKET🖌AWS S3 Bucket 이름
KAKAO_BUCKET🖌카카오클라우드 Object Storage Bucket 이름