본문으로 건너뛰기
CivoCloudManager

macOS에서 Civo Object Storage를 S3로 탐색합니다.

리전 엔드포인트, s3cmd와 rclone과 AWS CLI에 바로 넣는 설정, 그리고 네이티브 클라이언트가 다르게 하는 일.

Civo Object Storage는 S3를 말합니다. 그래서 두 가지만 맞으면 거의 모든 S3 클라이언트가 붙습니다. 스토어가 사는 리전의 엔드포인트, 그리고 같은 리전에서 만든 자격 증명입니다. Civo 문서는 s3cmd까지 안내하고 나머지 도구는 알아서 하라고 둡니다. 이 페이지는 s3cmd와 rclone과 AWS CLI의 설정을 그대로 적고, 이어서 CivoCloudManager가 택한 경로를 보여 줍니다. 엔드포인트와 액세스 키를 Civo API에서 바로 읽어 오기 때문에 손으로 설정할 것이 없는 방식입니다.

Civo용 S3 클라이언트 설정하기

  1. 01

    리전의 엔드포인트를 찾습니다.

    Civo는 Object Store 엔드포인트를 https://objectstore.<region>.civo.com 형태로 만들고 리전 코드는 소문자입니다. 그래서 런던의 스토어는 https://objectstore.lon1.civo.com, 프랑크푸르트는 https://objectstore.fra1.civo.com입니다. 스토어마다 Civo 대시보드에 자기 엔드포인트를 표시하고 REST API의 objectstore_endpoint 필드로도 돌려줍니다. Civo의 리전별 기능 개요에 따르면 Object Store는 LON1, FRA1, NYC1, MUM1에서 제공되고 PHX1에는 없습니다.

  2. 02

    같은 리전에서 자격 증명을 만듭니다.

    Civo Object Store는 전부 비공개라 액세스 키 ID와 시크릿 키가 필요합니다. Civo 대시보드의 Object Stores에서 리전 선택기를 스토어의 리전에 맞춰 둔 채로 만들거나, Civo CLI로 만듭니다. civo objectstore credential export -a <access_key> 명령은 그 쌍을 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_HOST로 출력해 셸에 바로 붙여 넣을 수 있게 합니다.

  3. 03

    s3cmd: host_base와 host_bucket.

    ~/.s3cfg의 [default] 아래에 host_base = objectstore.fra1.civo.com, host_bucket = objectstore.fra1.civo.com, bucket_location = fra1, use_https = True, signature_v2 = False를 넣고 access_keysecret_key를 채웁니다. host_buckethost_base와 같은 호스트명을 주면 s3cmd가 path style 주소 지정을 유지하고, Civo가 응답하는 방식이 그쪽입니다. 그다음 s3cmd ls로 스토어 목록을, s3cmd ls s3://STORENAME으로 하나를 보고, s3cmd put file.tar s3://STORENAME/backups/로 올리고, s3cmd get -r s3://STORENAME/backups/로 프리픽스 전체를 받습니다. 설정 파일 없이 쓰려면 같은 두 값을 명령줄에서 --host=--host-bucket=으로 줍니다.

  4. 04

    rclone: type은 s3, provider는 Other.

    rclone config를 돌려 s3를 고르거나, ~/.config/rclone/rclone.conf에 블록을 직접 적습니다. [civo] 아래에 type = s3, provider = Other, env_auth = false, 자격 증명에서 가져온 access_key_idsecret_access_key, region = fra1, endpoint = https://objectstore.fra1.civo.com, acl = private을 둡니다. 그러면 rclone lsd civo:로 스토어 목록을, rclone ls civo:STORENAME으로 객체를 보고, rclone copy ./dir civo:STORENAME/dir -P로 폴더를 진행률과 함께 올리고, rclone ncdu civo:STORENAME으로 텍스트 모드 브라우저를 띄웁니다. 같은 설정을 일회성 플래그로도 쓸 수 있습니다. --s3-provider Other --s3-endpoint https://objectstore.fra1.civo.com --s3-region fra1.

  5. 05

    AWS CLI: 매 호출에 --endpoint-url.

    AWS CLI에는 Civo 전용 플러그인이 필요 없고 명령마다 엔드포인트만 있으면 됩니다. aws s3 ls --endpoint-url https://objectstore.fra1.civo.com, 이어서 aws s3 ls s3://STORENAME --endpoint-url ... 과 aws s3 cp file.tar s3://STORENAME/ --endpoint-url ... 입니다. 자격 증명은 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY에서 오거나 이름 붙인 프로파일에서 오고, Signature V4 스코프가 맞도록 AWS_DEFAULT_REGION에 Civo 리전 코드를 넣습니다. 최근 버전에 대한 각주 하나. AWS CLI 2.23부터는 업로드에 CRC64NVME 체크섬을 기본으로 붙이는데 모든 S3 호환 엔드포인트가 이를 받아 주지는 않습니다. put이 체크섬 오류로 실패하면 AWS_REQUEST_CHECKSUM_CALCULATION=when_required와 AWS_RESPONSE_CHECKSUM_VALIDATION=when_required를 설정하세요.

