AzureFileCopy@5 - Azure ファイル コピー v5 タスク
Azure Blob Storageまたは仮想マシンにファイルをコピーします。
注意
このタスクでは、ワークフロー ID フェデレーションを使用した Azure Resource Manager認証はサポートされていません。
構文
# Azure file copy v5
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@5
inputs:
SourcePath: # string. Required. Source.
azureSubscription: # string. Alias: ConnectedServiceNameARM. Required. Azure Subscription.
Destination: # 'AzureBlob' | 'AzureVMs'. Required. Destination Type.
storage: # string. Alias: StorageAccountRM. Required. RM Storage Account.
#ContainerName: # string. Required when Destination = AzureBlob. Container Name.
#BlobPrefix: # string. Optional. Use when Destination = AzureBlob. Blob Prefix.
#resourceGroup: # string. Alias: EnvironmentNameRM. Required when Destination = AzureVMs. Resource Group.
#ResourceFilteringMethod: 'machineNames' # 'machineNames' | 'tags'. Optional. Use when Destination = AzureVMs. Select Machines By. Default: machineNames.
#MachineNames: # string. Optional. Use when Destination = AzureVMs. Filter Criteria.
#vmsAdminUserName: # string. Required when Destination = AzureVMs. Admin Login.
#vmsAdminPassword: # string. Required when Destination = AzureVMs. Password.
#TargetPath: # string. Required when Destination = AzureVMs. Destination Folder.
#AdditionalArgumentsForBlobCopy: # string. Optional Arguments (for uploading files to blob).
#AdditionalArgumentsForVMCopy: # string. Optional. Use when Destination = AzureVMs. Optional Arguments (for downloading files to VM).
#sasTokenTimeOutInMinutes: '240' # string. Optional. Use when Destination = AzureBlob. SAS Token Expiration Period In Minutes. Default: 240.
#enableCopyPrerequisites: false # boolean. Optional. Use when Destination = AzureVMs. Enable Copy Prerequisites. Default: false.
#CopyFilesInParallel: true # boolean. Optional. Use when Destination = AzureVMs. Copy in Parallel. Default: true.
#CleanTargetBeforeCopy: false # boolean. Clean Target. Default: false.
#skipCACheck: true # boolean. Optional. Use when Destination = AzureVMs. Test Certificate. Default: true.
入力
SourcePath
- ソース
string
. 必須です。
ソース ファイルの場所。 サポートされる値には、YAML パイプラインや、Build.Repository.LocalPath などの定義済みのシステム変数がクラシック リリースでサポートされています。
リリース変数は、クラシック リリースでのみサポートされます。 ワイルド カード シンボル (*) は、ファイル パスまたはファイル名の任意の場所でサポートされています。
azureSubscription
- Azure サブスクリプション
入力エイリアス: ConnectedServiceNameARM
。 string
. 必須です。
ターゲットの Azure サービス、仮想マシン、またはストレージ アカウントがあるサブスクリプション用に構成された Azure Resource Manager サービス接続の名前を指定します。 詳細については、Azure Resource Manager の概要に関するページを参照してください。
Destination
- 送信先の種類
string
. 必須です。 使用できる値: AzureBlob
(Azure Blob)、 AzureVMs
(Azure VM)。
変換先の種類を指定します。
storage
- RM ストレージ アカウント
入力エイリアス: StorageAccountRM
。 string
. 必須です。
既存の ARM ストレージ アカウントを指定します。 これは、Azure VM にファイルをコピーするための仲介役として使用されるストレージ アカウントです。
ContainerName
- コンテナー名
string
. Destination = AzureBlob
の場合に必要です。
ファイルのコピー先となるコンテナーの名前。 指定したコンテナーがストレージ アカウントに存在しない場合は、作成されます。
コンテナー内に仮想ディレクトリを作成するには、BLOB プレフィックス入力を使用します。 たとえば、ターゲットの場所https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/
に対して、コンテナー名mycontainer
と BLOB プレフィックスを指定します。 vd1/vd2
BlobPrefix
- BLOB プレフィックス
string
. 省略可能。 の場合は Destination = AzureBlob
を使用します。
Azure Blob コンテナー内の宛先仮想ディレクトリのプレフィックスを指定します。 これは、 に SourcePath
複数の項目と一致する可能性のあるワイルドカードが含まれている場合に適用されます。
例: ビルド番号を追加して、すべての BLOB のファイルの先頭に同じビルド番号を付けることができます。
例: BLOB プレフィックス myvd1
を指定すると、コンテナー内に仮想ディレクトリが作成されます。 ファイルはソースから に https://myaccount.blob.core.windows.net/mycontainer/myvd1/
コピーされます。
がワイルドカードのない単一の項目である場合 SourcePath
、この BLOB プレフィックスは宛先 BLOB 名として機能します。
resourceGroup
- リソース グループ
入力エイリアス: EnvironmentNameRM
。 string
. Destination = AzureVMs
の場合に必要です。
ファイルのコピー先となるターゲット リソース グループの名前を指定します。
ResourceFilteringMethod
- 以下の条件でコンピューターを選択
string
. 省略可能。 の場合は Destination = AzureVMs
を使用します。 使用できる値: machineNames
(マシン名)、 tags
。 既定値: machineNames
。
リソース グループ内の VM のサブセットを識別する VM ホスト名またはタグを指定します。 タグは、Azure Resource Manager経由で作成されたリソースでのみサポートされます。
MachineNames
- フィルター条件
string
. 省略可能。 の場合は Destination = AzureVMs
を使用します。
タスクの対象となる VM を識別する VM 名またはタグ名の一覧を指定します。 有効なフィルター条件には、次のものが含まれます。
- Azure リソース グループの名前。
- 前のタスクの出力変数。
- タグ名または VM 名のコンマ区切りのリスト。
- FQDN または IP アドレスのコンマ区切りリストを使用して VM 名を書式設定します。
- フィルターのタグ名を例として
{TagName}:{Value}
書式設定します。Role:DB;OS:Win8.1
vmsAdminUserName
- 管理者ログイン
string
. Destination = AzureVMs
の場合に必要です。
すべてのターゲット VM に対する管理アクセス許可を持つアカウントのユーザー名を指定します。
- サポートされている形式は、
username
、、machine-name\username
domain\username
、および.\username
です。 - などの組み込みのシステム アカウントを
NT Authority\System
含むusername@domain.com
UPN 形式はサポートされていません。
vmsAdminPassword
- パスワード
string
. Destination = AzureVMs
の場合に必要です。
パラメーターのパスワードを Admin Login
指定します。
変数を見つけるには、 パラメーターを Admin Login
見つけます。 タブで定義されている変数の南京錠アイコンを Variables
選択して値を保護し、変数名をここに挿入します。
TargetPath
- ターゲット フォルダー
string
. Destination = AzureVMs
の場合に必要です。
ファイルのコピー先となる Azure VM 内のフォルダーへのパスを指定します。
$env:windir
、$env:systemroot
などの環境変数がサポートされています。 例: $env:windir\FabrikamFiber\Web
、c:\FabrikamFiber
AdditionalArgumentsForBlobCopy
- オプションの引数 (BLOB へのファイルのアップロード用)
string
.
BLOB にアップロードして VM に AzCopy.exe
ダウンロードするときに使用する追加の引数を指定します。 詳細については、「 AzCopy Command-Line ユーティリティを使用してデータを転送 する」を参照してください。
Azure ページ BLOB のみをサポートする Premium ストレージ アカウントの場合は、追加の引数として を使用 --blob-type=PageBlob
します。
既定の引数には、(既定値) と --recursive
(コンテナー名が でない$root
場合) が含まれます--log-level=INFO
。
AdditionalArgumentsForVMCopy
- オプションの引数 (VM へのファイルのダウンロード用)
string
. 省略可能。 の場合は Destination = AzureVMs
を使用します。
など、VM --check-length=true
にAzCopy.exe
ダウンロードするときに適用される に追加の引数を指定します。
省略可能な引数が指定されていない場合は、既定で次が追加されます。
--log-level=INFO
--log-level=DEBUG
(パイプラインがデバッグ モード セットで実行されている場合)--recursive
sasTokenTimeOutInMinutes
- SAS トークンの有効期間 (分)
string
. 省略可能。 の場合は Destination = AzureBlob
を使用します。 既定値: 240
。
コンテナーの SAS トークンの有効期限が切れる時間を分単位で指定します。 既定では、このトークンは 4 時間後に期限切れになります。
enableCopyPrerequisites
- コピーの前提条件を有効にする
boolean
. 省略可能。 の場合は Destination = AzureVMs
を使用します。 既定値: false
。
有効にすると、このオプションでは自己署名証明書を使用して、ポート 5986 の HTTPS プロトコルを介して Windows リモート管理 (WinRM) リスナーを構成します。 この構成は、Azure VM でコピー操作を実行するために必要です。 ARM VM にのみ適用されます。
- ターゲット VM にロード バランサー経由でアクセスする場合は、ポート 5986 でのアクセスを許可するように受信 NAT 規則を構成します。
- ターゲット VM がネットワーク セキュリティ グループ (NSG) に関連付けられている場合は、ポート 5986 でのアクセスを許可するように受信セキュリティ規則を構成します。
CopyFilesInParallel
- 並列でのコピー
boolean
. 省略可能。 の場合は Destination = AzureVMs
を使用します。 既定値: true
。
を指定 true
して、ターゲット VM に並列でファイルをコピーします。
CleanTargetBeforeCopy
- ターゲットをクリーンにする
boolean
. 既定値: false
。
ファイルをコピーする前に、コピー先フォルダーをクリーンするように指定true
します。
skipCACheck
- テスト証明書
boolean
. 省略可能。 の場合は Destination = AzureVMs
を使用します。 既定値: true
。
WinRM では、中間ストレージ BLOB から Azure VM にファイルをコピーするときに、HTTPS 転送用の証明書が必要です。
自己署名証明書を使用する場合は、 を指定 true
して、プロセスが信頼された CA を使用して証明書を検証できないようにします。
タスク制御オプション
すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。
出力変数
このタスクでは、ダウンストリームのステップ、ジョブ、およびステージで使用できる次の 出力変数を定義します。
StorageContainerUri
ファイルのコピー先のコンテナーの URI。 選択した宛先が Azure BLOB の場合にのみ有効です。
StorageContainerSasToken
ファイルのコピー先のコンテナーの SasToken。 選択した宛先が Azure BLOB の場合にのみ有効です。
注釈
AzureFileCopy@5では、バージョン 10.12.2 AzCopy.exe サポートされています。
注意
ストレージ アカウントでのストレージ アカウント キーと SAS トークンの使用を ブロック する場合があります。 このような状況では、SAS トークンに依存する AzureFileCopy@5 タスクを使用できません。
AzureFileCopy@6 タスクでは、代わりに Azure RBAC を使用して BLOB ストレージにアクセスします。 これには、 ストレージ BLOB データ共同作成者など、適切な RBAC ロールを持つサービス接続の ID が必要です。 「BLOB データにアクセスするための Azure ロールを割り当てる」を参照してください。
AzureFileCopy@6 タスクでは、ワークロード ID フェデレーションを使用するサービス接続もサポートされます。
注意
このタスクは PowerShell で記述され、Windows エージェントで実行 する場合にのみ 機能します。 Linux エージェントが必要なパイプラインで、ファイルを Azure Storage アカウントにコピーする必要がある場合は、代わりに、Azure CLI タスクで az storage blob
コマンドを実行することを検討してください。
タスクは、PowerShell スクリプト、PowerShell-DSC モジュールなど、アプリをインストールするために必要なアプリケーション ファイルやその他の成果物をコピーするために使用されます。
ターゲットが Azure VM の場合、ファイルは最初に自動的に生成された Azure BLOB コンテナーにコピーされ、その後 VM にダウンロードされます。 ファイルが VM に正常にコピーされると、コンテナーが削除されます。
このタスクでは、Azure ストレージ アカウントとの間でデータを高速にコピーするために構築されたコマンド ライン ユーティリティである AzCopy を使用します。 Azure ファイル コピー タスクのバージョン 5 では 、AzCopy V10 が使用されます。
Azure File Copy バージョン 3 以前では、アクセスを提供するために Azure Storage キーが取得されます。 Azure ファイル コピー バージョン 4 以降では、Microsoft Entra IDまたは SAS トークンを使用して Azure Storage を承認する必要があります。 サービス プリンシパルとマネージド ID を使用した認証を使用できます。 マネージド ID の場合、システム全体のマネージド ID のみがサポートされます。 必要な承認レベルは、「オプション 1: Microsoft Entra IDを使用する」に示されています。
仮想マシンを含む Azure リソース グループを動的にデプロイするには、Azure リソース グループのデプロイ タスクを使用します。 このタスクには、VM で WinRM HTTPS プロトコルを設定し、ファイアウォールでポート 5986 を開き、テスト証明書をインストールするために必要な操作を実行できるサンプル テンプレートがあります。
注意
Blob Storage のコンテナーとして Azure Static Websites にデプロイする場合は、$webコンテナー名を保持するために、バージョン 2 以降のタスクを使用します。
このタスクを使用するための Azure PowerShell の前提条件は何ですか?
タスクでは、自動化エージェントを実行しているマシンにAzure PowerShellがインストールされている必要があります。 推奨されるバージョンは 1.0.2 ですが、タスクはバージョン 0.9.8 以降で動作します。 Azure PowerShell インストーラー v1.0.2 を使用してこれを取得できます。
このタスクの WinRM の前提条件は何ですか?
このタスクでは、Windows リモート管理 (WinRM) HTTPS プロトコルを使用して、ストレージ BLOB コンテナーから Azure VM にファイルをコピーします。 これには、WinRM HTTPS サービスが VM に構成され、適切な証明書がインストールされている必要があります。
仮想マシンの作成後に WinRM を構成する
WinRM HTTPS ポートを開かずに VM が作成された場合は、次の手順を実行します。
- 各 VM のポート 5986 で HTTPS を許可するようにインバウンド アクセス規則を構成します。
- UAC リモート制限を無効にします。
- タスクがドメイン部分のない単純な形式 username の管理者レベル ログインを使用して VM にアクセスするための資格情報を指定します。
- 自動化エージェントを実行するマシンに証明書をインストールします。
- 自己署名証明書を使用している場合は、タスクの Test Certificate パラメーターを設定します。
どの種類のサービス接続を選択する必要がありますか?
Azure Resource Manager ストレージ アカウントと Azure Resource Manager VM の場合は、Azure Resource Manager サービス接続の種類を使用します。 「サービス プリンシパルを使用した Azure リソース グループのデプロイの自動化」を参照してください。
Azure Resource Manager サービス接続の種類を使用しているとき、タスクは該当するより新しい Azure Resource Manager ストレージ アカウントとその他のフィールドを自動的にフィルター処理します。 たとえば、リソース グループやクラウド サービス、VM などです。
このタスクで使用する学校または職場アカウントを作成するには、どうすればよいですか?
サービス接続で使用するために適切なアカウントを作成できます。
- Azure portal を使用して、Azure Active Directory に新しいユーザー アカウントを作成します。
- Azure サブスクリプションで共同管理者グループに Azure Active Directory ユーザー アカウントを追加します。
- このユーザー アカウントで Azure portal にサインインし、パスワードを変更します。
- サービス接続でこのアカウントの資格情報を使用します。 その後、このアカウントを使用してデプロイが処理されます。
タスクが失敗した場合、コピーは再開されますか?
AzCopy V10 ではジャーナル ファイルがサポートされていないため、タスクでコピーを再開することはできません。 すべてのファイルをコピーするには、タスクをもう一度実行する必要があります。
ログ ファイルとプラン ファイルはコピー後にクリーンアップされますか?
ログ ファイルとプラン ファイルはタスクによって削除されません。 ファイルを明示的にクリーンするには、azcopy ジョブ クリーンを使用して、ワークフローに CLI ステップを追加します。
Azure ファイル コピー タスクを使用して、パブリック IP アドレスを持たない Azure 仮想マシンにファイルをコピーするには、どうすればよいですか?
Azure ファイル コピー タスクのバージョン 5 を使用していることを確認します。 タスクが失敗した場合は、ビルド ステップを追加してコマンド azcopy cp "source-file-path" "destination-file-path"
を実行し、ソースと宛先の値を置き換えることができます。
Azure File Copy タスクを使用中の禁止エラー: 'AzCopy.exe は、ファイルを Blob Storage にアップロードするときに 0 以外の終了コードで終了しました'
ホストされるエージェントは、ビルドがトリガーされるたびにランダムに割り当てられます。 エージェントの IP アドレス は実行ごとに異なります。 これらの IP アドレスが許可されている IP のリストにない場合、Azure DevOps とストレージ アカウント間の通信は失敗します。 このようなシナリオでは、次の手順に従います。
- 実行時に Microsoft Hosted Build エージェントの IP アドレスを識別するために、Azure CLI を使用してビルド ステップを追加します。 Azure ストレージ アカウントのネットワーク規則に IP アドレスが追加されます。
- Azure Storage アカウントのビルド 手順を実行します。
- Azure CLI を使用して別のビルド ステップを追加し、Azure Storage アカウントネットワーク規則からビルド エージェントの IP アドレスを削除します。
例
trigger:
- main
pool:
vmImage: windows-latest
steps:
- task: AzureFileCopy@5
inputs:
SourcePath: 'Readme.md'
azureSubscription: 'MyAzureSubscription'
Destination: 'AzureBlob'
storage: 'MyStorage'
ContainerName: 'MyContainerName'
name: AzureFileCopy
- script: |
echo $(AzureFileCopy.StorageContainerUri)
echo $(AzureFileCopy.StorageContainerSasToken)