Advent Calendar 2020 全部オレシリーズ 4日目です。
Oracle Cloud の無料枠でこのブログを運用することにしたわけですが、docker-compose で起動させるようにしたものの、バックアップ設定を後回しにしていました。でもデータが飛んでしまうと悲しいのでそろそろやることにしました。
Oracle Cloud の Object Storage は S3 互換の API が存在するとのことで、s3cmd を使おうかと思ったのですが、まあよーわからん。
ひとまずは oci コマンドが使えるようにしてみます。
Mac での oci コマンドのインストールは Homebrew でいけました。(oci コマンドのインストール)
| |
oci setup config コマンドで初期設定を行います。
| |
user OCID は Web Console の 「アイデンティティ」→「ユーザー」 で、 tenancy OCID は 「管理」→「テナンシ詳細」 で確認できます。なんか無駄に長い感じがしますね…
最後に秘密鍵 (oci_api_key.pem) と公開鍵 (oci_api_key_public.pem) のペアが ~/.oci ディレクトリ内に作成されました。この公開鍵を Oracle Cloud の「アイデンティティ」→「ユーザー」で、「APIキー」に登録します。
設定は ~/.oci/config に書かれています。設定項目は SDK and CLI Configuration File に説明があります。AWS のやつみたいに複数 profile の設定を書くことができるようです。
$ cat ~/.oci/config
[DEFAULT]
user=ocid1.user.oc1..aaaaaaaanaeng2up6fae5ievee7waech3soo1oephahvieshee5ain5ceaga
fingerprint=96:6e:8d:9c:fb:a2:e8:e9:16:a3:68:f3:d6:d4:fd:06
key_file=/Users/teraoka/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..aaaaaaaazoo7urooxee3to2shuha5roo2roh6pha0vooxohr9eiwee5nohy9
region=ap-tokyo-1Object Storage の bucket 一覧を取得してみる。
$ oci os bucket list
Usage: oci os bucket list [OPTIONS]
Error: Missing option(s) --compartment-id.--compartment-id ってのが必須らしい。comparment-id を取得するには oci iam compartment list で良さそう。用語集によるとコンパートメントとは「組織の管理者から権限を付与された特定のグループのみがアクセスできる関連リソースのコレクション」だそうです。デフォルトで root って呼ばれるコンパートメントが存在するんですけどそれを root という名前で使うことはできないんですね。
$ oci iam compartment list
{
"data": [
{
"compartment-id": "ocid1.tenancy.oc1..aaaaaaaaiew1xaph0vei0thainoh9ikiod6fuxooquoo7ohxe9ahsh8booju",
"defined-tags": {},
"description": "xxxx",
"freeform-tags": {},
"id": "ocid1.compartment.oc1..aaaaaaaaque9quoowais0riey1ahcahniemahahquac3tu2jahogh4ees0la",
"inactive-status": null,
"is-accessible": null,
"lifecycle-state": "ACTIVE",
"name": "ManagedCompartmentForPaaS",
"time-created": "2019-09-21T03:24:43.546000+00:00"
}
]
}長っ!
$ oci os bucket list --compartment-id ocid1.tenancy.oc1..aaaaaaaaiew1xaph0vei0thainoh9ikiod6fuxooquoo7ohxe9ahsh8booju
{
"data": [
{
"compartment-id": "ocid1.tenancy.oc1..aaaaaaaaiew1xaph0vei0thainoh9ikiod6fuxooquoo7ohxe9ahsh8booju",
"created-by": "ocid1.saml2idp.oc1..aaaaaaaaaiepeezeuwaijoo6xaivootahthiikiewauvahnga8eh4iequaej/xxxxxxxx@gmail.com",
"defined-tags": null,
"etag": "c8a9ff5e-bc4e-4141-8344-bb6aba10d7cd",
"freeform-tags": null,
"name": "blog-1q77-com",
"namespace": "aeph4tie2ahm",
"time-created": "2020-11-29T10:42:11.442000+00:00"
}
]
}めんどくさ… --compartment-id を環境変数か設定ファイルに書ければ良いのですが、そんな設定は見当たらないですね…
ただ、bucket 内の object 一覧の取得時には指定の必要がないんですね。
| |
os サブコマンドは Object Storage の省略形。
次回は backup 用ユーザーの作成と、バックアップ用の最小権限設定を行って、object の put を行うところまでを書こうと思います。
その後、bucket に対する lifecycle 設定で古いファイルを自動で削除する設定を書こうかなと。
(記事中の id などはランダムに生成したものに置き換えています)

