Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Copie archivos en Azure Blob Storage o máquinas virtuales.
Esta tarea está en desuso, ya que esta versión de la tarea AzureFileCopy usa una versión retirada de AzCopy. Use la versión más reciente de la tarea AzureFileCopy. Consulte Guía de migración de AzCopy para v8 a v10.
Nota:
Esta tarea no admite autenticación de Azure Resource Manager con la federación de identidades de flujo de trabajo.
Copie archivos en Azure Blob Storage o máquinas virtuales.
Nota:
Esta tarea no admite autenticación de Azure Resource Manager con la federación de identidades de flujo de trabajo.
Sintaxis
# 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.
Entradas
SourcePath
-
origen
string
. Obligatorio.
Especifique la ruta de acceso absoluta de la carpeta de origen o el archivo en el equipo local o un recurso compartido UNC. Puede usar variables del sistema predefinidas, como $(Build.Repository.LocalPath)
. No se admiten nombres que contengan caracteres comodín como *.zip
. El valor o expresión que especifique debe devolver una sola carpeta o un nombre de archivo.
azureSubscription
-
de suscripción de Azure
Alias de entrada: ConnectedServiceNameARM
.
string
. Obligatorio.
Especifique el nombre de una conexión de servicio de Azure Resource Manager configurada para la suscripción donde se encuentra el servicio de Azure de destino, la máquina virtual o la cuenta de almacenamiento. Consulte información general de Azure Resource Manager para más información.
tipo de destino de Destination
-
string
. Obligatorio. Valores permitidos: AzureBlob
(Blob de Azure), AzureVMs
(máquinas virtuales de Azure).
Especifique el tipo de destino.
storage
-
de cuenta de almacenamiento de RM
Alias de entrada: StorageAccountRM
.
string
. Obligatorio.
Especifique una cuenta de almacenamiento arm existente previamente. Esta es la cuenta de almacenamiento que se usa como intermediario para copiar archivos en máquinas virtuales de Azure.
ContainerName
-
nombre de contenedor
string
. Obligatorio cuando Destination = AzureBlob
.
Nombre del contenedor en el que se copian los archivos. Si el contenedor especificado no existe en la cuenta de almacenamiento, se creará.
Para crear un directorio virtual dentro del contenedor, use la entrada del prefijo de blob. Por ejemplo, para la ubicación de destino https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/
, especifique el nombre del contenedor mycontainer
y el prefijo de blob: vd1/vd2
.
de prefijo de blob de BlobPrefix
-
string
. Opcional. Use cuando Destination = AzureBlob
.
Especifique un prefijo que se pueda usar para filtrar archivos.
Ejemplo: puede anexar un número de compilación para filtrar los archivos de todos los blobs con el mismo número de compilación.
Ejemplo: si especifica un prefijo de blob myvd1
, se crea un directorio virtual dentro del contenedor. Los archivos se copian del origen en https://myaccount.blob.core.windows.net/mycontainer/myvd1/
.
de grupo de recursos de resourceGroup
-
Alias de entrada: EnvironmentNameRM
.
string
. Obligatorio cuando Destination = AzureVMs
.
Especifique el nombre del grupo de recursos de destino en el que se copiarán los archivos.
ResourceFilteringMethod
-
Seleccionar máquinas por
string
. Opcional. Use cuando Destination = AzureVMs
. Valores permitidos: machineNames
(nombres de máquina), tags
. Valor predeterminado: machineNames
.
Especifique un nombre de host o etiqueta de máquina virtual que identifique un subconjunto de máquinas virtuales de un grupo de recursos. etiquetas solo se admiten para los recursos creados a través de Azure Resource Manager.
MachineNames
-
criterios de filtro
string
. Opcional. Use cuando Destination = AzureVMs
.
Proporcione una lista de nombres de máquina virtual o nombres de etiqueta que identifiquen las máquinas virtuales a las que se dirige la tarea. Los criterios de filtro válidos incluyen:
- Nombre de un grupo de recursos de Azure .
- Variable de salida de una tarea anterior.
- Una lista delimitada por comas de nombres de etiqueta o nombres de máquina virtual.
- Dar formato a los nombres de máquina virtual mediante una lista separada por comas de FQDN o direcciones IP.
- Dar formato a los nombres de etiqueta de un filtro como
{TagName}:{Value}
. Ejemplo:Role:DB;OS:Win8.1
,ffweb
,ffdb
o etiquetas comoRole:DB
,Web
,OS:Win8.1
.
Nota: Los delimitadores válidos para las etiquetas incluyen ,(coma), :(colon) y ;(semicolon). Al proporcionar varias etiquetas, la tarea solo se ejecutará en las máquinas virtuales que contienen las etiquetas especificadas. De forma predeterminada, la tarea se ejecuta en todas las máquinas virtuales.
de inicio de sesión de administrador de vmsAdminUserName
-
string
. Obligatorio cuando Destination = AzureVMs
.
Proporcione el nombre de usuario de una cuenta con permisos administrativos en todas las máquinas virtuales de destino.
- Entre los formatos admitidos se incluyen:
username
,___domain\username
,machine-name\username
y.\username
. - No se admiten formatos UPN, como
username@___domain.com
y cuentas de sistema integradas, comoNT Authority\System
.
de contraseña de vmsAdminPassword
-
string
. Obligatorio cuando Destination = AzureVMs
.
Proporcione la contraseña de administrador de las máquinas virtuales.
La entrada válida incluye variables definidas en canalizaciones de compilación o versión, como $(passwordVariable)
. Para proteger una contraseña, marque como secret
.
carpeta de destino de TargetPath
-
string
. Obligatorio cuando Destination = AzureVMs
.
Especifique la ruta de acceso a la carpeta de las máquinas virtuales de Azure en las que se copiarán los archivos.
Se admiten variables de entorno como $env:windir
y $env:systemroot
. Ejemplos: $env:windir\FabrikamFiber\Web
y c:\FabrikamFiber
AdditionalArgumentsForBlobCopy
-
argumentos opcionales (para cargar archivos en blob)
string
.
Proporcione argumentos adicionales para AzCopy.exe
que se pueden aplicar al cargar en blobs, como /NC:10
.
Si no se especifica ningún argumento opcional, los argumentos siguientes se agregan de forma predeterminada.
/Y
/SetContentType
/Z
/V
-
/S
: se agrega cuando el nombre del contenedor no es$root
. -
/BlobType:page
-Added cuando la cuenta de almacenamiento especificada es una cuenta Premium. -
/Pattern
: se agrega cuando la ruta de acceso de origen es un archivo. Se incluye con cualquier otro argumento opcional especificado.
AdditionalArgumentsForVMCopy
-
argumentos opcionales (para descargar archivos en la máquina virtual)
string
. Opcional. Use cuando Destination = AzureVMs
.
Proporcione argumentos adicionales para AzCopy.exe
que se pueden aplicar al descargar en máquinas virtuales como /NC:10
.
Si no se especifica ningún argumento opcional, se agregan de forma predeterminada lo siguiente.
/Y
/S
/Z
/V
enableCopyPrerequisites
-
habilitar los requisitos previos de copia
boolean
. Opcional. Use cuando Destination = AzureVMs
. Valor predeterminado: false
.
Cuando se habilita, usa un certificado autofirmado para configurar un agente de escucha de Administración remota de Windows (WinRM) en el puerto 5986 en lugar del protocolo HTTPS. Necesario para realizar la operación de copia en máquinas virtuales de Azure. Si las máquinas virtuales de destino usan un equilibrador de carga, configure reglas NAT de entrada para el puerto de destino (5986). Solo se aplica a las máquinas virtuales arm. En las máquinas virtuales de destino asociadas a un grupo de seguridad de red (NSG), configure una regla de seguridad de entrada para permitir el acceso en el puerto 5986.
copia de CopyFilesInParallel
- en en paralelo
boolean
. Opcional. Use cuando Destination = AzureVMs
. Valor predeterminado: true
.
Especifique true
para copiar archivos en paralelo a las máquinas virtuales de destino. El uso de este valor puede reducir el tiempo total necesario para realizar la acción.
CleanTargetBeforeCopy
-
de destino limpio
boolean
. Opcional. Use cuando Destination = AzureVMs
. Valor predeterminado: false
.
Al establecer este valor en true
limpia la carpeta de destino antes de realizar la acción de copia.
skipCACheck
-
de certificado de prueba
boolean
. Opcional. Use cuando Destination = AzureVMs
. Valor predeterminado: true
.
El valor predeterminado no validará si un ca de confianza firmó el certificado de servidor antes de conectarse a través de HTTPS.
outputStorageUri
-
URI del contenedor de almacenamiento
string
.
Especifique el nombre de la variable usada para el URI del contenedor de almacenamiento al que se copiaron los archivos. Válido solo cuando el destino seleccionado es un blob de Azure.
outputStorageContainerSasToken
-
token de SAS del contenedor de almacenamiento
string
.
Especifique el nombre de la variable usada para el token de SAS del contenedor de almacenamiento que tiene acceso a los archivos que se copiaron. Use esta variable como entrada para las tareas posteriores. De forma predeterminada, el token de SAS expira después de 4 horas.
sasTokenTimeOutInMinutes
-
período de expiración del token de SAS en minutos
string
.
Especifique el tiempo en minutos después del cual expirará el token de SAS. Válido solo cuando el destino seleccionado es Azure Blob.
Opciones de control de tareas
Todas las tareas tienen opciones de control además de sus entradas de tarea. Para obtener más información, consulte Opciones de control y propiedades de tareas comunes.
Variables de salida
Ninguno.
Observaciones
Novedades de la versión AzureFileCopy@3
AzureFileCopy@3 admite Az Module y ha dejado de admitir el punto de conexión de servicio clásico de Azure.
La tarea se usa para copiar archivos de aplicación y otros artefactos necesarios para instalar la aplicación, como scripts de PowerShell, módulos PowerShell-DSC, etc.
Cuando el destino es máquinas virtuales de Azure, los archivos se copian primero en un contenedor de blobs de Azure generado automáticamente y, a continuación, se descargan en las máquinas virtuales. El contenedor se elimina después de que los archivos se copien correctamente en las máquinas virtuales.
La tarea usa AzCopy, la utilidad de línea de comandos creada para copiar rápidamente datos desde y en cuentas de Azure Storage. La versión 3 o inferior de la tarea usa AzCopy V7.
Para implementar dinámicamente grupos de recursos de Azure que contienen máquinas virtuales, use la tarea implementación del grupo de recursos de Azure. Esta tarea tiene una plantilla de ejemplo que puede realizar las operaciones necesarias para configurar el protocolo HTTPS de WinRM en máquinas virtuales, abrir el puerto 5986 en el firewall e instalar el certificado de prueba.
Nota:
Si va a implementar en Azure Static Websites como contenedor en Blob Storage, use versión 2 o superior para conservar el nombre del contenedor de $web.
Preguntas más frecuentes
¿Cuáles son los requisitos previos de Azure PowerShell para usar esta tarea?
La tarea requiere que Azure PowerShell esté instalado en la máquina que ejecuta el agente de automatización. La versión recomendada es 1.0.2, pero la tarea funciona con la versión 0.9.8 y posteriores. Use instalador de Azure PowerShell v1.0.2 para obtener la versión recomendada.
¿Cuáles son los requisitos previos de WinRM para esta tarea?
La tarea usa el protocolo HTTPS de WinRM para copiar los archivos del contenedor de blobs de almacenamiento en las máquinas virtuales de Azure. El servicio HTTPS de WinRM debe configurarse en las máquinas virtuales y un certificado adecuado instalado.
Si las máquinas virtuales se crean sin abrir los puertos HTTPS de WinRM, siga estos pasos:
- Configure una regla de acceso de entrada para permitir HTTPS en el puerto 5986 de cada máquina virtual.
- Deshabilite restricciones remotas de UAC.
- Especifique las credenciales de la tarea para acceder a las máquinas virtuales mediante un inicio de sesión de nivel de administrador con el formato nombre de usuario sin ninguna referencia de dominio.
- Instale un certificado en la máquina que ejecuta el agente de automatización.
- Establezca el certificado de prueba parámetro de la tarea para un certificado autofirmado.
¿Qué tipo de conexión de servicio debo elegir?
En la tabla siguiente se enumeran los tipos de cuenta de almacenamiento y las conexiones de servicio asociadas. Para identificar si una cuenta de almacenamiento se basa en las API clásicas o en las API de Resource Manager, inicie sesión en el Azure Portal y busque cuentas de Storage (clásico) o cuentas de almacenamiento .
Tipo de cuenta de almacenamiento | Conexiones de servicio de Azure en TFS/TS |
---|---|
Administrador de recursos | Conexión del servicio Azure Resource Manager |
Clásico | Conexión de servicio de Azure con autenticación basada en certificados o basada en credenciales mediante una cuenta profesional o educativa |
En el caso de los recursos clásicos de Azure, use un tipo de conexión de servicio de azure con autenticación basada en credenciales o certificados. Si usa la autenticación basada en credenciales, asegúrese de que las credenciales son para una cuenta profesional o educativa de . No se admiten cuentas de Microsoft como
joe@live.com
yjoe@hotmail.com
.En el caso de las máquinas virtuales de Azure Resource Manager, use un tipo de conexión de servicio Azure Resource Manager. Para más información, consulte Automatización de la implementación del grupo de recursos de Azure mediante una entidad de servicio.
Si usa un tipo de conexión de servicio Azure Resource Manager o un tipo de conexión de servicio Azure con autenticación basada en certificados, la tarea filtra automáticamente las cuentas de almacenamiento clásicas adecuadas, las cuentas de almacenamiento de Azure Resource Manager más recientes y otros campos. Por ejemplo, el grupo de recursos o el servicio en la nube y las máquinas virtuales.
Nota:
Actualmente, una tipo de conexión de servicio de Azure con autenticación basada en credenciales no filtra el almacenamiento, el grupo de recursos o el servicio en la nube y los campos de máquina virtual.
¿Cómo se corrige el error '403: Esta solicitud no está autorizada para realizar esta operación con este permiso'?
Cuando Azure DevOps crea y autoriza la conexión de servicio a Azure, crea un registro de aplicaciones en Active Directory de la suscripción. Esta identidad se agrega automáticamente con un rol de Contributor
a todos los recursos del grupo de recursos que eligió autorizar. Para cargar blobs en una cuenta de almacenamiento, ser un Contributor
no es suficiente . Debe asignar manualmente el rol de Storage Blob Data Contributor
a la identidad de registro de la aplicación.
Copie la identidad de la aplicación de la entrada heredada existente como Contributor
que verá en el panel IAM y busque explícitamente en la interfaz de usuario de Add role assignment
. La identidad no aparece en la lista desplegable, debe buscar su identificador.
¿Qué ocurre si mi grupo de recursos contiene máquinas virtuales clásicas y de Resource Manager?
Si el grupo de recursos especificado contiene máquinas virtuales de Azure Resource Manager y clásicas, el conjunto de máquinas virtuales destinadas depende del tipo de conexión.
- En el caso de las conexiones basadas en certificados y las conexiones basadas en credenciales, la operación de copia solo se realiza en máquinas virtuales clásicas.
- En el caso de las conexiones basadas en el nombre de entidad de seguridad de servicio, la operación de copia solo se realiza en máquinas virtuales de Resource Manager.
¿Cómo puedo crear una cuenta profesional o educativa para usarla con esta tarea?
Se puede crear fácilmente una cuenta adecuada para su uso en una conexión de servicio:
- Use Azure Portal para crear una cuenta de usuario en Azure Active Directory.
- Agregue la cuenta de usuario de Azure Active Directory al grupo de coadministradores de la suscripción de Azure.
- Inicie sesión en Azure Portal con esta cuenta de usuario y cambie la contraseña.
- Use las nuevas credenciales de esta cuenta en la conexión de servicio. Las implementaciones se procesarán con esta cuenta.
Ejemplos
# 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
Requisitos
Requisito | Descripción |
---|---|
Tipos de canalización | YAML, compilación clásica, versión clásica |
Se ejecuta en | Agente, DeploymentGroup |
demandas | Los agentes autohospedados deben tener funcionalidades que coincidan con los siguientes exigen ejecutar trabajos que usen esta tarea: azureps |
funcionalidades de |
Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo. |
restricciones de comandos | Cualquiera |
variables settable | Cualquiera |
Versión del agente | 1.103.0 o superior |
Categoría de tarea | Desplegar |