次の方法で共有


AzureFileCopy@3 - Azure ファイル コピー v3 タスク

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

このバージョンの AzureFileCopy タスクでは廃止されたバージョンの AzCopy が使用されるため、このタスクは非推奨になりました。 最新バージョンの AzureFileCopy タスクを使用します。 v8 v10の AzCopy 移行ガイドを参照してください。

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

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

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

構文

# Azure file copy v3
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@3
  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). 
    #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.
  # Output
    #outputStorageUri: # string. Storage Container URI. 
    #outputStorageContainerSasToken: # string. Storage Container SAS Token. 
    #sasTokenTimeOutInMinutes: # string. SAS Token Expiration Period In Minutes.

入力

SourcePath - ソース
string。 必須。

ソース フォルダーの絶対パス、またはローカル コンピューター上のファイル、または UNC 共有を指定します。 $(Build.Repository.LocalPath)など、定義済みのシステム変数を使用できます。 *.zip などのワイルドカードを含む名前はサポートされていません。 指定する値または式は、1 つのフォルダーまたはファイル名を返す必要があります。


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.1ffwebffdb、またはタグ (Role:DBWebOS:Win8.1など)。

注: タグの有効な区切り記号には、,(コンマ)、:(colon)、および ;(semicolon が含まれます。 複数のタグを指定すると、タスクは指定されたタグを含む VM でのみ実行されます。 既定では、タスクはすべての VM で実行されます。


vmsAdminUserName - 管理者ログイン
stringDestination = AzureVMsする場合に必要です。

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

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

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

VM の管理者パスワードを指定します。

有効な入力には、ビルド パイプラインまたはリリース パイプラインで定義されている変数 ($(passwordVariable)など) が含まれます。 パスワードをセキュリティで保護するには、secretとしてマークします。


宛先フォルダーのTargetPath - する
stringDestination = AzureVMsする場合に必要です。

ファイルのコピー先となる Azure VM 内のフォルダーへのパスを指定します。

$env:windir$env:systemroot などの環境変数がサポートされています。 例: $env:windir\FabrikamFiber\Webc:\FabrikamFiber


AdditionalArgumentsForBlobCopy - 省略可能な引数 (BLOB にファイルをアップロードする場合)
string

AzCopy.exeなどの BLOB にアップロードするときに適用できる /NC:10 に追加の引数を指定します。

省略可能な引数が指定されていない場合は、既定で次の引数が追加されます。

  • /Y
  • /SetContentType
  • /Z
  • /V
  • /S - コンテナー名が $rootされていない場合に追加されます。
  • 指定したストレージ アカウントが Premium アカウントの場合に /BlobType:page -Added します。
  • /Pattern - ソース パスがファイルの場合に追加されます。 その他の指定された省略可能な引数に含まれます。

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

AzCopy.exeなどの VM にダウンロードするときに適用できる /NC:10 に追加の引数を指定します。

省略可能な引数が指定されていない場合は、既定で次のものが追加されます。

  • /Y
  • /S
  • /Z
  • /V

コピーの前提条件を有効にする enableCopyPrerequisites -
boolean。 任意 Destination = AzureVMsするときに使用します。 既定値: false.

有効にすると、自己署名証明書を使用して、HTTPS プロトコルではなく、ポート 5986 で Windows リモート管理 (WinRM) リスナーを構成します。 Azure VM でコピー操作を実行するために必要です。 ターゲット VM でロード バランサーを使用する場合は、ターゲット ポート (5986) の受信 NAT 規則を構成します。 ARM VM にのみ適用されます。 ネットワーク セキュリティ グループ (NSG) に関連付けられているターゲット VM で、ポート 5986 へのアクセスを許可するように受信セキュリティ規則を構成します。


並列でのコピーの CopyFilesInParallel -
boolean。 任意 Destination = AzureVMsするときに使用します。 既定値: true.

ターゲット VM に並列でファイルをコピーする true を指定します。 この値を使用すると、アクションの実行にかかる全体的な時間を短縮できます。


クリーン ターゲットCleanTargetBeforeCopy -
boolean。 任意 Destination = AzureVMsするときに使用します。 既定値: false.

この値を true に設定すると、コピー操作を実行する前に、コピー先フォルダーがクリーンアップされます。


skipCACheck - テスト証明書の
boolean。 任意 Destination = AzureVMsするときに使用します。 既定値: true.

HTTPS 経由で接続する前に、サーバー証明書が信頼された CA によって署名されたかどうかは、既定値では検証されません。


ストレージ コンテナー URIoutputStorageUri -
string

ファイルのコピー先のストレージ コンテナー URI に使用する変数の名前を指定します。 選択した宛先が Azure BLOB の場合にのみ有効です。


ストレージ コンテナー SAS トークンoutputStorageContainerSasToken -
string

コピーされたファイルにアクセスするストレージ コンテナー SAS トークンに使用される変数の名前を指定します。 この変数は、後続のタスクへの入力として使用します。 既定では、SAS トークンは 4 時間後に期限切れになります。


sasTokenTimeOutInMinutes - SAS トークンの有効期限 (分)
string

SAS トークンの有効期限が切れる時間を分単位で指定します。 選択した宛先が Azure BLOB の場合にのみ有効です。


タスク コントロールのオプション

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

出力変数

なし。

注釈

バージョン AzureFileCopy@3の新機能

  • AzureFileCopy@3は Az Module をサポートし、Azure クラシック サービス エンドポイントのサポートを停止しました。

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

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

  • このタスクでは、Azure ストレージ アカウントとの間でデータをすばやくコピーするために構築されたコマンド ライン ユーティリティである AzCopy を使用します。 タスク バージョン 3 以下では、AzCopy V7 が使用されます。

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

Blob Storage のコンテナーとして Azure Static Websites にデプロイする場合は、$web コンテナー名を保持するために、バージョン 2 以降を使用します。

よくあるご質問

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

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

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

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

WinRM HTTPS ポートを開かずに VM を作成する場合は、次の手順に従います。

  1. 各 VM のポート 5986 で HTTPS を許可するように受信アクセス規則を構成します。
  2. UAC リモート制限 無効にします。
  3. ドメイン参照なしでユーザー名 形式の管理者レベルのログインを使用して、タスクが VM にアクセスするための資格情報を指定します。
  4. Automation エージェントを実行するコンピューターに証明書をインストールします。
  5. 自己署名証明書のタスクの Test Certificate パラメーターを設定します。

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

次の表に、ストレージ アカウントの種類と関連するサービス接続を示します。 ストレージ アカウントがクラシック API または Resource Manager API のいずれに基づいているかを特定するには、Azure portal にログインし、ストレージ アカウント (クラシック) または ストレージ アカウントを検索

ストレージ アカウントの種類 TFS/TS での Azure サービス接続
リソースマネージャー Azure Resource Manager サービス接続
クラシック 学校または職場アカウントを使用した証明書ベースまたは資格情報ベースの認証を使用した Azure サービス接続
  • Azure クラシック リソースの場合は、証明書または資格情報ベースの認証で Azure サービス接続の種類 を使用します。 資格情報ベースの認証を使用している場合は、資格情報が 学校または職場アカウント用であることを確認します。 joe@live.comjoe@hotmail.com などの Microsoft アカウントはサポートされていません。

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

  • Azure Resource Manager サービス接続の種類、または証明書ベースの認証で Azure サービス接続の種類 を使用している場合、タスクは、適切なクラシック ストレージ アカウント、新しい Azure Resource Manager ストレージ アカウント、およびその他のフィールドを自動的にフィルター処理します。 たとえば、リソース グループやクラウド サービス、仮想マシンなどです。

現在、資格情報ベースの認証を使用して Azure サービス接続の種類を しても、ストレージ、リソース グループまたはクラウド サービス、仮想マシンの各フィールドはフィルター処理されません。

エラー '403: このアクセス許可を使用してこの操作を実行する権限がありません' を修正するにはどうすればよいですか?

Azure DevOps は、Azure へのサービス接続を作成して承認すると、サブスクリプションの Active Directory にアプリ登録を作成します。 この ID は、承認を選択したリソース グループ内のすべてのリソースに、Contributor ロールを持つ自動的に追加されます。 BLOB をストレージ アカウントにアップロードするために、Contributor十分なではありません。 Storage Blob Data Contributor ロールをアプリ登録 IDに手動で割り当てる必要があります。

IAM ペインに表示される Contributor として、既存の継承されたエントリからアプリ ID をコピーし、Add role assignment UI で明示的に検索します。 ID はドロップダウンリストに表示されません。その識別子を検索する必要があります。

リソース グループにクラシック VM と Resource Manager VM の両方が含まれている場合はどうなりますか?

指定したリソース グループに Azure Resource Manager とクラシック VM の両方が含まれている場合、対象となる VM のセットは接続の種類によって異なります。

  • 証明書ベースの接続と資格情報ベースの接続の場合、コピー操作はクラシック VM でのみ実行されます。
  • サービス プリンシパル名ベースの接続の場合、コピー操作は Resource Manager VM でのみ実行されます。

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

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

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

例示

# Example: Upload files from Pipeline staging directory to blob storage.
- task: AzureFileCopy@3
  displayName: 'Example Step Name'
  inputs:
    sourcePath: '$(Build.ArtifactStagingDirectory)/BlobsToUpload'
    additionalArgumentsForBlobCopy: |
      '/Y' # Supresses all AZCopy Confirmations. Used here to allow overwrites
      '/Pattern:*' # Pattern of files to copy.
      '/S' # Recursive Copy
    azureSubscription: 'Subscription Name'
    destination: AzureBlob
    storage: storageaccountname
    containerName: storagecontainername
    blobPrefix: targetdirectoryincontainer

必要条件

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