(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【ICOS】awsコマンドでバケットに格納されているファイル一覧を取得する

スポンサーリンク

はじめに

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のバケット一覧及びバケット内のファイル一覧を確認する流れとなります。

以上、ご参考になれば幸いです。