none
LogicAppsを使用したBlobStorage間のコピー方法 RRS feed

  • 質問

  • LogicAppsを使用してAzureBlobStorageのコンテナーから別のAzureBlobStorageのコンテナーへ、BLOBをコピーしたいと考えています。
    LogicAppsの「BLOBのコピー」を選択すると、コピー元が「ソースURL」を入力するようになっており、コンテナーのURLを直接指定しています。
    指定したコンテナーの「パブリックアクセスレベル」設定内容にて、動作に差異が出ます。
    ・「プライベート」⇒コピー不可 404エラー
    ・「BLOB」⇒コピー成功
    ・「コンテナー」⇒コピー成功
    「パブリックアクセスレベル」設定としては、「プライベート」とした状態でコピーしたいです。
    実現方法について、ご教授お願い致します。
    2019年4月25日 0:32

回答

  • suji6さん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信頂きありがとうございます。

    プライベートコンテナー(ソースコンテナー)に対してSAS(読み取りアクセス許可)を取得/生成し、次のように生成されたSASを使用してソースurlを構築できます。


    テスト結果:

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    • 回答としてマーク suji6 2019年5月13日 5:13
    2019年5月10日 7:45
    モデレータ

すべての返信

  • suji6さん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    プライベートアクセスレベルのコンテナから別のコンテナにBLOBをコピーする場合は、以下のように、ソースURLのSAS URIをBLOBに指定/提供してみてください。


    テスト結果:

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年4月29日 6:57
    モデレータ
  • Harukaさん

    suji6です。回答ありがとうございます。

    初心者でもうしわけないのですが、追加でご教授いただきたく宜しくお願い致します。

    「sig」に指定する文字列はどこから取得すればいいでしょうか?アクセスキーとは別でしょうか?

    また、コピー元に追加されたBLOBをファイル名は指定せずに、動的にコピーしたいのですが、方法はありますでしょうか?

    2019年5月7日 3:04
  • Harukaさん

    suji6です。

    「sig」は「Azure Storage Explorer」で作成できました。

    ファイルを指定して作成した「sig」で指定してコピー可能なところまで確認できました。

    実現したい、コピー元に格納したBLOBの「SAS URI」を動的に指定し、コピーする方法がありましたら、ご教授お願いします。

    2019年5月7日 4:48
  • suji6さん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信頂きありがとうございます。

    まず、Shared Access Signature(SAS)の詳細については、このドキュメントを参照してください。
    https://docs.microsoft.com/ja-jp/azure/storage/common/storage-dotnet-shared-access-signature-part-1

    また、ファイル/ BLOB名を指定せずにBLOBをコンテナから別のコンテナにコピーする場合は、
    まずそれらを一覧表示し、次に戻り値をループ処理して各項目をコピー先のコンテナにコピーします。(下記スクリーンショットのように)


    注意:
    Source urlにconcat('https://xxxx.blob.core.windows.net',items('For_each')?['Path'])を設定します。
    Destination blob pathにconcat('testcontainer/',items('For_each')?['DisplayName'])を設定します。

    テスト結果:

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~
    2019年5月8日 5:43
    モデレータ
  • Harukaさん

    何度も回答ありがとうございます。

    一覧から、ループで各BLOBをコピーできることは理解しました。

    ただ、教えていただいた方法では、SASを指定しないので、プライベートアクセスレベルだと404エラーになります。

    Source urlにSASを指定して一覧からループしてコピーすることは可能でしょうか?

    concat('https://xxxx.blob.core.windows.net',items('For_each')?['Path'])

    の「xxxx.blob.core.windows.net」をコンテナーのSAS URLを指定してもNGでした。

    2019年5月9日 3:56
  • suji6さん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信頂きありがとうございます。

    プライベートコンテナー(ソースコンテナー)に対してSAS(読み取りアクセス許可)を取得/生成し、次のように生成されたSASを使用してソースurlを構築できます。


    テスト結果:

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    • 回答としてマーク suji6 2019年5月13日 5:13
    2019年5月10日 7:45
    モデレータ