Freigeben über


AzureFileCopy@5: Azure-Dateikopiervorgang v5

Kopieren Sie Dateien auf Azure Blob Storage oder virtuellen Computern.

Syntax

# 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.

Eingaben

SourcePath - Quelle
string. Erforderlich.

Der Speicherort der Quelldateien. Unterstützte Werte umfassen YAML-Pipelines und klassisches Release unterstützen vordefinierte Systemvariablen wie Build.Repository.LocalPath.

Releasevariablen werden nur in klassischen Releases unterstützt. Das Karte-Symbol (*) wird überall im Dateipfad oder Dateinamen unterstützt.


azureSubscription - Azure-Abonnement
Eingabealias: ConnectedServiceNameARM. string. Erforderlich.

Geben Sie den Namen einer Azure Resource Manager-Dienstverbindung an, die für das Abonnement konfiguriert ist, in dem sich der Azure-Zieldienst, der virtuelle Computer oder das Speicherkonto befindet. Weitere Informationen finden Sie unter Azure Resource Manager – Übersicht.


Destination - Zieltyp
string. Erforderlich. Zulässige Werte: AzureBlob (Azure Blob), AzureVMs (Azure-VMs).

Geben Sie den Zieltyp an.


storage - RM-Speicherkonto
Eingabealias: StorageAccountRM. string. Erforderlich.

Wählen Sie ein bereits vorhandenes ARM-Speicherkonto aus. Dies ist das Speicherkonto, das als Vermittler zum Kopieren von Dateien auf azure-VMs verwendet wird.


ContainerName - Containername
string. Erforderlich, wenn Destination = AzureBlob.

Der Name des Containers, in den Dateien kopiert werden. Wenn der angegebene Container nicht im Speicherkonto vorhanden ist, wird er erstellt.

Um ein virtuelles Verzeichnis im Container zu erstellen, verwenden Sie die Blobpräfixeingabe. Geben Sie beispielsweise für den Zielspeicherort https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/den Containernamen mycontainer und das Blobpräfix an: vd1/vd2.


BlobPrefix - Blobpräfix
string. Optional. Verwenden Sie , wenn Destination = AzureBlob.

Geben Sie ein Präfix für das virtuelle Zielverzeichnis im Azure Blob-Container an. Dies gilt, wenn der einen Feldhalter enthält, der SourcePath möglicherweise mit mehreren Elementen übereinstimmt.

Beispiel: Sie können eine Buildnummer anfügen, um den Dateien aus allen Blobs die gleiche Buildnummer voranzustellen.

Beispiel: Wenn Sie ein Blobpräfix myvd1angeben, wird ein virtuelles Verzeichnis im Container erstellt. Dateien werden aus der Quelle in https://myaccount.blob.core.windows.net/mycontainer/myvd1/kopiert.

Falls es sich bei dem SourcePath um ein einzelnes Element ohne Feldhalter handelt, fungiert dieses Blobpräfix als Zielblobname.


resourceGroup - Ressourcengruppe
Eingabealias: EnvironmentNameRM. string. Erforderlich, wenn Destination = AzureVMs.

Geben Sie den Namen der Zielressourcengruppe an, in die die Dateien kopiert werden sollen.


ResourceFilteringMethod - Computer nach auswählen
string. Optional. Verwenden Sie , wenn Destination = AzureVMs. Zulässige Werte: machineNames (Computernamen), tags. Standardwert. machineNames.

Geben Sie einen VM-Hostnamen oder -Tag an, der eine Teilmenge von VMs in einer Ressourcengruppe identifiziert. Tags werden nur für Ressourcen unterstützt, die über die Azure-Resource Manager erstellt wurden.


MachineNames - Filterkriterien
string. Optional. Verwenden Sie , wenn Destination = AzureVMs.

