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 같은 와일드카드가 포함된 이름은 지원되지 않습니다. 지정한 값 또는 식은 단일 폴더 또는 파일 이름을 반환해야 합니다.
Azure 구독azureSubscription -
입력 별칭: ConnectedServiceNameARM.
string; 필수 사항입니다.
대상 Azure 서비스, 가상 머신 또는 스토리지 계정이 있는 구독에 대해 구성된 Azure Resource Manager 서비스 연결 이름을 지정합니다. 자세한 내용은 Azure Resource Manager 개요 참조하세요.
Destination
-
대상 유형
string; 필수 사항입니다. 허용되는 값: AzureBlob(Azure Blob), AzureVMs(Azure VM).
대상 유형을 지정합니다.
RM Storage 계정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에서 파일을 필터링할 수 있습니다.
예: myvd1Blob 접두사를 지정하면 컨테이너 내에 가상 디렉터리가 만들어집니다. 파일은 원본에서 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\username,machine-name\username및.\username. -
username@domain.com및 기본 제공 시스템 계정(예:NT Authority\System)을 포함한 UPN 형식은 지원되지 않습니다.
암호vmsAdminPassword -
string;
Destination = AzureVMs때 필요합니다.
VM의 관리자 암호를 제공합니다.
유효한 입력에는 $(passwordVariable)같은 빌드 또는 릴리스 파이프라인에 정의된 변수가 포함됩니다. 암호를 보호하려면 암호를 secret표시합니다.
대상 폴더TargetPath -
string;
Destination = AzureVMs때 필요합니다.
파일을 복사할 Azure VM의 폴더 경로를 지정합니다.
$env:windir 및 $env:systemroot 같은 환경 변수가 지원됩니다. 예: $env:windir\FabrikamFiber\Web 및 c:\FabrikamFiber
AdditionalArgumentsForBlobCopy
-
선택적 인수(Blob에 파일 업로드용)
string;
AzCopy.exe같은 Blob에 업로드할 때 적용할 수 있는 /NC:10 추가 인수를 제공합니다.
선택적 인수를 지정하지 않으면 기본적으로 다음 인수가 추가됩니다.
/Y/SetContentType/Z/V-
/S- 컨테이너 이름이$root않을 때 추가됩니다. - 지정된 스토리지 계정이 프리미엄 계정인 경우
/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에서 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에 의해 서명되었는지 유효성을 검사하지 않습니다.
스토리지 컨테이너 URIoutputStorageUri -
string;
파일이 복사된 스토리지 컨테이너 URI에 사용되는 변수의 이름을 지정합니다. 선택한 대상이 Azure Blob인 경우에만 유효합니다.
스토리지 컨테이너 SAS 토큰outputStorageContainerSasToken -
string;
복사된 파일에 액세스하는 스토리지 컨테이너 SAS 토큰에 사용되는 변수의 이름을 지정합니다. 이 변수를 후속 작업에 대한 입력으로 사용합니다. 기본적으로 SAS 토큰은 4시간 후에 만료됩니다.
SAS 토큰 만료 기간(분)sasTokenTimeOutInMinutes -
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을 만드는 경우 다음 단계를 수행합니다.
- 각 VM의 포트 5986에서 HTTPS를 허용하도록 인바운드 액세스 규칙을 구성합니다.
- UAC 원격 제한사용하지 않도록 설정합니다.
- 도메인 참조 없이 사용자 이름 형식의 관리자 수준 로그인을 사용하여 VM에 액세스하기 위한 태스크의 자격 증명을 지정합니다.
- 자동화 에이전트를 실행하는 컴퓨터에 인증서를 설치합니다.
- 자체 서명된 인증서에 대한 작업의 테스트 인증서 매개 변수를 설정합니다.
어떤 유형의 서비스 연결을 선택해야 하나요?
다음 표에는 스토리지 계정 유형 및 연결된 서비스 연결이 나와 있습니다. 스토리지 계정이 클래식 API 또는 Resource Manager API를 기반으로 하는지 여부를 식별하려면 Azure Portal 로그인하고 Storage 계정(클래식) 또는 Storage 계정검색합니다.
| Storage 계정 유형 | TFS/TS의 Azure 서비스 연결 |
|---|---|
| 자원 관리자 | Azure Resource Manager 서비스 연결 |
| 고전 | 학교 또는 회사 계정을 사용하여 인증서 기반 또는 자격 증명 기반 인증을 사용한 Azure 서비스 연결 |
Azure 클래식 리소스의 경우 인증서 또는 자격 증명 기반 인증과 함께 Azure 서비스 연결 유형을 사용합니다. 자격 증명 기반 인증을 사용하는 경우 학교 또는 회사 계정대한 자격 증명인지 확인합니다.
joe@live.com및joe@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충분하지 않습니다. 앱 등록 ID Storage Blob Data Contributor 역할을 수동으로 할당해야 합니다.
IAM 창에 표시되는 Contributor 기존 상속된 항목에서 앱 ID를 복사하고 Add role assignment UI에서 명시적으로 검색합니다. ID는 드롭다운에 나열되지 않으므로 해당 식별자를 검색해야 합니다.
리소스 그룹에 클래식 VM과 Resource Manager VM이 모두 포함되어 있으면 어떻게 되나요?
지정된 리소스 그룹에 Azure Resource Manager와 클래식 VM이 모두 포함된 경우 대상 VM 집합은 연결 유형에 따라 달라집니다.
- 인증서 기반 연결 및 자격 증명 기반 연결의 경우 복사 작업은 클래식 VM에서만 수행됩니다.
- 서비스 주체 이름 기반 연결의 경우 복사 작업은 Resource Manager VM에서만 수행됩니다.
이 작업에 사용할 학교 또는 회사 계정을 만들려면 어떻게 해야 하나요?
서비스 연결에서 사용하기에 적합한 계정을 쉽게 만들 수 있습니다.
- Azure Portal을 사용하여 Azure Active Directory에서 새 사용자 계정을 만듭니다.
- Azure 구독의 공동 관리자 그룹에 Azure Active Directory 사용자 계정을 추가합니다.
- 이 사용자 계정으로 Azure Portal에 로그인하고 암호를 변경합니다.
- 서비스 연결에서 이 계정에 대한 새 자격 증명을 사용합니다. 배포는 이 계정을 사용하여 처리됩니다.
예시
# 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 |
| 요구 | 자체 호스팅 에이전트에는 다음 요구 사항과 일치하는 기능이 있어야 하며, 이 작업을 사용하는 작업을 실행해야 합니다. |
| 기능 | 이 작업은 작업의 후속 작업에 대한 요구 사항을 충족하지 않습니다. |
| 명령 제한 | 어느 것이든 |
| settable 변수 | 어느 것이든 |
| 에이전트 버전 | 1.103.0 이상 |
| 작업 범주 | 배치하다 |