다음을 통해 공유


AzureFileCopy@3 - Azure 파일 복사 v3 작업

파일을 Azure Blob Storage 또는 가상 머신에 복사합니다.

Syntax

# 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 와일드카드가 포함된 이름은 지원되지 않습니다. 지정한 값 또는 식은 단일 폴더 또는 파일 이름을 반환해야 합니다.


azureSubscription - Azure 구독
입력 별칭: ConnectedServiceNameARM. string. 필수 요소.

대상 Azure 서비스, 가상 머신 또는 스토리지 계정이 있는 구독에 대해 구성된 Azure Resource Manager 서비스 연결의 이름을 지정합니다. 자세한 내용은 Azure Resource Manager 개요를 참조하세요.


Destination - 대상 유형
string. 필수 요소. 허용되는 값: AzureBlob (Azure Blob), AzureVMs (Azure VM).

대상 유형을 지정합니다.


storage - RM Storage 계정
입력 별칭: StorageAccountRM. string. 필수 요소.

기존 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 - 리소스 그룹
입력 별칭: EnvironmentNameRM. string. 필요한 경우 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, ffweb, ffdb또는 태그(예: Role:DB, , Web) OS:Win8.1

참고: 태그의 유효한 구분 기호에는 ,(쉼표), :(콜론) 및 ;(세미콜론)이 포함됩니다. 여러 태그를 제공할 때 작업은 지정된 태그를 포함하는 VM에서만 실행됩니다. 기본적으로 작업은 모든 VM에서 실행됩니다.


vmsAdminUserName - 관리 로그인
string. 필요한 경우 Destination = AzureVMs입니다.

모든 대상 VM에 대한 관리 권한이 있는 계정의 사용자 이름을 제공합니다.

  • 지원되는 형식은 username, , domain\usernamemachine-name\username및 입니다.\username.
  • 과 같은 NT Authority\System 기본 제공 시스템 계정을 포함한 username@domain.com UPN 형식은 지원되지 않습니다.

vmsAdminPassword - 암호
string. 필요한 경우 Destination = AzureVMs입니다.

VM의 관리자 암호를 제공합니다.

유효한 입력에는 와 같은 $(passwordVariable)빌드 또는 릴리스 파이프라인에 정의된 변수가 포함됩니다. 암호를 보호하려면 암호를 로 secret표시합니다.


TargetPath - 대상 폴더
string. 필요한 경우 Destination = AzureVMs입니다.

파일을 복사할 Azure VM의 폴더 경로를 지정합니다.

$env:systemroot 와 같은 $env:windir 환경 변수가 지원됩니다. 예: $env:windir\FabrikamFiber\Webc:\FabrikamFiber


AdditionalArgumentsForBlobCopy - 선택적 인수(Blob에 파일 업로드용)
string.

와 같은 /NC:10Blob에 AzCopy.exe 업로드할 때 적용할 수 있는 추가 인수를 제공합니다.

선택적 인수를 지정하지 않으면 기본적으로 다음 인수가 추가됩니다.

  • /Y
  • /SetContentType
  • /Z
  • /V
  • /S - 컨테이너 이름이 이 아닌 $root경우 추가됩니다.
  • /BlobType:page -지정된 스토리지 계정이 프리미엄 계정일 때 추가됩니다.
  • /Pattern - 원본 경로가 파일일 때 추가됩니다. 지정된 다른 선택적 인수에 포함됩니다.

AdditionalArgumentsForVMCopy - 선택적 인수(VM에 파일 다운로드용)
string. 선택 사항입니다. 를 사용하는 경우 Destination = AzureVMs를 사용합니다.

와 같은 /NC:10VM에 AzCopy.exe 다운로드할 때 적용할 수 있는 추가 인수를 제공합니다.

선택적 인수를 지정하지 않으면 기본적으로 다음이 추가됩니다.

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

enableCopyPrerequisites - 복사 필수 구성 요소 사용
boolean. 선택 사항입니다. 를 사용하는 경우 Destination = AzureVMs를 사용합니다. 기본값은 false입니다.