Geben Sie eine Liste von VM- oder Tagnamen an, die die VMs identifizieren, auf die die Aufgabe abzielen soll. Gültige Filterkriterien umfassen:

  • Der Name einer Azure-Ressourcengruppe.
  • Eine Ausgabevariable aus einer vorherigen Aufgabe.
  • Eine durch Trennzeichen getrennte Liste von Tagnamen oder VM-Namen.
  • Formatieren Sie VM-Namen mithilfe einer durch Trennzeichen getrennten Liste von FQDNs oder IP-Adressen.
  • Formatieren von Tagnamen für einen Filter als {TagName}:{Value} Beispiel: Role:DB;OS:Win8.1

vmsAdminUserName - Admin Anmeldung
string. Erforderlich, wenn Destination = AzureVMs.

Geben Sie den Benutzernamen eines Kontos mit Administratorberechtigungen für alle Ziel-VMs an.

  • Zu den unterstützten Formaten gehören : username, domain\username, machine-name\usernameund .\username.
  • UPN-Formate, einschließlich username@domain.com und integrierte Systemkonten, wie NT Authority\System z. B. werden nicht unterstützt.

vmsAdminPassword - Passwort
string. Erforderlich, wenn Destination = AzureVMs.

Geben Sie das Kennwort für den Parameter an Admin Login .

Suchen Sie nach dem Parameter, um die Admin Login Variable zu finden. Wählen Sie das Vorhängeschlosssymbol für eine Variable aus, die auf der Variables Registerkarte definiert ist, um den Wert zu schützen, und fügen Sie hier den Variablennamen ein.


TargetPath - Zielordner
string. Erforderlich, wenn Destination = AzureVMs.

Geben Sie den Pfad zu dem Ordner auf den azure-VMs an, in den Dateien kopiert werden sollen.

Umgebungsvariablen wie $env:windir und $env:systemroot werden unterstützt. Beispiele: $env:windir\FabrikamFiber\Web und c:\FabrikamFiber


AdditionalArgumentsForBlobCopy - Optionale Argumente (zum Hochladen von Dateien in ein Blob)
string.

Stellen Sie zusätzliche Argumente bereit, um sie AzCopy.exe beim Hochladen in das Blob und Herunterladen auf die VMs zu verwenden. Weitere Informationen finden Sie unter Übertragen von Daten mit dem AzCopy-Command-Line-Hilfsprogramm .

Verwenden Sie --blob-type=PageBlob für Storage Premium-Konten, die nur Azure-Seitenblobs unterstützen, als zusätzliches Argument.

Standardargumente sind --log-level=INFO (Standard) und --recursive (wenn der Containername nicht $rootist).


AdditionalArgumentsForVMCopy - Optionale Argumente (zum Herunterladen von Dateien auf einen virtuellen Computer)
string. Optional. Verwenden Sie , wenn Destination = AzureVMs.

Stellen Sie zusätzliche Argumente bereit, die AzCopy.exe beim Herunterladen auf virtuelle Computer wie --check-length=trueangewendet werden.

Wenn keine optionalen Argumente angegeben werden, werden standardmäßig Folgendes hinzugefügt:

  • --log-level=INFO
  • --log-level=DEBUG (Wenn die Pipeline im Debugmodus ausgeführt wird)
  • --recursive

sasTokenTimeOutInMinutes - ABLAUFZEITRAUM für SAS-Token in Minuten
string. Optional. Verwenden Sie , wenn Destination = AzureBlob. Standardwert. 240.

Geben Sie die Zeit in Minuten an, nach der das SAS-Token für den Container abläuft. Standardmäßig läuft dieses Token nach 4 Stunden ab.


enableCopyPrerequisites - Aktivieren der Kopiervoraussetzungen
boolean. Optional. Verwenden Sie , wenn Destination = AzureVMs. Standardwert. false.

