コンテンツへスキップ
CivoCloudManager

Civo Object Storage を macOS から 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_key と secret_key を足します。host_bucket に host_base と同じホスト名を与えると s3cmd はパススタイルのアドレッシングのままになり、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、または名前付きプロファイルから読まれ、AWS_DEFAULT_REGION には Civo のリージョンコードを入れて Signature V4 のスコープを合わせます。最近のバージョンについて脚注を一つ。AWS CLI 2.23 以降はアップロードに CRC64NVME チェックサムを既定で付けますが、これを受け取れない S3 互換エンドポイントもあります。put がチェックサムのエラーで失敗したら、AWS_REQUEST_CHECKSUM_CALCULATION=when_required と AWS_RESPONSE_CHECKSUM_VALIDATION=when_required を設定してください。

1 時間を溶かす罠。キーは一つのリージョンに縛られる

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 も使いません。継続トークン付きの ListObjects v2、共通プレフィックスをたどるパンくずナビゲーション、複数選択、進捗行付きのフォルダ再帰ダウンロードを行います。形について正直に書いておくと、このブラウザは読んでダウンロードします。アップロードと削除は s3cmd か rclone の仕事のままです。アプリには macOS 15 以降が必要です。

アクセスキーは dotfile ではなく Touch ID の後ろに

CLI を使い続けるとしても、ここだけでインストールする価値があります。s3cmd を動く状態にするということは、シークレットキーが ~/.s3cfg に平文で置かれるということです。rclone.conf も ~/.aws/credentials も同じです。あなたのユーザで動くどのプロセスからも読めますし、ホームディレクトリを歩き回る何かからも読めます。CivoCloudManager は Civo の API キーを macOS Keychain に置き、画面上で Object Store のシークレットアクセスキーを表示するには、先に Touch ID かシステムパスワードを求めます。限界ははっきりしていて、書いておく価値があります。キーをターミナルにコピーした瞬間、それはまた平文のファイルです。

使っていないストアのための Pause と Resume

遊んでいるストアも、確保したサイズの分だけ課金されます。Pause はすべてのオブジェクトを civo-cloud-manager という名前の中央 Object Store にコピーし、入りきらなければ先に vault を広げ、コピーしたキーとサイズを元と突き合わせ、一致したときにだけ元のストアを削除します。Civo の請求から行が消えます。Resume は同じ名前と同じ認証情報でストアを作り直し、オブジェクトを戻し、キーとサイズをもう一度検証してから vault を空にします。同時に動くのは最大 4 オブジェクトです。正直な限界も書いておきます。検証は内容のハッシュではなく名前とサイズの比較で、転送はオブジェクトをまるごとメモリに置き、リモートの manifest は元を削除したあとに書かれ、ローカルの manifest がその控えになります。

どの仕事にどのクライアントか

4 つとも同じエンドポイントの同じ S3 API を相手にします。違うのは設定がどこに置かれるか、シークレットがどこに行き着くか、そして何が見えるかです。

作業 s3cmdrcloneAWS CLICivoCloudManager
エンドポイントの設定 ~/.s3cfg の host_base と host_bucketリモートの endpoint毎回の --endpoint-urlCivo API から読み取り
シークレットキーの行き先 ~/.s3cfg、平文rclone.conf、平文~/.aws/credentials、平文macOS Keychain、表示に Touch ID
ストアを目で見て回る 不可rclone ncdu、テキストモード不可可、パンくず付きのファイルブラウザ
オブジェクトのアップロードと削除 ブラウザでは不可
フォルダの再帰ダウンロード s3cmd get -rrclone copyaws s3 cp --recursive可、進捗付き
遊んでいるストアを Pause して課金を止める 不可不可不可可、削除前に検証する vault
CI で動く 不可、Mac アプリのため

Civo Object Storage と S3 について

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_key と secret_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 15 以降のネイティブ macOS アプリとして 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) 以降が必要です。

ホームページに戻る