5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure Blob Storage REST APIをcurlで実行する方法

Posted at

サービスプリンシパル作成

  • Azure ADを選択して、[アプリの登録]→[新規登録]の順に選択します。
    image.png

  • アプリケーション名を入力します。他はデフォルトでOKです。
    image.png

  • 作成されるとアプリケーションの概要ページに遷移するため、[アプリケーションID]、[ディレクトリID]を控えておきます。
    image.png

  • 左メニューから[証明書とシークレット]を選択します。
    image.png

  • [新しいクライアントシークレット]を選択します。
    image.png

  • [説明]、[有効期限]を任意で入力して作成します。
    image.png

  • [値]を控えておきます。
    image.png

サービスプリンシパルに権限を付与する

  • 対象のストレージアカウントを選択し、左メニューより[アクセス制御(IAM)]を選択します。
    image.png

  • [追加]→[ロールの割り当ての追加]の順に選択します。ちなみにこのとき操作しているユーザが[所有者]もしくは[データアクセス管理者]の権限を持っていないと本操作は権限不足でできません。
    image.png

  • [ストレージBLOBデータ共同作成者]を選択します。
    image.png

  • [メンバーを選択する]を選択します。
    image.png

  • 先ほど作成したサービスプリンシパルを選択します。
    image.png

  • 以下のように追加されればOKです。
    image.png

  • 条件は特に設定せず次へ。最後に確認画面が出るので問題なければ設定します。
    image.png

アクセストークン取得

  • アクセストークンを取得して、変数tokenに代入します。
token=`curl -X POST https://login.microsoftonline.com/[AAD Tenant ID(Directory ID)]/oauth2/token -F grant_type=client_credentials -F resource=https://storage.azure.com/ -F client_id=[Clinet ID(Application ID)] -F client_secret=[Client Secret ID(token)] | jq -r .access_token`

List Blobs API

curl -X GET -L -H "Content-Type: application/json" -H "Authorization: Bearer $token" -H "x-ms-version: 2020-10-02" "https://[Storage Account Name].blob.core.windows.net/[Container Name]?restype=container&comp=list"

ダウンロードAPIも使えますが、結果がファイルそのものをダウンロードするというのはできず、ファイルの内容を取ってくる形になります。バイナリデータの場合は結果をファイル出力するなどの処理を実装する必要があります。

以上

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?