Wenn diese Option aktiviert ist, verwendet diese Option ein selbstsigniertes Zertifikat, um den Windows-Remoteverwaltungslistener (Windows Remote Management, WinRM) über das HTTPS-Protokoll an Port 5986 zu konfigurieren. Diese Konfiguration ist erforderlich, um Kopiervorgänge auf Azure-VMs auszuführen. Gilt nur für ARM-VMs.

  • Wenn über einen Lastenausgleich auf die Ziel-VMs zugegriffen wird, konfigurieren Sie eine NAT-Regel für eingehenden Datenverkehr, um den Zugriff auf Port 5986 zuzulassen.
  • Wenn die Ziel-VMs einer Netzwerksicherheitsgruppe (NSG) zugeordnet sind, konfigurieren Sie eine Eingangssicherheitsregel, um den Zugriff auf Port 5986 zuzulassen.

CopyFilesInParallel - Parallel kopieren
boolean. Optional. Verwenden Sie , wenn Destination = AzureVMs. Standardwert. true.

Geben Sie an true , um Dateien parallel zu den Ziel-VMs zu kopieren.


CleanTargetBeforeCopy - Bereinigen des Ziels
boolean. Standardwert. false.

Geben Sie antrue, um den Zielordner vor dem Kopieren von Dateien zu sauber.


skipCACheck - Testzertifikat
boolean. Optional. Verwenden Sie , wenn Destination = AzureVMs. Standardwert. true.

WinRM erfordert ein Zertifikat für die HTTPS-Übertragung, wenn Dateien aus dem Zwischenspeicherblob in die Azure-VMs kopiert werden.

Wenn Sie ein selbstsigniertes Zertifikat verwenden, geben Sie an true , um zu verhindern, dass der Prozess das Zertifikat mit einer vertrauenswürdigen Zertifizierungsstelle überprüft.


Optionen für die Vorgangskontrolle

Alle Vorgänge verfügen zusätzlich zu ihren Eingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerungsoptionen und allgemeine Aufgabeneigenschaften.

Ausgabevariablen

Diese Aufgabe definiert die folgenden Ausgabevariablen, die Sie in Downstreamschritten, Aufträgen und Phasen verwenden können.

StorageContainerUri
URI des Containers, in den die Dateien kopiert wurden. Nur gültig, wenn das ausgewählte Ziel Azure Blob ist.

StorageContainerSasToken
SasToken für den Container, in den die Dateien kopiert wurden. Nur gültig, wenn das ausgewählte Ziel Azure Blob ist.

Hinweise

AzureFileCopy@5 unterstützt AzCopy.exe Version 10.12.2.

Hinweis

Sie können die Verwendung von Speicherkontoschlüsseln und SAS-Token in Ihren Speicherkonten blockieren . In diesen Situationen kann die aufgabe AzureFileCopy@5 , die auf SAS-Token basiert, nicht verwendet werden.

Der Task AzureFileCopy@6 verwendet stattdessen Azure RBAC für den Zugriff auf Blobspeicher. Dies erfordert die Identität der Dienstverbindung, die verwendet wird, um über die entsprechende RBAC-Rolle zu verfügen, z. B. Mitwirkender an Storage-Blobdaten. Weitere Informationen finden Sie unter Zuweisen einer Azure-Rolle für den Zugriff auf Blobdaten.

Der task AzureFileCopy@6 unterstützt auch Dienstverbindungen, die den Workloadidentitätsverbund verwenden.

Hinweis

Diese Aufgabe ist in PowerShell geschrieben und funktioniert nur , wenn sie auf Windows-Agents ausgeführt wird. Wenn Ihre Pipelines Linux-Agents erfordern und Dateien in ein Azure Storage-Konto kopieren müssen, sollten Sie alternativ befehle in der Azure CLI-Aufgabe ausführenaz storage blob.

In dieser Aufgabe werden Anwendungsdateien und andere Artefakte kopiert, die für die Installation der App erforderlich sind, z. B. PowerShell-Skripts, PowerShell-DSC-Module und andere.

Wenn Azure-VMs das Ziel sind, werden die Dateien zuerst in einen automatisch generierten Azure-Blobcontainer kopiert und dann auf die VMs heruntergeladen. Der Container wird gelöscht, nachdem die Dateien erfolgreich auf die VMs kopiert wurden.