한 시간을 잡아먹는 함정, 키는 리전 하나에 묶입니다

Civo 문서는 이걸 두 문장으로 분명히 적어 두었는데 눈으로 훑고 지나가기 쉽습니다. Object Store는 리전별이고, Object Store를 관리하고 접근하는 자격 증명은 만들어진 리전에 묶입니다. 대시보드가 FRA1에 있는 동안 만든 키는 같은 계정이고 같은 청구서여도 LON1 엔드포인트에서 인증되지 않습니다. 증상이 시크릿 오타처럼 보이는 인증 오류나 서명 오류라서, 자연스러운 반응은 키를 재발급하는 것이고 그러면 똑같이 틀린 리전에 키가 하나 더 생깁니다. 리전 선택기를 먼저 보고, 스토어 옆에서 자격 증명을 만들고, 설정을 의심하는 것은 그다음입니다.

명령줄이 덮지 못하는 것

스크립트와 백업과 CI에는 s3cmd와 rclone과 AWS CLI가 맞는 답이고 여기 있는 어떤 것도 그 자리를 대신하지 않습니다. 이들이 주지 않는 것은 스토어를 들여다보는 일입니다. 폴더 트리, 한눈에 들어오는 크기, 끌어낼 수 있는 선택 영역. Cyberduck이나 Transmit 같은 범용 Mac S3 클라이언트가 그 자리를 메우지만 Civo에 대해 아무것도 모릅니다. 그래서 엔드포인트를 입력하고, 스토어마다 키 두 개를 붙여 넣고, 자격 증명이 바뀔 때마다 손으로 맞춰 줘야 합니다.

앱 경로, 입력할 엔드포인트가 아예 없습니다

CivoCloudManager는 Civo API 키로 한 번 인증하고 Civo REST API v2에서 Object Store 목록을 읽습니다. 그 목록에는 스토어마다 엔드포인트와 연결된 자격 증명이 이미 들어 있습니다. S3 클라이언트를 거기서 조립하므로 엔드포인트 칸도, 키를 붙여 넣는 일도, 설정 파일도 없습니다. S3 계층은 순수 Swift입니다. AWS Signature V4를 CryptoKit의 HMAC-SHA256으로 계산하고, AWS SDK도 Electron도 없습니다. continuation token을 쓰는 ListObjects v2, 공통 프리픽스를 따라가는 브레드크럼 이동, 다중 선택, 진행 표시가 붙은 폴더 재귀 다운로드를 합니다. 모양을 정직하게 말하면 이 브라우저는 읽고 내려받습니다. 업로드와 삭제는 여전히 s3cmd나 rclone의 몫입니다. 앱에는 macOS 15 이상이 필요합니다.

닷파일 대신 Touch ID 뒤에 있는 액세스 키

CLI를 계속 쓰더라도 설치할 값어치가 있는 부분이 여기입니다. s3cmd가 동작한다는 말은 시크릿 키가 ~/.s3cfg에 평문으로 있다는 뜻이고, rclone.conf와 ~/.aws/credentials도 마찬가지입니다. 내 사용자 권한으로 도는 모든 프로세스가 그 셋을 읽을 수 있고, 홈 디렉터리를 훑는 무엇이든 마찬가지입니다. CivoCloudManager는 Civo API 키를 macOS 키체인에 두고, 화면에서 Object Store 시크릿 액세스 키를 드러내려면 먼저 Touch ID나 시스템 암호를 요구합니다. 한계는 분명하고 말해 둘 만합니다. 키를 터미널로 복사해 내는 순간 그것은 다시 평문 파일입니다.

쓰지 않는 스토어를 위한 Pause와 Resume

놀고 있는 스토어도 할당된 크기만큼 계속 과금됩니다. Pause는 모든 객체를 civo-cloud-manager라는 중앙 Object Store로 복사하고, 데이터가 들어가지 않으면 그 vault를 먼저 키우고, 복사된 키와 크기를 원본과 대조한 다음, 일치할 때만 원본 스토어를 삭제합니다. Civo 청구서에서 그 항목이 사라집니다. Resume는 같은 이름과 같은 자격 증명으로 스토어를 다시 만들고, 객체를 되돌리고, 키와 크기를 다시 검증한 뒤 vault를 비웁니다. 동시에 옮기는 객체는 최대 네 개입니다. 정직한 한계는 이렇습니다. 검증은 내용을 해싱하는 대신 이름과 크기를 비교하고, 전송은 객체 전체를 메모리에 담으며, 원격 manifest는 원본을 지운 뒤에 기록되고 로컬 manifest가 그 대비책입니다.

어떤 일에 어떤 클라이언트인가

