はじめに
OCIを操作するOracle Cloud Command Line Interface(OCI CLI)の実行環境を用意する。
なるべく環境を汚したくない&バージョンアップ楽にしたいタイプなのでDockerで用意します。
今回利用したDocker環境はGit hubで公開しています。
manaki-naoe/docker-oci-cli
【OCI】DockerでOCI-CLIを実行する。
アーカイブストレージについて
AWSでいう「Amazon S3 Glacier」
GCPでいう「Nearline Storage/Coldline Storage」にあたるサービスだと思っています。
低頻度アクセス向けのストレージ
1か月あたりGB 0.312円
データアクセスや最小オブジェクトサイズなど隠れたコストが無いため、
コスト計算ができ安全に利用できると思います。
復元まで
データの復元には約4時間ほどかかるそうです。
料金について
AWSやGCPでは取り出すために料金がものすごくかかってしまいますが、
OCIではストレージ料金とリクエスト費用しかかかりません。
画像参照先
Always Freeもあります
10GBのオブジェクト・ストレージ
10GBのアーカイブ・ストレージ
10GBまでが無料になっています。
準備
アーカイブストレージを作成する。
OCI CLIの実行環境を用意する。
Dockerfileをクローンする
$ git clone git@github.com:manaki-naoe/docker-oci-cli.git
イメージのビルド
$ docker build -t oci-cli .
ConfigファイルとAPI Keyの作成
$ docker run --rm -v ${PWD}/.oci:/root/.oci -it oci-cli:latest setup config
作成したAPI Keyの登録
ユーザーの詳細画面でAPI Keyを追加してください
コンパートメント用configの作成
$ docker run --rm -v ${PWD}/.oci:/root/.oci -it oci-cli:latest setup oci-cli-rc # リポジトリ内はこんな構造になっているはずです。 - .oci - config - oci_api_key.pem - oci_api_key_public.pem - oci_cli_rc - Dockerfile $ vi .oci/oci_cli_rc # 末尾に以下を追加します。 [DEFAULT] compartment-id = <Compartment OCID>
以上で準備は終了です。
アーカイブストレージにアップロードする。
1ファイルだけアップロードする。
スクリプトを設置する
put.sh#!/bin/bash docker run --rm \ -v ${PWD}/.oci:/root/.oci \ -v <アップロードしたいファイルがあるディレクトリパス>:/root/bucket \ -it oci-cli:latest \ os object put \ --bucket-name <バケット名> \ --file /root/bucket/$1
実行
$ ./put.sh <ファイル名>
オブジェクト・ストレージの詳細ページでファイルがアップロードされていれば成功です。
ディレクトリ内のファイルをアップロードする。
スクリプトを設置する
bulk_upload.sh#!/bin/bash docker run --rm \ -v ${PWD}/.oci:/root/.oci \ -v <アップロードしたいファイルがあるディレクトリパス>:/root/bucket \ -it oci-cli:latest \ os object bulk-upload \ --bucket-name <バケット名> \ --src-dir /root/bucket \ --exclude .gitignore \ --no-overwrite
除外したファイルがあれば[--exclude]オプションで除外できます
例 --exclude .gitignore--no-overwriteはすでに存在しているファイルをアップロードしないオプションです。
実行
$ ./bulk_upload.sh
オブジェクト・ストレージの詳細ページでファイルがアップロードされていれば成功です。
おわりに
コストの事前計算ができ、
取り出すための料金がリクエスト費用しかないため、
安心して取り出すことができます。
10GBまで無料でもあるので、
私はバックアップの保管に利用しています。