사용하도록 설정하면 자체 서명된 인증서를 사용하여 HTTPS 프로토콜 대신 포트 5986에서 WinRM(Windows 원격 관리) 수신기를 구성합니다. 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에 의해 서명되었는지 유효성을 검사하지 않습니다.


outputStorageUri - 스토리지 컨테이너 URI
string.

파일이 복사된 스토리지 컨테이너 URI에 사용되는 변수의 이름을 지정합니다. 선택한 대상이 Azure Blob인 경우에만 유효합니다.


outputStorageContainerSasToken - 스토리지 컨테이너 SAS 토큰
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 Storage 계정에서 데이터를 빠르게 복사하기 위해 빌드된 명령줄 유틸리티인 AzCopy를 사용합니다. 작업 버전 3 이하에서는 AzCopy V7을 사용합니다.

  • 가상 머신을 포함하는 Azure 리소스 그룹을 동적으로 배포하려면 Azure 리소스 그룹 배포 작업을 사용합니다. 이 작업에는 VM에서 WinRM HTTPS 프로토콜을 설정하고, 방화벽에서 포트 5986을 열고, 테스트 인증서를 설치하는 데 필요한 작업을 수행할 수 있는 샘플 템플릿이 있습니다.

참고

Azure Static Websites에 Blob Storage의 컨테이너로 배포하는 경우 버전 2 이상을 사용하여 $web 컨테이너 이름을 유지합니다.

FAQ

이 작업을 사용하기 위한 Azure PowerShell 필수 구성 요소는 무엇인가요?

작업을 수행하려면 자동화 에이전트를 실행하는 컴퓨터에 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. 자동화 에이전트를 실행하는 컴퓨터에 인증서를 설치합니다.
  5. 자체 서명 된 인증서 에 대한 작업의 테스트 인증서 매개 변수를 설정합니다.

어떤 유형의 서비스 연결을 선택해야 하나요?

다음 표에는 스토리지 계정 유형 및 연결된 서비스 연결이 나와 있습니다. 스토리지 계정이 클래식 API 또는 Resource Manager API를 기반으로 하는지 여부를 식별하려면 Azure Portal 로그인하고 스토리지 계정(클래식) 또는 스토리지 계정을 검색합니다.

Storage 계정 유형 TFS/TS의 Azure 서비스 연결
리소스 관리자 Azure Resource Manager 서비스 연결
클래식 학교 또는 회사 계정을 사용하여 인증서 기반 또는 자격 증명 기반 인증과 Azure 서비스 연결
  • Azure 클래식 리소스의 경우 인증서 또는 자격 증명 기반 인증과 함께 Azure 서비스 연결 유형을 사용합니다. 자격 증명 기반 인증을 사용하는 경우 자격 증명이 학교 또는 회사 계정에 대한 것인지 확인합니다. 및 joe@hotmail.com 와 같은 joe@live.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 자동으로 추가됩니다. 스토리지 계정에 Contributor Blob을 업로드하는 것만으로는 충분하지 않습니다. 역할을 앱 등록 ID에Storage Blob Data Contributor 수동으로 할당해야 합니다.

IAM 창에 표시되는 대로 기존 상속된 항목 Contributor 에서 앱 ID를 복사하고 UI에서 Add role assignment 명시적으로 검색합니다. ID는 드롭다운에 나열되지 않으므로 해당 식별자를 검색해야 합니다.

리소스 그룹에 클래식 및 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

요구 사항

요구 사항 Description
파이프라인 유형 YAML, 클래식 빌드, 클래식 릴리스
실행 중 에이전트, DeploymentGroup
요청 자체 호스팅 에이전트에는 이 작업을 사용하는 작업을 실행하기 위한 다음 요구 사항과 일치하는 기능이 있어야 합니다. azureps
Capabilities 이 작업은 작업의 후속 작업에 대한 요구를 충족하지 않습니다.
명령 제한 사항 모두
Settable 변수 모두
에이전트 버전 1.103.0 이상
작업 범주 배포