Die Aufgabe verwendet AzCopy, das Befehlszeilenprogramm, das für das schnelle Kopieren von Daten aus und in Azure-Speicherkonten entwickelt wurde. Version 5 des Azure-Dateikopiertasks verwendet AzCopy V10.

Azure File Copy, Version 3 und niedriger, ruft den Azure Storage-Schlüssel ab, um Zugriff zu gewähren. Für Azure-Dateikopien, Version 4 und höher, muss Azure Storage über Microsoft Entra ID oder SAS-Token autorisiert werden. Die Authentifizierung mit einem Dienstprinzipal und einer verwalteten Identität ist verfügbar. Für verwaltete Identitäten wird nur die systemweite verwaltete Identität unterstützt. Die erforderliche Autorisierungsebene wird unter Option 1: Use Microsoft Entra ID angezeigt.

Verwenden Sie zum dynamischen Bereitstellen von Azure-Ressourcengruppen, die virtuelle Computer enthalten, die Aufgabe Bereitstellung von Azure-Ressourcengruppen. Diese Aufgabe enthält eine Beispielvorlage, die die erforderlichen Vorgänge ausführen kann, um das WinRM-HTTPS-Protokoll auf den VMs einzurichten, Port 5986 in der Firewall zu öffnen und das Testzertifikat zu installieren.

Hinweis

Wenn Sie die Bereitstellung in Azure Static Websites als Container in Blob Storage durchführen, verwenden Sie Version 2 oder höher der Aufgabe, um den namen des $web Containers beizubehalten.

Was sind die Azure PowerShell Voraussetzungen für die Verwendung dieser Aufgabe?

Die Aufgabe erfordert, dass Azure PowerShell auf dem Computer installiert ist, auf dem der Automatisierungs-Agent ausgeführt wird. Die empfohlene Version ist 1.0.2, aber die Aufgabe funktioniert ab Version 0.9.8. Sie können den Azure PowerShell Installer v1.0.2 verwenden, um diese Version zu erhalten.

Was sind die WinRM-Voraussetzungen für diese Aufgabe?

Die Aufgabe verwendet das HTTPS-Protokoll windows remote management (WinRM), um die Dateien aus dem Speicherblobcontainer auf die azure-VMs zu kopieren. Dies erfordert, dass der WinRM-HTTPS-Dienst auf den virtuellen Computern konfiguriert ist und ein geeignetes Zertifikat installiert ist.

Konfigurieren von WinRM nach Erstellung eines virtuellen Computers

Wenn die virtuellen Computer erstellt wurden, ohne die WinRM-HTTPS-Ports zu öffnen, führen Sie die folgenden Schritte aus:

  1. Konfigurieren Sie eine Zugriffsregel für eingehenden Datenverkehr, um HTTPS an Port 5986 jeder VM zuzulassen.
  2. Deaktivieren Sie UAC-Remoteeinschränkungen.
  3. Geben Sie die Anmeldeinformationen für die Aufgabe in der einfachen Form Benutzername ohne Domänenteil an, um mithilfe einer Anmeldung auf Administratorebene auf die VMs zuzugreifen.
  4. Installieren Sie ein Zertifikat auf dem Computer, auf dem der Automatisierungs-Agent ausgeführt wird.
  5. Wenn Sie ein selbstsigniertes Zertifikat verwenden, legen Sie den Parameter Testzertifikat der Aufgabe fest.

Welche Art von Dienstverbindung sollte ich auswählen?

  • Verwenden Sie für Azure Resource Manager-Speicherkonten und Azure Resource Manager-VMs einen Azure Resource Manager-Dienstverbindungstyp. Weitere Informationen finden Sie unter Automatisieren der Bereitstellung von Azure-Ressourcengruppen mithilfe eines Dienstprinzipals.

  • Bei Verwendung eines Azure Resource Manager-Dienstverbindungstyps filtert die Aufgabe automatisch die entsprechenden neueren Azure Resource Manager-Speicherkonten und andere Felder. Beispielsweise die Ressourcengruppe oder der Clouddienst und die VMs.

