IBM Cloud ShellでAWS CLIを使ってIBM Cloud Object Storageをアクセスしてみる


概要

IBM Cloud Shell上で、AWS CLIを使ってIBM Cloud Object Storageにアクセスする手順を記載します。

前提

IBM Cloud Object Storageのサービスインスタンスが作成されていること

手順概要

  1. IBM Cloud Shellを起動
  2. IBM Cloud Object Storageのバケットを作成
  3. AWS CLIをIBM Cloud Shellにインストール
  4. サービスキーの作成
  5. AWS CLIからIBM Cloud Object Storageをアクセス

1. IBM Cloudシェルを起動

IBM Cloudのコンソールの右上にあるIBM Cloud Shellのアイコンをクリックして起動します。

2. IBM Cloud Object Storageのバケットを作成

IBM Cloud CLIを使ってバケットを作成します。

サービスインスタンスをリストします
TSOTA@cloudshell:~$ ibmcloud resource service-instances
Retrieving instances with type service_instance in all resource groups in all locations under account ...
OK
Name                              Location   State    Type   
・・・  
Cloud Object Storage-lo           global     active   service_instance   
・・・
サービスインスタンスの詳細を確認します(CRNを確認)
TSOTA@cloudshell:~$ ibmcloud resource service-instance "Cloud Object Storage-lo"
Retrieving service instance Cloud Object Storage-lo in all resource groups under account ...
OK

Name:                  Cloud Object Storage-lo   
ID:                    crn:v1:bluemix:public:cloud-object-storage:global:a/xxx:xxx::   
GUID:                  xxxxx   
Location:              global   
Service Name:          cloud-object-storage   
Service Plan Name:     lite   
Resource Group Name:   Default   
State:                 active   
Type:                  service_instance   
Sub Type:                 
Created at:            2020-10-13T07:08:17Z   
Created by:            xxxxxxx   
Updated at:            2020-10-13T07:08:17Z   
Last Operation:                        
                       Status    create succeeded      
                       Message   Completed create instance operation      
CRNを設定
TSOTA@cloudshell:~$ ibmcloud cos config crn
Resource Instance ID CRN:  ()> crn:v1:bluemix:public:cloud-object-storage:global:a/xxx:xxx:: 
Saving new Service Instance ID...
OK
Successfully stored your service instance ID.
バケットを作成(CrossRegionのバケットを作成します)
TSOTA@cloudshell:~$ ibmcloud cos bucket-create --bucket tsota-bucket --region ap
OK
Details about bucket tsota-bucket:
Region: ap
Class: Standard
TSOTA@cloudshell:~$ ibmcloud cos buckets-extended
OK
Found 7 buckets:

Name                                              Location Constraint   Creation Date   
tsota-bucket                                      ap-standard           Dec 08, 2020 at 15:44:36   

3. AWS CLIをIBM Cloud Shellにインストール

参考:Linux で AWS CLI バージョン 2 をインストールする
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-linux.html#cliv2-linux-install

AWS_CLIをインストール(sudoを実行できないのでホームディレクトリの下に導入します)
TSOTA@cloudshell:~$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
TSOTA@cloudshell:~$ unzip awscliv2.zip
TSOTA@cloudshell:~$ ./aws/install -i ~/aws-cli -b ~/bin
You can now run: /home/TSOTA/bin/aws --version
TSOTA@cloudshell:~$ /home/TSOTA/bin/aws --version
aws-cli/2.1.7 Python/3.7.3 Linux/5.9.8 exe/x86_64.ubuntu.18 prompt/off

4. サービスキーの作成

AWS CLIからアクセスするためのサービスキーを作成します。
HMAC資格情報を付けて作成します。
参考: https://cloud.ibm.com/docs/cloud-object-storage/hmac?topic=cloud-object-storage-hmac

サービスキーを作成します
TSOTA@cloudshell:~$ ibmcloud resource service-key-create tsota-test-key Manager --instance-name "Cloud Object Storage-lo" --parameters '{"HMAC":true}'
Creating service key of service instance Cloud Object Storage-lo under account ...
OK
Service key crn:v1:bluemix:public:cloud-object-storage:global:a/xxx:xxx:resource-key:xxx was created.

Name:          tsota-test-key   
ID:            crn:v1:bluemix:public:cloud-object-storage:global:a/xxx:xxx:resource-key:xxx   
Created At:    Tue Dec  8 16:13:52 UTC 2020   
State:         active   
Credentials:                                   
               apikey:                   xxx     
               cos_hmac_keys:                                          
                                         access_key_id:       xxx        
                                         secret_access_key:   xxx         

               endpoints:                https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints      
               iam_apikey_description:   Auto-generated for key xxx      
               iam_apikey_name:          tsota-test-key      
               iam_role_crn:             crn:v1:bluemix:public:iam::::serviceRole:Manager      
               iam_serviceid_crn:        crn:v1:bluemix:public:iam-identity::a/xxx::serviceid:ServiceId-xxx      
               resource_instance_id:     crn:v1:bluemix:public:cloud-object-storage:global:a/xxx:xxx::      

5. AWS CLIからIBM Cloud Object Storageをアクセス

前ステップで作成したアクセスキーをセットします。

アクセスキーを設定
TSOTA@cloudshell:~$ bin/aws configure
AWS Access Key ID [None]: xxx
AWS Secret Access Key [None]: xxx
Default region name [None]: ap
Default output format [None]: json
TSOTA@cloudshell:~$ 
バケットをリスト
TSOTA@cloudshell:~$ bin/aws --endpoint-url https://s3.ap.cloud-object-storage.appdomain.cloud s3 ls
2020-12-08 15:44:36 tsota-bucket
バケットの中を確認
TSOTA@cloudshell:~$ bin/aws --endpoint-url https://s3.ap.cloud-object-storage.appdomain.cloud s3 ls tsota-bucket/
TSOTA@cloudshell:~$
ファイルをアップロード
TSOTA@cloudshell:~$ echo test > test.txt
TSOTA@cloudshell:~$ bin/aws --endpoint-url https://s3.ap.cloud-object-storage.appdomain.cloud s3 cp test.txt s3://tsota-bucket
upload: ./test.txt to s3://tsota-bucket/test.txt    
バケットの中を確認
TSOTA@cloudshell:~$ bin/aws --endpoint-url https://s3.ap.cloud-object-storage.appdomain.cloud s3 ls tsota-bucket/
2020-12-08 16:18:55          5 test.txt
TSOTA@cloudshell:~$