다음을 통해 공유


AzureFileCopy@4 - Azure 파일 복사 v4 작업

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

Syntax

# 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와 같은 미리 정의된 시스템 변수가 포함됩니다.

릴리스 변수는 클래식 릴리스에서만 지원됩니다. 야생 카드 기호(*)는 파일 경로 또는 파일 이름에서 지원됩니다.


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

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

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

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

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

매개 변수에 대한 Admin Login 암호를 제공합니다.

변수를 찾으려면 매개 변수를 찾습니다 Admin Login . 탭에 정의된 Variables 변수의 자물쇠 아이콘을 선택하여 값을 보호하고 여기에 변수 이름을 삽입합니다.


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

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

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


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

Blob에 AzCopy.exe 업로드하고 VM에 다운로드할 때 사용할 추가 인수를 제공합니다. 자세한 내용은 AzCopy Command-Line 유틸리티를 사용하여 데이터 전송 을 참조하세요.

Azure 페이지 Blob만 지원하는 Premium Storage 계정의 경우 추가 인수로 사용합니다 --blob-type=PageBlob .

기본 인수에는 (기본값) 및 --recursive (컨테이너 이름이 아닌 $root경우)이 포함 --log-level=INFO 됩니다.


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

와 같은 --check-length=trueVM에 AzCopy.exe 다운로드할 때 적용되는 추가 인수를 제공합니다.

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

  • --log-level=INFO
  • --log-level=DEBUG (파이프라인이 디버그 모드 집합에서 실행 중인 경우)
  • --recursive

sasTokenTimeOutInMinutes - SAS 토큰 만료 기간(분)
string. 선택 사항입니다. 를 사용하는 경우 Destination = AzureBlob를 사용합니다. 기본값은 240입니다.

컨테이너에 대한 SAS 토큰이 만료되는 시간(분)을 지정합니다. 기본적으로 이 토큰은 4시간 후에 만료됩니다.


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

사용하도록 설정하면 이 옵션은 자체 서명된 인증서를 사용하여 포트 5986의 HTTPS 프로토콜을 통해 WinRM(Windows 원격 관리) 수신기를 구성합니다. 이 구성은 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 Storage 계정에서 데이터를 빠르게 복사하기 위해 빌드된 명령줄 유틸리티인 AzCopy를 사용합니다. Azure 파일 복사 작업의 버전 4는 AzCopy V10을 사용합니다.

Azure 파일 복사 버전 3 이하에서는 액세스를 제공하기 위해 Azure Storage 키를 검색합니다. Azure 파일 복사 버전 4 이상에서는 Microsoft Entra ID 또는 SAS 토큰을 통해 Azure Storage에 권한을 부여해야 합니다. 서비스 주체 및 관리 ID를 사용한 인증을 사용할 수 있습니다. 관리 ID의 경우 시스템 차원의 관리 ID만 지원됩니다. 필요한 권한 부여 수준은 옵션 1: Microsoft Entra ID 사용에 표시됩니다.

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

참고

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

이 작업은 Azure Active Directory를 기반으로 인증을 지원합니다. 서비스 주체 및 관리 ID를 사용한 인증을 사용할 수 있습니다. 관리 ID의 경우 시스템 차원의 관리 ID만 지원됩니다.

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

작업을 수행하려면 자동화 에이전트를 실행하는 컴퓨터에 Azure PowerShell 설치해야 합니다. 권장 버전은 1.0.2이지만 작업은 버전 0.9.8 이상에서 작동합니다. Azure PowerShell Installer v1.0.2를 사용하여 가져올 수 있습니다.

이 작업의 WinRM 필수 구성 요소는 무엇인가요?

이 작업은 WinRM(Windows 원격 관리) HTTPS 프로토콜을 사용하여 스토리지 Blob 컨테이너에서 Azure VM으로 파일을 복사합니다. 이렇게 하려면 WinRM HTTPS 서비스가 VM에 구성되고 적절한 인증서가 설치되어야 합니다.

가상 머신을 만든 후 WinRM 구성

WinRM HTTPS 포트를 열지 않고 VM을 만든 경우 다음을 수행합니다.

  1. 각 VM의 포트 5986에서 HTTPS를 허용하도록 인바운드 액세스 규칙을 구성합니다.
  2. UAC 원격 제한을 사용하지 않도록 설정합니다.
  3. 도메인 부분 없이 간단한 형식 의 사용자 이름으로 관리자 수준 로그인을 사용하여 VM에 액세스하는 작업에 대한 자격 증명을 지정합니다.
  4. 자동화 에이전트를 실행하는 컴퓨터에 인증서를 설치합니다.
  5. 자체 서명된 인증서를 사용하는 경우 작업의 테스트 인증서 매개 변수를 설정합니다.

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

  • 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 작업 클린 사용하여 워크플로에 CLI 단계를 추가합니다.

Azure 파일 복사 작업을 사용하여 공용 IP 주소가 없는 Azure 가상 머신에 파일을 복사할 어떻게 할까요? 있나요?

Azure 파일 복사 작업의 버전 4를 사용하고 있는지 확인합니다. 작업이 실패하면 빌드 단계를 추가하여 명령을 azcopy cp "source-file-path" "destination-file-path" 실행하여 원본 및 대상 값을 대체할 수 있습니다.

사용할 수 없음 오류: Azure 파일 복사 작업을 사용하는 동안 'blob Storage에 파일을 업로드하는 동안 0이 아닌 종료 코드로 AzCopy.exe 종료됨'

호스트된 에이전트는 빌드가 트리거될 때마다 임의로 할당되며, 에이전트 IP 주소는 실행마다 다릅니다. 이러한 IP 주소가 허용된 IP 목록에 없으면 Azure DevOps와 스토리지 계정 간의 통신이 실패합니다. 이러한 시나리오에서 설명된 단계를 수행합니다.

  1. Azure CLI를 사용하여 런타임에 Microsoft Hosted Build 에이전트의 IP 주소를 식별하는 빌드 단계를 추가합니다. Azure Storage 계정의 네트워크 규칙에 IP 주소를 추가합니다.
  2. Azure Storage 계정에 대한 빌드 단계를 실행합니다.
  3. Azure CLI를 사용하여 Azure Storage 계정 네트워크 규칙에서 빌드 에이전트의 IP 주소를 제거하는 다른 빌드 단계를 추가합니다.

예제

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

요구 사항

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