AzureFileCopy@4 - Azure ファイル コピー v4 タスク

ファイルをAzure Blob Storageまたは仮想マシンにコピーします。

注意

このタスクでは、ワークフロー ID フェデレーションを使用した Azure Resource Manager認証はサポートされていません。

構文

# Azure file copy v4
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@4
  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. Optional. Use when Destination = AzureVMs. Clean Target. Default: false.
    #skipCACheck: true # boolean. Optional. Use when Destination = AzureVMs. Test Certificate. Default: true.

入力

SourcePath - ソース
string. 必須です。

ソース ファイルの場所。 サポートされる値には、YAML パイプラインとクラシック リリースで、Build.Repository.LocalPath などの定義済みのシステム変数がサポートされています

リリース変数は、クラシック リリースでのみサポートされます。 ワイルド カード シンボル (*) は、ファイル パスまたはファイル名の任意の場所でサポートされています。


azureSubscription - Azure サブスクリプション
入力エイリアス: ConnectedServiceNameARMstring. 必須です。

ターゲットの Azure サービス、仮想マシン、またはストレージ アカウントがあるサブスクリプション用に構成された Azure Resource Manager サービス接続の名前を指定します。 詳細については、Azure Resource Manager の概要に関するページを参照してください。


Destination - 送信先の種類
string. 必須です。 使用できる値: AzureBlob (Azure BLOB) AzureVMs 、(Azure VM)。

変換先の種類を指定します。


storage - RM ストレージ アカウント
入力エイリアス: StorageAccountRMstring. 必須です。

既存の 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を使用します。

ファイルのフィルター処理に使用できるプレフィックスを指定します。

例: ビルド番号を追加して、同じビルド番号を持つすべての BLOB のファイルをフィルター処理できます。

例: BLOB プレフィックス myvd1を指定すると、コンテナー内に仮想ディレクトリが作成されます。 ファイルは、ソースから に https://myaccount.blob.core.windows.net/mycontainer/myvd1/コピーされます。


resourceGroup - リソース グループ
入力エイリアス: EnvironmentNameRMstring. 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\usernamedomain\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\Webc:\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を使用します。

など--check-length=true、VM に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 でコピー操作を実行するために必要です。

  • ターゲット VM にロード バランサーを介してアクセスする場合は、ポート 5986 でのアクセスを許可するように受信 NAT 規則を構成します。
  • ターゲット VM がネットワーク セキュリティ グループ (NSG) に関連付けられている場合は、ポート 5986 でのアクセスを許可するように受信セキュリティ規則を構成します。

CopyFilesInParallel - 並列でのコピー
boolean. 省略可能。 の場合は Destination = AzureVMsを使用します。 既定値: true

を指定 true して、ターゲット VM に並列でファイルをコピーします。


CleanTargetBeforeCopy - ターゲットをクリーンにする
boolean. 省略可能。 の場合は Destination = AzureVMsを使用します。 既定値: false

ファイルをコピーする前に、コピー先フォルダーをクリーンするように指定trueします。


skipCACheck - テスト証明書
boolean. 省略可能。 の場合は Destination = AzureVMsを使用します。 既定値: true

WinRM では、中間ストレージ BLOB から Azure VM にファイルをコピーするときに、HTTPS 転送用の証明書が必要です。

自己署名証明書を使用する場合は、 を指定 true して、プロセスが信頼された CA を使用して証明書を検証できないようにします。


タスク制御オプション

すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。

出力変数

このタスクでは、ダウンストリームのステップ、ジョブ、およびステージで使用できる次の 出力変数を定義します。

StorageContainerUri
ファイルがコピーされたコンテナーの URI。 選択した宛先が Azure BLOB の場合にのみ有効です。

StorageContainerSasToken
ファイルのコピー先のコンテナーの SasToken。 選択した宛先が Azure BLOB の場合にのみ有効です。

注釈

AzureFileCopy@4では、バージョン 10.8.0 AzCopy.exe サポートされています。

注意

このタスクは PowerShell で記述され、Windows エージェントで実行されている場合 にのみ 機能します。 Linux エージェントが必要なパイプラインで、ファイルを Azure Storage アカウントにコピーする必要がある場合は、代わりに、Azure CLI タスクaz storage blob コマンドを実行することを検討してください。

タスクは、PowerShell スクリプト、PowerShell-DSC モジュールなど、アプリをインストールするために必要なアプリケーション ファイルやその他の成果物をコピーするために使用されます。

ターゲットが Azure VM の場合、ファイルは最初に自動的に生成された Azure BLOB コンテナーにコピーされ、その後 VM にダウンロードされます。 ファイルが VM に正常にコピーされると、コンテナーが削除されます。

