5
4

More than 3 years have passed since last update.

Oracle Cloud Infrastructure(OCI)のObject Storageにファイルをアップロードする (bashスクリプト)

Last updated at Posted at 2019-08-06

やりたいこと

bashスクリプトで、(ociコマンドを使わずに)Oracle Cloud InfrastructureのObject Storageにファイルをアップロードする

参考にしたドキュメント

Oracle Cloud Infrastructure Documentation - Request Signatures
Oracle Cloud: upload large files through the Object Store REST API
コーソルさんのブログ (OCIオブジェクトストレージの論理構造とURL)

事前の作業

  • OCIのユーザ作成
  • バケット作成
  • 鍵ペアの作成
  • APIキーの追加

OCIのユーザ作成手順

手順は割愛

バケット作成手順

手順は割愛

鍵ペアの作成手順

鍵ペアの作成は、以下のドキュメントを参考に。

Oracle Cloud Infrastructure Documentation - Required Keys and OCIDs - How to Generate an API Signing Key

APIキーの追加手順

1.「OCIのユーザ作成」で作成したユーザ(オブジェクトストレージ接続用のユーザ)を使用してOCIコンソールにログイン
2. 画面右上の人マーク→ユーザID(メールアドレス)を押下。
3.「公開キーの追加」ボタンを押下
api-key.png
4. ポップアップ画面に、~/.oci/oci_api_key_public.pemの中身を張り付けて「追加」ボタンを押下

IDの確認

スクリプト内部に指定する、各種IDを確認します。

  • テナントID
  • ユーザID
  • Keyフィンガープリント

テナントIDの確認手順

画面右上の人マーク→「テナンシ:<テナント名>」を押下後、以下の画面からOCIDの「コピー」リンクを押下します
api-key.png

ユーザIDの確認手順

画面右上の人マーク→ユーザID(メールアドレス)を押下後、以下の画面からOCIDの「コピー」リンクを押下します
api-key.png

Keyフィンガープリントの確認手順

上記「鍵ペアの作成手順」で作成した秘密鍵に対して以下のコマンドを実行します。
「APIキー」画面からも確認可能です。
$ openssl rsa -pubout -outform DER -in ~/.oci/oci_api_key.pem | openssl md5 -c

スクリプトの作成

1.以下のスクリプトをコピーして貼り付けます
$ vi oci-curl.func
Oracle Cloud Infrastructure Documentation - Request Signatures - View the Bash sample in full screen for easier reading

2.スクリプト内の以下の変数を書き換えます

function oci-curl {
    # TODO: update these values to your own
        local tenancyId="ocid1.tenancy.oc1..aaaaaaaaba3pv6wkcr4jqae5f15p2b2m2yt2j6rx32uzr4h25vqstifsfdsq";
        local authUserId="ocid1.user.oc1..aaaaaaaat5nvwcna5j6aqzjcaty5eqbb6qt2jvpkanghtgdaqedqw3rynjq";
        local keyFingerprint="20:3b:97:13:55:1c:5b:0d:d3:37:d8:50:4e:c5:3a:34";
        local privateKeyPath="/Users/someuser/.oci/oci_api_key.pem";
  • tenancyIdは、「IDの確認」で確認したテナントIDの値に置き換える
  • authUserIdは、「IDの確認」で確認したユーザIDの値に置き換える
  • keyFingerprintは、「IDの確認」で確認したKeyフィンガープリントの値に置き換える
  • privateKeyPathは、「鍵ペアの作成手順」で作成した秘密鍵のパスに置き換える

3.oci-curl関数の引数に指定する変数を設定 (任意)
引数にべたがきしてもいいのですが、指定する値の説明のため、ここでは変数化しています。
$ OCI_HOSTURL=objectstorage.ap-tokyo-1.oraclecloud.com
※オブジェクトストレージのリソースURLは、objectstorage.<リージョン名>.oraclecloud.com
$ OCI_TENANTNAME=<テナント名>
$ OCI_BUCKETNAME=<バケット名>
$ UPLOAD_FILE_PATH=<アップロードするファイルのローカルパス>
$ OCI_OBJECTFILE_NAME=<オブジェクトストレージ上のファイル名>

4.ファイルのアップロード
$ . oci-curl.func
$ oci-curl \${OCI_HOSTURL} PUT \${UPLOAD_FILE_PATH} "/n/\${OCI_TENANTNAME}/b/\${OCI_BUCKETNAME}/o/\${OCI_OBJECTFILE_NAME}"
※Proxyサーバを経由する場合は、事前に以下環境変数も設定します
$ export https_proxy=<プロキシサーバのIP>:<ポート>

→ ファイルがUploadできていることを確認します

5
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4