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 クライアントを設定する
-
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 では使えません。 -
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 の形で対が出力され、そのままシェルに貼れます。 -
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-rs3://STORENAME/backups/ でプレフィックスをまるごと取得できます。設定ファイルを使わない場合、同じ二つの値は--host=と--host-bucket=としてコマンドラインに置きます。 -
04
rclone: type は s3、provider は Other。
rclone config を走らせて s3 を選ぶか、~/.config/rclone/rclone.conf に直接ブロックを書きます。[civo] の下に type = s3、provider = Other、env_auth = false、認証情報からの
access_key_idとsecret_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-endpointhttps://objectstore.fra1.civo.com--s3-regionfra1 です。 -
05
AWS CLI: 毎回 --endpoint-url を付ける。
AWS CLI に Civo 専用のプラグインは要りません。必要なのは各コマンドのエンドポイントだけです。aws s3 ls
--endpoint-urlhttps://objectstore.fra1.civo.com、続いて aws s3 ls s3://STORENAME--endpoint-url... や aws s3 cp file.tar s3://STORENAME/--endpoint-url... となります。認証情報はAWS_ACCESS_KEY_IDとAWS_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 を相手にします。違うのは設定がどこに置かれるか、シークレットがどこに行き着くか、そして何が見えるかです。
| 作業 | s3cmd | rclone | AWS CLI | CivoCloudManager |
|---|---|---|---|---|
| エンドポイントの設定 | ~/.s3cfg の host_base と host_bucket | リモートの endpoint | 毎回の --endpoint-url | Civo API から読み取り |
| シークレットキーの行き先 | ~/.s3cfg、平文 | rclone.conf、平文 | ~/.aws/credentials、平文 | macOS Keychain、表示に Touch ID |
| ストアを目で見て回る | 不可 | rclone ncdu、テキストモード | 不可 | 可、パンくず付きのファイルブラウザ |
| オブジェクトのアップロードと削除 | 可 | 可 | 可 | ブラウザでは不可 |
| フォルダの再帰ダウンロード | s3cmd get -r | rclone copy | aws 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 なら
~/.s3cfgのhost_baseとhost_bucketをobjectstore.fra1.civo.comのようなリージョンのホスト名にし、access_key とsecret_keyを埋めます。rclone なら type = s3、provider = Other、endpoint =https://objectstore.fra1.civo.comと同じ鍵の対でリモートを作ります。AWS CLI なら各コマンドに--endpoint-urlhttps://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 アカウントの外に出ることはなく、検証は内容のハッシュではなく名前とサイズによるものです。
ガイド
手順を追って、そして率直な比較を。
- 01 Civo API キーをつなぐ Civo ダッシュボードでキーを発行し、一度貼り付ければ、あとは macOS Keychain が持っていてくれます。
- 02 自分の IP にファイアウォールを開く 手作業の手順、そのあとに残る動的 IP の罠、そして期限でルールを閉じる無料のメニューバー経路。
- 03 Lens・OpenLens・k9s との比較 クラスタ非依存の 3 つと、Civo 専用の 1 つ。その違いが、開いておきたいツールを決めます。
- 04 Mac で Civo DNS ドメインを Civo のネームサーバーに向けたあと、ゾーンはブラウザのタブではなくネイティブアプリで持つ。
- 05 変更履歴 出荷したリリースを新しい順に。ストアのリリースノートには収まらない分量で。
詳細解説
Civo のプロダクトごとに、掘り下げた解説を。
CivoCloudManager が触れる Civo の各領域には、仕様、トレードオフ、アーキテクチャの詳細をまとめた専用ページがあります。いまの仕事に一番近いものから読んでください。
- 01 Mac で使う Civo CLI の代替 GUI が CLI に勝つ場面、勝たない場面、そして両者の併用。
- 02 Mac 用の Civo Kubernetes GUI ライブのクラスタダッシュボード、リアルタイム Pod ログ、kubectl 不要。
- 03 Mac 用の Civo Object Storage ブラウザ ネイティブな S3 互換ブラウザ。使っていないバケットは中央 vault に退避。
- 04 Mac のメニューバーから Civo ファイアウォール ファイアウォールごとにワンクリックで開閉、IP 自動検出、自動クローズタイマー。
- 05 Mac 用の Civo コストダッシュボード Civo charges API からの実課金。期間ピッカーと月末予測。
エンドポイントの設定を飛ばす。
CivoCloudManager はエンドポイントとアクセスキーをあなたの Civo アカウントから読むので、設定ファイルを用意する代わりにストアがそのまま開きます。メニューバーは無料、ダッシュボード一式は Mac App Store での買い切りです。