はじめに
IBM CloudのICOS(IBM Cloud Object Storage)の情報をawsコマンドで取得する流れを記載しました。
環境情報
$ ibmcloud --version ... version 1.2.3
$ bash --version GNU bash, バージョン 4.4.12(3)-release (x86_64-unknown-cygwin)
$ aws --version aws-cli/1.18.181 ...
事前準備
IBM Cloudのポータルの「Cloud Object Storage-xs」より「バケットの作成」を選択してICOSのストレージ領域を作成します。
今回は以下で作成したとします。
Name : test-storage
Location : jp-tok
Type : Standard
同バケットに対して「サービス資格情報」を確認できるので以下のような情報を控えておきます。
{ "apikey": "XX", "cos_hmac_keys": { "access_key_id": "XX", "secret_access_key": "XX" }, "endpoints": "https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints", "iam_apikey_description": "Auto-generated for XX", "iam_apikey_name": "test-storage", "iam_role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer", "iam_serviceid_crn": "XX", "resource_instance_id": "XX::" }
コマンドで操作するためにawsコマンドをインストールします。pipでインストールする手順は以下にて記載しました。
AWSコマンド用のプロファイルを作成する
awsコマンドは以下コマンドでProfileを作成します。
$ aws configure AWS Access Key ID [None]: XX AWS Secret Access Key [None]: XX Default region name [None]: jp-tok Default output format [None]: json
作成後は以下のようにディレクトリとファイルができていて入力した情報が記載されています。
$ tree .aws/ .aws/ ├── config └── credentials
バケット情報を取得する
以下コマンドでプロファイル情報を利用して接続にいきます。
$ aws s3 ls
ただし、デフォルトではエンドポイントはawsのURLとなっていて以下エラーとなるので
Could not connect to the endpoint URL: "https://s3.jp-tok.amazonaws.com/"
明示的にICOS用のエンドポイントを指定するとバケット一覧が取得できます。この日付はバケットを作成した時刻です。
$ aws --endpoint-url https://s3.jp-tok.cloud-object-storage.appdomain.cloud s3 ls 2020-10-10 20:20:20 test-storage
そして、上の構文にバケット名を以下のように付与するとファイル一覧が取得できます。
$ aws --endpoint-url https://s3.jp-tok.cloud-object-storage.appdomain.cloud s3 ls s3://test-storage 2020-... XX test.txt
終わりに
ターミナル上でICOSのバケット一覧及びバケット内のファイル一覧を確認する流れとなります。
以上、ご参考になれば幸いです。