今回はAzure Blob Storageを操作するために、APEXのWeb資格証明を作成します。作成したWeb資格証明をAPEX_WEB_SERVICE.MAKE_REST_REQUESTに与えて、Azure Blob Storageを操作します。
前回の記事で準備したストレージアカウントおよびコンテナーをそのまま使用します。
Microsoft Entra IDの概要を開きます。テナントIDはOAuth2認証で呼び出すトークンURLに含めるため、記録しておきます。
サービスプリンシパルとなるアプリケーションを登録します。
アプリの登録を開きます。
登録をクリックします。
アプリケーション(クライアント)IDは、APEXのWeb資格証明に設定する値なので記録しておきます。
クライアントシークレットを開き、新しいクライアントシークレットをクリックします。
追加されたクライアントシークレットの値をコピーします。シークレットIDではありません。この値はAPEXでWeb資格証明を作成する際に使用します。
作成直後しか値を参照することはできないので、忘れずにコピーして記録しておきます。
APIのアクセス許可を開き、アクセス許可を追加します。
アクセス許可の追加をクリックします。
APIアクセス許可の要求が開きます。
Microsoft APIのAzure Storageを選択します。
アクセス許可のuser_impersonationにチェックを入れます。
アクセス許可の追加をクリックします。
アクセス許可としてuser_impersonationが追加されます。
これをクリックして開き、Resource App IDを確認します。
Resource App IDをコピーします。この値がOAuth2認証のスコープになります。
アクセス制御(IAM)を開き、ロールの割り当ての追加をクリックします。
割り当てるロールとしてストレージBLOBデータ所有者を選択します。
次へ進みます。
メンバーを選択するをクリックして、メンバーとして先ほど作成したアプリケーションAzure for APEXを選択します。
レビューと割り当てをクリックします。レビュー画面が表示されるので、再度レビューと割り当てをクリックします。
APEXの作業に移ります。
ワークスペース・ユーティリティのWeb資格証明を開きます。
作成をクリックします。
名前はAzure for APEX、静的IDはAZURE_FOR_APEXとします。認証タイプにOAuth2クライアント資格証明フローを選択します。
OAuthスコープとしてAPIのアクセス許可のuser_impersonationのResource App IDの末尾に/.defaultを加えた文字列を設定します。
クライアントIDまたはユーザー名には、アプリケーションAzure for APEXのアプリケーション(クライアント)IDを設定します。
クライアント・シークレットまたはパスワードに、クライアントシークレットの値を設定します。
作成をクリックします。
Web資格証明としてAzure for APEXが作成されました。
以上でAPEXからAzure Blob Storageを操作する準備ができました。
SQLワークショップのSQLコマンドから、Azure Blob Storageの操作を行います。
最初にファイルをアップロードします。以下のコードを実行します。
引数p_token_urlにOAuth2のアクセス・トークンを要求するURLを与えます。テナントIDの部分を置き換える必要があります。また、ストレージアカウントやコンテナーも環境に合わせて置き換えます。
本文がmy first uploadであるファイルをtest.txtとしてアップロードしています。
ファイルtest.txtがアップロードされたかどうか確認します。コンテナーに含まれるBlobを一覧します。