OCI CLI(S3)

 

オブジェクト・ストレージ・ネームスペースは、
すべてのバケットおよびオブジェクトの最上位のコンテナとして機能します。
アカウント作成時に、各Oracle Cloud Infrastructureテナントには、
システムによって生成された変更不可能な一意のオブジェクト・ストレージ・ネームスペース名が1つ割り当てられます。


オブジェクト・ストレージ・ネームスペースを取得

oci os ns get

 


バケット作成

https://docs.oracle.com/ja-jp/iaas/Content/Object/home.htm


oci os bucket list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 

 

oci os bucket create \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--name bucket01 \
--auto-tiering Disabled \
--object-events-enabled false \
--public-access-type NoPublicAccess \
--storage-tier Standard \
--versioning Disabled


oci os bucket create \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--name bucket02

 

Bucket names must be unique within an Object Storage namespace


バケット削除


oci os bucket delete \
--name bucket01 \
--empty \
--force

 

oci os bucket delete \
--name bucket02 \
--empty \
--force


emptyオプションでオブジェクトも削除してくれる

 

オブジェクトアップロード


echo test > file01.txt
echo test > file02.txt
echo test > file03.txt

oci os object list \
--bucket-name bucket01

oci os object list \
--bucket-name bucket02


oci os object put \
--bucket-name bucket01 \
--file file01.txt


oci os object put \
--bucket-name bucket02 \
--file file02.txt \
--name dir1/dir2/file02.txt


oci os object put \
--bucket-name bucket02 \
--file file02.txt \
--name dir1/dir2/file03.txt

→フォルダ構造で格納される。


オブジェクトダウンロード

oci os object get \
--bucket-name bucket01 \
--name file01.txt \
--file - 

oci os object get \
--bucket-name bucket01 \
--name file01.txt \
--file file11.txt 

 


オブジェクト同期

 

オブジェクト同期(ダウンロード)

oci os object sync \
--bucket-name bucket02 \
--dest-dir hoge

オブジェクト同期(アップロード)

oci os object sync \
--bucket-name bucket01 \
--src-dir hoge


オブジェクト削除


oci os object delete \
--bucket-name bucket01 \
--name file01.txt \
--force

oci os object delete \
--bucket-name bucket01 \
--name dir1/dir2/file02.txt \
--force

 

 

オブジェクトコピー

https://docs.oracle.com/ja-jp/iaas/Content/Object/Tasks/copyingobjects.htm


oci os object list \
--bucket-name bucket01

oci os object list \
--bucket-name bucket02

★ポリシー設定必要(※1)

oci os object copy \
--bucket-name bucket01 \
--destination-bucket bucket02 \
--source-object-name file01.txt 

oci os object list \
--bucket-name bucket01

oci os object list \
--bucket-name bucket02

 

---
(※1)オブジェクトコピーに必要なポリシー作成

 

oci iam user list 
oci iam group list 

oci iam group list-users \
--group-id ocid1.group.oc1..000000000000000000000000000000000000000000000000000000000000

oci iam policy list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 


oci iam policy create \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--description polyc01 \
--name polyc01 \
--statements '[
"Allow group Administrators to manage buckets in compartment cmp01",
"Allow group Administrators to manage objects in compartment cmp01",
"Allow service objectstorage-us-ashburn-1 to manage object-family in compartment cmp01",
]'


※付与する下記ポリシー・ステートメントはコンソールから実行して表示されるメッセージから取得

Allow group {group_name} to manage buckets in compartment cmp01
Allow group {group_name} to manage objects in compartment cmp01
Allow service objectstorage-us-ashburn-1 to manage object-family in compartment cmp01


ポリシー削除

oci iam policy list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--query 'data[?"description"==`'polyc01'`].id | [0]' \
--raw-output


oci iam policy delete \
--policy-id ocid1.policy.oc1..000000000000000000000000000000000000000000000000000000000000 \
--force

---


mkdir -p ikt/dir11 ikt/dir12

echo test > ikt/dir11/file91.txt
echo test > ikt/dir11/file92.txt
echo test > ikt/dir12/file93.txt


一括アップロード

oci os object bulk-upload \
--bucket-name bucket01 \
--src-dir ikt


一括ダウンロード


oci os object bulk-download \
--bucket-name bucket01 \
--dest-dir fuga \
--prefix dir11

一括削除

oci os object bulk-delete \
--bucket-name bucket01 \
--force