概要
プロキシの背後でAzCopyを使う場合、AzCopyはシステムのプロキシ設定を使用するようです。認証プロキシ経由でも、この設定で実行できました。ただしドキュメント等での確認ができておらず、バージョン依存する可能性はあります。
詳細
プロキシの背後でAzCopyを使う場合、AzCopyはシステムのプロキシ設定を使用するようです。
- Windows … OS(=Internet ExplorerまたはEdgeブラウザ)のプロキシ設定
- Linux … 環境変数
HTTPS_PROXY
認証プロキシ(プロキシが認証を求めてくる)場合、Linuxでは環境変数HTTPS_PROXY
に認証情報も含めることで対応できました。Windowsでは不明なのですが、上記プロキシ設定だけで対応できています(ブラウザでの認証結果が記憶されていて使われているのではと思われます)。
上記についてはドキュメント等では情報を確認できておらず、以下の動作確認結果による推測です。
Linuxでの確認結果
Ubuntu 16.04.5(ただしBash on Ubuntu on Windows)とAzCopy 7.2.0の環境で確認しています。
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.5 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.5 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
$ azcopy --version
azcopy 7.2.0-netcore
環境変数HTTPS_PROXY
を設定してazcopyを実行した結果、ファイル取得に成功しました。なお$PROXYID
と$PROXYPW
はそれぞれプロキシの認証情報、$AZSA
と$AZCON
と$AZKEY
はそれぞれAzureのストレージアカウント、コンテナ名、アクセスキーを格納してあります。
$ export HTTPS_PROXY="http://${PROXYID}:${PROXYPW}@proxy.example.com:8080"
$ azcopy --source "https://${AZSA}.blob.core.windows.net/${AZCON}/test.txt" --destination "./test.txt" --source-key $AZKEY
Finished 1 of total 1 file(s).
[2018/08/15 10:56:00] Transfer summary:
-----------------
Total files transferred: 1
Transfer successfully: 1
Transfer skipped: 0
Transfer failed: 0
Elapsed time: 00.00:00:05
続けて環境変数HTTPS_PROXY
を削除してazcopyを実行した結果、ファイル取得に失敗しました。
$ export -n HTTPS_PROXY
$ azcopy --source "https://${AZSA}.blob.core.windows.net/${AZCON}/test.txt" --destination "./test.txt" --source-key $AZKEY
[2018/08/15 11:11:27][ERROR] Error parsing source location "https://tsukamoto180723.blob.core.windows.net/vcli/test.txt": Source with location type Blob doesn't exist.
Windowsでの確認結果
Windows 10(1703)とAzCopy 7.1.0の環境で確認しています。
c:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy>.\azcopy
------------------------------------------------------------------------------
AzCopy 7.1.0 Copyright (c) 2017 Microsoft Corp. All Rights Reserved.
------------------------------------------------------------------------------
# AzCopy is designed for high-performance uploading, downloading, and copying
data to and from Microsoft Azure Blob, File, and Table storage.
IEでプロキシ設定がされている状態で、azcopyを実行した結果、ファイル取得に成功しました。なお%AZSA%
と%AZCON%
と%AZKEY%
はそれぞれAzureのストレージアカウント、コンテナ名、アクセスキーを格納してあります。
c:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy>azcopy /Source:https://%AZSA%.blob.core.windows.net/%AZCON%/date.txt /Dest:%USERPROFILE%\Downloads\date.txt /SourceKey:%AZKEY%
[2018/08/15 16:47:37] Transfer summary:
-----------------
Total files transferred: 1
Transfer successfully: 1
Transfer skipped: 0
Transfer failed: 0
Elapsed time: 00.00:00:30
IEのプロキシ設定を無効化してazcopyを実行した結果、ファイル取得に失敗しました。
c:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy>azcopy /Source:https://%AZSA%.blob.core.windows.net/%AZCON%/date.txt /Dest:%USERPROFILE%\Downloads\date.txt /SourceKey:%AZKEY%
[2018/08/15 16:54:58][ERROR] Error parsing source location "https://tsukamoto180723.blob.core.windows.net/vcli/date.txt": Source with location type Blob doesn't exist.
使用しているのは「Linuxでの確認結果」と同じ認証プロキシです(なぜか認証情報は聞かれていません)。
参照
AzCopyの公式なドキュメントは以下になります。プロキシについての情報は見つけられませんでした。
- AzCopy on Windows を使用して Azure Storage にデータをコピーまたは移動する | Microsoft Docs
- AzCopy on Linux で Azure Storage にデータをコピーまたは移動する | Microsoft Docs
以下ではAzCopy.exe.config
を作成する方法などが紹介されており、旧版では有用なのかもしれません。
- AzCopy – Unable to connect to the remote server – It's getting cloudy!
- Odity - AZCopy - The server returned an error: (407) Proxy Authentication Required
本ページ内容は筆者が参照の便のためにある時点でまとめた個人的なメモです。内容を保証するものではなく、また筆者の所属組織等とは一切かかわりがありません。