次の方法で共有


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 など) が含まれます。

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


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

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


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

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


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

既存の ARM ストレージ アカウントを指定します。 これは、Azure VM にファイルをコピーするための仲介役として使用されるストレージ アカウントです。


ContainerName - コンテナー名の
stringDestination = AzureBlobする場合に必要です。

ファイルのコピー先となるコンテナーの名前。 指定したコンテナーがストレージ アカウントに存在しない場合は、作成されます。

コンテナー内に仮想ディレクトリを作成するには、BLOB プレフィックス入力を使用します。 たとえば、ターゲットの場所 https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/では、コンテナー名の mycontainer と BLOB プレフィックスを指定します:vd1/vd2


BlobPrefix - BLOB プレフィックスの
string。 任意。 Destination = AzureBlobするときに使用します。

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

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

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


resourceGroup - リソース グループの
入力エイリアス: EnvironmentNameRMstringDestination = 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 - 管理者ログイン
stringDestination = AzureVMsする場合に必要です。

すべてのターゲット VM に対する管理アクセス許可を持つアカウントのユーザー名を指定します。

  • サポートされている形式は、username___domain\usernamemachine-name\username、および .\usernameです。
  • username@___domain.comNT Authority\System などの組み込みのシステム アカウントを含む UPN 形式はサポートされていません。

vmsAdminPassword - パスワード
stringDestination = AzureVMsする場合に必要です。

Admin Login パラメーターのパスワードを指定します。

変数を見つけるには、 Admin Login パラメーターを見つけます。 「 Variables 」タブで定義された変数の南京錠アイコンを選択して値を保護し、ここに変数名を挿入します。


宛先フォルダーのTargetPath - する
stringDestination = 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 を使用します。

デフォルトの引数には、 --log-level=INFO (デフォルト) と --recursive (コンテナ名が $rootでない場合) が含まれます。


AdditionalArgumentsForVMCopy - オプションの引数 (VM にファイルをダウンロードする場合)
string。 任意。 Destination = AzureVMsするときに使用します。

VM にダウンロードするときに適用される AzCopy.exe 追加の引数 ( --check-length=true など) を VM に指定します。

オプションの引数が指定されていない場合は、デフォルトで次のものが追加されます。

  • --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

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


クリーン ターゲット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 は AzCopy.exe バージョン 10.8.0 をサポートしています。

このタスクは 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 File Copy バージョン 4 以降では 、Microsoft Entra ID または SAS トークンを使用して Azure Storage を承認する必要があります。 サービス プリンシパルとマネージド ID を使用した認証を使用できます。 マネージド ID の場合、システム全体のマネージド ID のみがサポートされます。 必要な承認のレベルは、「 オプション 1: Microsoft Entra ID を使用する」に示されています。

仮想マシンを含む Azure リソース グループを動的にデプロイするには、Azure リソース グループのデプロイ タスクを使用します。 このタスクには、VM で WinRM HTTPS プロトコルを設定し、ファイアウォールでポート 5986 を開き、テスト証明書をインストールするために必要な操作を実行できるサンプル テンプレートがあります。

Azure 静的 Web サイトに BLOB ストレージ内のコンテナーとしてデプロイする場合は、$web コンテナー名を保持するために、バージョン 2 以降のタスクを使用します。

このタスクは、Azure Active Directory に基づく認証をサポートします。 サービス プリンシパルとマネージド ID を使用した認証を使用できます。 マネージド ID の場合、システム全体のマネージド ID のみがサポートされます。

このタスクを使用するための Azure PowerShell の前提条件は何ですか?

このタスクでは、Automation エージェントを実行しているマシンに Azure PowerShell がインストールされている必要があります。 推奨バージョンは 1.0.2 ですが、タスクはバージョン 0.9.8 以降で動作します。 これは、 Azure PowerShell インストーラー v1.0.2 を使用して取得できます。

このタスクの WinRM の前提条件は何ですか?

このタスクでは、Windows リモート管理 (WinRM) HTTPS プロトコルを使用して、ストレージ BLOB コンテナーから Azure VM にファイルをコピーします。 これには、VM で WinRM HTTPS サービスが構成され、適切な証明書がインストールされている必要があります。

仮想マシンの作成後に WinRM を構成する

VM が WinRM HTTPS ポートを開かずに作成された場合は、次の手順を実行します。

  1. 各 VM のポート 5986 で HTTPS を許可するように受信アクセス規則を構成します。
  2. UAC リモート制限 無効にします。
  3. 管理者レベルのログインを使用して VM にアクセスするためのタスクの資格情報を指定します。これは、ドメイン部分を含まない単純な 形式のユーザー名 です。
  4. Automation エージェントを実行するコンピューターに証明書をインストールします。
  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 jobs clean を使用してワークフローに CLI ステップを追加します。

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

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

禁止エラー: Azure ファイル コピー タスクの使用中に、AzCopy.exe BLOB ストレージにファイルをアップロードする際に 0 以外の終了コードで終了しました

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

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

例示

- 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
の需要 セルフホステッド エージェントには、このタスクを使用するジョブを実行するための 要求に一致する 機能 が必要です。
機能 このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 [任意]
設定可能な変数 [任意]
エージェントのバージョン 1.103.0 以上
タスク カテゴリ 展開