Wie kann ich ein Schul-, Geschäfts- oder Unikonto für diese Aufgabe erstellen?

Ein geeignetes Konto kann für die Verwendung in einer Dienstverbindung erstellt werden:

  1. Erstellen Sie über das Azure-Portal ein neues Benutzerkonto in Azure Active Directory.
  2. Fügen Sie das Azure Active Directory-Benutzerkonto der Gruppe „Co-Administratoren“ in Ihrem Azure-Abonnement hinzu.
  3. Melden Sie sich mit diesem Benutzerkonto beim Azure-Portal an, und ändern Sie das Kennwort.
  4. Verwenden Sie die Anmeldeinformationen dieses Kontos in der Dienstverbindung. Bereitstellungen werden dann mit diesem Konto verarbeitet.

Wenn die Aufgabe fehlschlägt, wird der Kopiervorgang fortgesetzt?

Da von AzCopy v10 keine Journaldateien unterstützt werden, kann der Kopiervorgang nicht fortgesetzt werden. Sie müssen die Aufgabe erneut ausführen, um alle Dateien zu kopieren.

Werden die Protokolldateien und Plandateien nach dem Kopieren bereinigt?

Die Protokoll- und Plandateien werden von der Aufgabe nicht gelöscht. Um die Dateien explizit zu sauber, fügen Sie dem Workflow mithilfe von azcopy-Aufträgen sauber einen CLI-Schritt hinzu.

Gewusst wie die Azure-Dateikopieraufgabe verwenden, um eine Datei auf einen virtuellen Azure-Computer zu kopieren, der keine öffentliche IP-Adresse hat?

Stellen Sie sicher, dass Sie Version 5 der Azure-Dateikopieraufgabe verwenden. Wenn die Aufgabe fehlschlägt, können Sie einen Buildschritt hinzufügen, um den Befehl azcopy cp "source-file-path" "destination-file-path" auszuführen, um die Quell- und Zielwerte zu ersetzen.

Unzulässiger Fehler: "AzCopy.exe beim Hochladen von Dateien in blob storage mit einem Exitcode beendet, der nicht null ist" während der Verwendung des Azure-Dateikopiertasks

Die gehosteten Agents werden bei jedem Auslösen eines Builds nach dem Zufallsprinzip zugewiesen, die AGENT-IP-Adressen unterscheiden sich bei jeder Ausführung. Wenn diese IP-Adressen nicht in Der Liste der zulässigen IP-Adressen enthalten sind, schlägt die Kommunikation zwischen Azure DevOps und dem Speicherkonto fehl. Führen Sie in solchen Szenarien die beschriebenen Schritte aus:

  1. Fügen Sie einen Buildschritt mithilfe der Azure CLI hinzu, um die IP-Adresse des Microsoft Hosted Build-Agents zur Laufzeit zu identifizieren. Die IP-Adresse wird der Netzwerkregel im Azure Storage-Konto hinzugefügt.
  2. Führen Sie den Buildschritt für Ihr Azure Storage-Konto aus.
  3. Fügen Sie einen weiteren Buildschritt mithilfe der Azure CLI hinzu, um die IP-Adresse des Build-Agents aus der Netzwerkregel "Azure Storage-Konto" zu entfernen.

Beispiele

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)

Anforderungen

Anforderung BESCHREIBUNG
Pipelinetypen YAML, Klassischer Build, klassisches Release
Wird ausgeführt auf Agent, DeploymentGroup
Forderungen Selbstgehostete Agents müssen über Funktionen verfügen, die den folgenden Anforderungen entsprechen, um Aufträge auszuführen, die diese Aufgabe verwenden: azureps
Capabilities Diese Aufgabe erfüllt keine Anforderungen an nachfolgende Aufgaben im Auftrag.
Befehlseinschränkungen Any
Setzbare Variablen Any
Agent-Version 1.103.0 oder höher
Aufgabenkategorie Bereitstellen