はじめに

ここではさくらのクラウドにアップされているファイルをAPIでダウンロードする方法を述べています.

前提条件

さくらのモノプラットフォームに契約しています.また,セキュアモバイルコネクトにてプロジェクトを作成してあり,ファイルがアップロードされているものとします.下の図はファイルが既にあることを表しています.今回,この中から001_20240613140707.jpgをダウンロードとファイル削除をしてみます.

01

 

実行環境

  • OS: Windows 11 
  • WSL2: Ubuntu

手順

まず,さくらのクラウドのページに行くため,下記のようにさくらのモノプラットフォームのページへ行き,さらにコントロールパネルログインを選択します.

02

 

 

ログイン後,下の図にあるAPIキーを選択します.

03

 

次に,操作したいAPIのアカウント名をクリックします.下の図ではぼやかしてありますが,ここにはアカウント名が表示されています.

04

 

次にプロジェクトを選択します.下の図ではぼやけていますが,そこにあるプロジェクトを選択します.

05

 

次にアクセストークンと,アクセストークンシークレットを得ます.これらの文字列はそれぞれSAKURACLOUD_ACCESS_TOKENと,SAKURACLOUD_ACCESS_TOKEN_SECRETとして使用しますので,どこかへメモしておいてください.

06

 

次にプロジェクトIDを取得します.下の図のようにサービス一覧からセキュアモバイルコネクトを選択します.

07

 

次に下の図のようにモノプラットフォーム→プロジェクトによりプロジェクトの一覧(ここではぼやかしてあります)を表示します.そして操作したプロジェクトを選択します.

 08

 

そうすると,リソースIDを取得することができます.こちらの数値を後ほどPROJECT_IDとして定義し,使用しますのでメモをしておいてください.

09

 

次にWSL2にてUbuntuを立ち上げます.これまで得てきた文字列や数値を環境変数として定義します.下表の左列が環境変数,右列がその内容となります.

環境変数 内容
SAKURACLOUD_ACCESS_TOKEN アクセストークン
SAKURACLOUD_ACCESS_TOKEN_SECRET アクセストークンシークレット
PROJECT_ID リソースID
FILE_ID ファイル名

 

例えばFILE_IDであればファイル名001_20240613140707.jpgであれば,Ubuntuで次のように記入します.同様に他の環境変数についても記入してください.

export FILE_ID=001_20240613140707.jpg

次に以下にあるcurlコマンドを入力します.

curl -u "$SAKURACLOUD_ACCESS_TOKEN:$SAKURACLOUD_ACCESS_TOKEN_SECRET" \
-X GET \
https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/commonserviceitem/$PROJECT_ID/iotplatform/vmgw/files/$FILE_ID/download

これにより,次に示すようなJSON形式のレスポンスがあります.

{"IoTPlatform":
  {"vmgw":"113501793538",
  "name":"001_20240613142707.jpg",
  "mime_type":"image\/jpeg",
  "size":3576,
  "url":"https:\/\/s3.isk01.sakurastorage.jp\/iot-core-prod\/113501793538\/073f702f-fbb7-4822-a855-5191ba4d7f55?AWSAccessKeyId=AYQ3AX6ZZO1Z5QNVPCNT\u0026Signature=o%2BQUK55NUsSsyU7nIKewR7txRUk%3D\u0026Expires=1720427272"},
"is_ok":true}

この中のurlの値(つまりhttpsから始まるもの)を使って画像ファイルをダウンロードします.ただし,このままではバックスラッシュや&マークに対応する\u0026を変換する必要があります.この変換方法をpythonで行う方法を示します.

python3

>> import re
>>url="上記のurl"
>>print(re.sub(r"\\","",url))

これにより,下に示すようなURLが得られます.

"https://s3.isk01.sakurastorage.jp/iot-core-prod/113501793538/073f702f-fbb7-4822-a855-5191ba4d7f55?AWSAccessKeyId=AYQ3AX6ZZO1Z5QNVPCNT&Signature=SndtBaUs4Yb1iac5HnitoHKXoL0%3D&Expires=1720426881"

これをcurlにより画像を得ます.

curl -s "https://s3.isk01.sakurastorage.jp/iot-core-prod/113501793538/073f702f-fbb7-4822-a855-5191ba4d7f55?AWSAccessKeyId=AYQ3AX6ZZO1Z5QNVPCNT&Signature=SndtBaUs4Yb1iac5HnitoHKXoL0%3D&Expires=1720426881" --output 出力ファイル名

上記により,出力ファイル名が得られます.