このタスクでは、Azure ストレージ アカウントとの間でデータを高速にコピーするために構築されたコマンド ライン ユーティリティである AzCopy を使用します。 Azure ファイル コピー タスクのバージョン 4 では 、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 Active Directory に基づく認証がサポートされています。 サービス プリンシパルとマネージド ID を使用した認証を使用できます。 マネージド ID の場合、システム全体のマネージド ID のみがサポートされます。

このタスクを使用するための 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 が作成された場合は、次の手順を実行します。

  1. 各 VM のポート 5986 で HTTPS を許可するようにインバウンド アクセス規則を構成します。
  2. UAC リモート制限を無効にします。
  3. タスクがドメイン部分のない単純な形式 username の管理者レベル ログインを使用して VM にアクセスするための資格情報を指定します。
  4. 自動化エージェントを実行するマシンに証明書をインストールします。
  5. 自己署名証明書を使用している場合は、タスクの Test Certificate パラメーターを設定します。

どの種類のサービス接続を選択する必要がありますか?

  • Azure Resource Manager ストレージ アカウントと Azure Resource Manager VM の場合は、Azure Resource Manager サービス接続の種類を使用します。 「サービス プリンシパルを使用した Azure リソース グループのデプロイの自動化」を参照してください。

  • Azure Resource Manager サービス接続の種類を使用しているとき、タスクは該当するより新しい Azure Resource Manager ストレージ アカウントとその他のフィールドを自動的にフィルター処理します。 たとえば、リソース グループやクラウド サービス、VM などです。

このタスクで使用する学校または職場アカウントを作成するには、どうすればよいですか?

サービス接続で使用するために適切なアカウントを作成できます。

  1. Azure portal を使用して、Azure Active Directory に新しいユーザー アカウントを作成します。
  2. Azure サブスクリプションで共同管理者グループに Azure Active Directory ユーザー アカウントを追加します。
  3. このユーザー アカウントで Azure portal にサインインし、パスワードを変更します。
  4. サービス接続でこのアカウントの資格情報を使用します。 その後、このアカウントを使用してデプロイが処理されます。

タスクが失敗した場合、コピーは再開されますか?

AzCopy V10 ではジャーナル ファイルがサポートされていないため、タスクでコピーを再開することはできません。 すべてのファイルをコピーするには、タスクをもう一度実行する必要があります。

ログ ファイルとプラン ファイルはコピー後にクリーンアップされますか?

ログ ファイルとプラン ファイルはタスクによって削除されません。 ファイルを明示的にクリーンするには、azcopy ジョブ クリーンを使用して、ワークフローに CLI ステップを追加します。

Azure ファイル コピー タスクを使用して、パブリック IP アドレスを持たない Azure 仮想マシンにファイルをコピーするには、どうすればよいですか?

Azure ファイル コピー タスクのバージョン 4 を使用していることを確認します。 タスクが失敗した場合は、ビルド ステップを追加してコマンド azcopy cp "source-file-path" "destination-file-path" を実行し、ソースとターゲットの値を置き換えることができます。

Azure File Copy タスクを使用中の禁止エラー: 'AzCopy.exe は、ファイルを Blob Storage にアップロードするときに 0 以外の終了コードで終了しました'

ホストされるエージェントは、ビルドがトリガーされるたびにランダムに割り当てられます。 エージェントの IP アドレス は、実行ごとに異なります。 これらの IP アドレスが許可されている IP のリストにない場合、Azure DevOps とストレージ アカウント間の通信は失敗します。 このようなシナリオでは、次の手順に従います。

  1. Azure CLI を使用してビルド ステップを追加し、実行時に Microsoft Hosted Build エージェントの IP アドレスを識別します。 Azure ストレージ アカウントのネットワーク規則に IP アドレスが追加されます。
  2. Azure Storage アカウントのビルド 手順を実行します。
  3. Azure CLI を使用して別のビルド ステップを追加し、Azure ストレージ アカウントネットワーク規則からビルド エージェントの IP アドレスを削除します。

- task: AzureFileCopy@4
  inputs:
    SourcePath: 'Readme.md'
    azureSubscription: 'Azure'
    Destination: 'AzureBlob'
    storage: 'storageAccount'
    ContainerName: 'containerName'
    BlobPrefix: ''
  name: AzureFileCopy
  
- script: | 
    echo $(AzureFileCopy.StorageContainerUri)
    echo $(AzureFileCopy.StorageContainerSasToken)

要件

要件 説明
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
実行日 エージェント、DeploymentGroup
確認要求 セルフホステッド エージェントには、このタスクを使用するジョブを実行するための次の要求に一致する機能が必要です。
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン 1.103.0 以上
タスクのカテゴリ 配置