넷 다 같은 엔드포인트에서 같은 S3 API와 이야기합니다. 차이는 설정이 어디에 사는지, 시크릿이 어디에 남는지, 그리고 무엇을 볼 수 있는지입니다.

작업 s3cmdrcloneAWS CLICivoCloudManager
엔드포인트 설정 ~/.s3cfg의 host_base와 host_bucket리모트의 endpoint매 호출의 --endpoint-urlCivo API에서 읽어 옴
시크릿 키가 남는 곳 ~/.s3cfg, 평문rclone.conf, 평문~/.aws/credentials, 평문macOS 키체인, 표시에 Touch ID
스토어를 눈으로 탐색 아니요rclone ncdu, 텍스트 모드아니요예, 브레드크럼 파일 브라우저
객체 업로드와 삭제 브라우저에는 없음
폴더 재귀 다운로드 s3cmd get -rrclone copyaws s3 cp --recursive예, 진행 표시와 함께
놀고 있는 스토어를 Pause해 과금 중단 아니요아니요아니요예, 삭제 전 검증이 붙은 vault
CI에서 실행 아니요, Mac 앱입니다

S3로 쓰는 Civo Object Storage, 답변

Civo Object Storage 엔드포인트 URL은 무엇인가요?
Civo Object Store 엔드포인트는 https://objectstore.<region>.civo.com 형태를 따르고 리전 코드는 소문자입니다. 런던은 https://objectstore.lon1.civo.com, 프랑크푸르트는 https://objectstore.fra1.civo.com입니다. 엔드포인트는 스토어를 만든 리전에 따라 달라집니다. 스토어마다 Civo 대시보드에 자기 엔드포인트를 보여 주고 Civo REST API의 objectstore_endpoint 필드로도 돌려줍니다.
Civo Object Storage에 s3cmd나 rclone을 쓸 수 있나요?
둘 다 됩니다. AWS CLI도, 다른 S3 호환 클라이언트도 마찬가지입니다. s3cmd라면 ~/.s3cfghost_basehost_bucketobjectstore.fra1.civo.com 같은 리전별 호스트명으로 두고 access_keysecret_key를 채웁니다. rclone이라면 type = s3, provider = Other, endpoint = https://objectstore.fra1.civo.com과 같은 키 쌍으로 리모트를 만듭니다. AWS CLI라면 명령마다 --endpoint-url https://objectstore.fra1.civo.com을 넘깁니다.
Civo Object Storage 액세스 키가 왜 동작하지 않나요?
보통 원인은 리전입니다. Civo는 Object Store가 리전별이고 자격 증명이 만들어진 리전에 묶인다고 밝히고 있습니다. 그래서 FRA1에서 만든 키는 같은 계정이어도 LON1 엔드포인트에서 인증되지 않습니다. 대시보드를 스토어의 리전에 맞춘 상태에서 자격 증명을 만드세요. 두 번째로 흔한 원인은 엔드포인트를 아예 받지 못한 클라이언트, 또는 기본값으로 남아 있는 s3cmd의 host_bucket입니다. 그러면 요청이 Civo가 아니라 Amazon으로 갑니다.
Mac에 Civo Object Storage용 GUI가 있나요?
CivoCloudManager가 네이티브 macOS 앱이고 macOS 15 이상, Mac App Store에 있으며 Civo를 압니다. 스토어마다 엔드포인트와 액세스 키를 Civo API에서 읽으므로 설정할 것이 없습니다. 브레드크럼으로 탐색하고 파일 하나, 다중 선택, 폴더 전체를 재귀로 내려받습니다. 업로드와 삭제는 CLI의 몫으로 남습니다. Cyberduck이나 Transmit 같은 범용 S3 클라이언트도 엔드포인트를 입력하고 스토어마다 키 두 개를 붙여 넣으면 Civo에 연결됩니다.
Pause는 Civo Object Store의 데이터를 어떻게 하나요?
Pause는 모든 객체를 내 Civo 계정 안의 civo-cloud-manager라는 중앙 Object Store로 복사하고, 복사된 키와 크기를 원본과 대조한 다음에야 원본 스토어를 삭제해 과금을 끊습니다. Resume는 같은 이름과 같은 자격 증명으로 스토어를 다시 만들고, 객체를 되돌리고, 키와 크기를 다시 검증한 뒤 vault를 비웁니다. 데이터는 Civo 계정을 벗어나지 않고, 검증은 내용 해시가 아니라 이름과 크기로 합니다.

엔드포인트 설정을 건너뛰세요.

CivoCloudManager는 엔드포인트와 액세스 키를 내 Civo 계정에서 읽어 오므로, 설정 파일이 필요한 대신 스토어가 그냥 열립니다. 메뉴 막대 티어는 무료, 전체 대시보드는 Mac App Store에서 일회성 구매.

Mac App Store에서 다운로드

macOS 15 (Sequoia) 이상이 필요합니다.

홈으로 돌아가기