다음을 통해 공유


URL에서 Blob 복사

작업은 Copy Blob From URL 최대 256메비바이트(MiB)의 원본 Blob 크기에 대해 스토리지 계정 내의 대상에 Blob을 동기적으로 복사합니다. 이 API는 버전 2018-03-28부터 사용할 수 있습니다.

작업의 원본 Copy Blob From URL 은 공용 또는 공유 액세스 서명으로 권한이 부여된 모든 Azure Storage 계정의 커밋된 블록 Blob일 수 있습니다.

요청

다음과 같이 요청을 생성할 Copy Blob From URL 수 있습니다. HTTPS를 사용하는 것이 좋습니다. myaccount를 스토리지 계정의 이름으로 바꾸고, mycontainer를 컨테이너 이름으로 바꾸고, myblob을 대상 Blob의 이름으로 바꿉니다.

PUT 메서드 요청 URI HTTP 버전
https://myaccount.blob.core.windows.net/mycontainer/myblob HTTP/1.1

에뮬레이트된 스토리지 서비스에 대한 URI

에뮬레이트된 스토리지 서비스에 대한 요청을 수행할 때 에뮬레이터 호스트 이름과 Azure Blob Storage 포트를 로 127.0.0.1:10000지정한 다음 에뮬레이트된 스토리지 계정의 이름을 지정합니다.

PUT 메서드 요청 URI HTTP 버전
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob HTTP/1.1

자세한 내용은 로컬 Azure Storage 개발에 Azurite 에뮬레이터 사용을 참조하세요.

URI 매개 변수

요청 URI에 다음과 같은 추가 매개 변수를 지정할 수 있습니다.

매개 변수 Description
timeout 선택 사항입니다. timeout 매개 변수는 초 단위로 표시됩니다. 자세한 내용은 Blob Storage 작업에 대한 시간 제한 설정을 참조하세요.

요청 헤더

다음 표에서는 필수 및 선택적 요청 헤더에 대해 설명합니다.

요청 헤더 Description
Authorization 필수 사항입니다. 권한 부여 체계, 계정 이름 및 서명을 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요.
Date 또는 x-ms-date 필수 사항입니다. 요청에 대한 UTC(협정 세계시)를 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요.
x-ms-version 모든 권한 있는 요청에 필요합니다. 자세한 내용은 Azure Storage 서비스에 대한 버전 관리를 참조하세요.
x-ms-meta-name:value 선택 사항입니다. Blob과 연결된 사용자 정의 이름/값 쌍을 지정합니다. 이름/값 쌍이 지정되지 않은 경우 작업은 원본 Blob 또는 파일의 메타데이터를 대상 Blob으로 복사합니다. 하나 이상의 이름/값 쌍을 지정하면 대상 Blob이 지정된 메타데이터로 만들어지고 메타데이터는 원본 Blob 또는 파일에서 복사되지 않습니다.

버전 2009-09-19부터 메타데이터 이름은 C# 식별자에 대한 명명 규칙을 준수해야 합니다. 자세한 내용은 컨테이너, Blob 및 메타데이터 이름 지정 및 참조를 참조하세요.
x-ms-encryption-scope 선택 사항입니다. 요청 내용을 암호화하기 위한 암호화 scope 나타냅니다. 이 헤더는 버전 2020-12-06 이상에서 지원됩니다.
x-ms-tags 선택 사항입니다. Blob에서 쿼리 문자열로 인코딩된 태그를 설정합니다. 태그는 복사 원본에서 복사되지 않습니다. 자세한 내용은 비고를 참조하세요. 버전 2019-12-12 이상에서 지원됩니다.
x-ms-copy-source-tag-option 선택 사항입니다. 가능한 값은 및 COPY (대/소문자 구분)입니다REPLACE. 기본값은 REPLACE입니다.

가 지정된 경우 COPY 원본 Blob의 태그가 대상 Blob에 복사됩니다. 원본 Blob은 프라이빗이어야 하며, 요청에는 원본 Blob에 대한 Blob 태그 가져오기 작업 및 대상 Blob의 Blob 태그 설정 작업에 대한 권한이 있어야 합니다. 이렇게 하면 원본 계정에서 작업에 대한 추가 호출 Get Blob Tags 이 발생합니다.

REPLACE 는 헤더가 x-ms-tags 대상 Blob에 지정하는 태그를 설정합니다. 를 지정 REPLACE 하고 태그를 지정하지 않으면 x-ms-tags 대상 Blob에 태그가 설정되지 않습니다. 및 x-ms-tagsCOPY 지정하면 409(충돌) 오류가 발생합니다.

버전 2021-04-10 이상에서 지원됩니다.
x-ms-source-if-modified-since 선택 사항입니다. DateTime 값입니다. 지정된 날짜/시간 이후 원본 blob가 수정된 경우에만 blob를 복사하려면 이 조건부 헤더를 지정합니다. 원본 Blob이 수정되지 않은 경우 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. 원본이 Azure 파일인 경우 이 헤더를 지정할 수 없습니다.
x-ms-source-if-unmodified-since 선택 사항입니다. DateTime 값입니다. 지정된 날짜/시간 이후 원본 blob가 수정되지 않은 경우에만 blob를 복사하려면 이 조건부 헤더를 지정합니다. 원본 Blob이 수정된 경우 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. 원본이 Azure 파일인 경우 이 헤더를 지정할 수 없습니다.
x-ms-source-if-match 선택 사항입니다. ETag 값입니다. 해당 값이 지정된 값과 일치하는 경우에만 원본 Blob을 ETag 복사하려면 이 조건부 헤더를 지정합니다. 값이 일치하지 않으면 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. 원본이 Azure 파일인 경우 이 헤더를 지정할 수 없습니다.
x-ms-source-if-none-match 선택 사항입니다. ETag 값입니다. 해당 값이 지정된 값과 일치하지 않는 경우에만 Blob을 ETag 복사하려면 이 조건부 헤더를 지정합니다. 값이 동일하면 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. 원본이 Azure 파일인 경우 이 헤더를 지정할 수 없습니다.
If-Modified-Since 선택 사항입니다. DateTime 값입니다. 지정된 날짜/시간 이후 대상 blob가 수정된 경우에만 blob를 복사하려면 이 조건부 헤더를 지정합니다. 대상 Blob이 수정되지 않은 경우 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다.
If-Unmodified-Since 선택 사항입니다. DateTime 값입니다. 지정된 날짜/시간 이후 대상 blob가 수정되지 않은 경우에만 blob를 복사하려면 이 조건부 헤더를 지정합니다. 대상 Blob이 수정된 경우 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다.
If-Match 선택 사항입니다. ETag 값입니다. ETag 지정된 ETag 값이 기존 대상 Blob의 값과 일치하는 경우에만 Blob을 복사하도록 이 조건부 헤더의 ETag 값을 지정합니다. 값이 일치하지 않으면 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다.
If-None-Match 선택 사항입니다. ETag 값 또는 와일드카드 문자(*)입니다.

ETag 지정된 ETag 값이 대상 Blob의 값과 일치하지 ETag 않는 경우에만 Blob을 복사하도록 이 조건부 헤더에 대한 값을 지정합니다.

대상 Blob이 없는 경우에만 작업을 수행할 와일드카드 문자(*)를 지정합니다.

지정된 조건이 충족되지 않으면 Blob Storage는 코드 412(사전 조건 실패)상태 반환합니다.
x-ms-copy-source:name 필수 사항입니다. 원본 Blob의 URL을 지정합니다. 값은 Blob을 지정하는 최대 2키비바이트(KiB)의 URL일 수 있습니다. 값은 요청 URI에 표시되므로 URL 인코딩해야 합니다. 원본 Blob은 공용이거나 공유 액세스 서명을 통해 권한을 부여해야 합니다. 원본 Blob이 공용인 경우 작업을 수행하기 위해 권한 부여가 필요하지 않습니다. 원본 Blob의 크기가 256MiB보다 크면 409(충돌) 오류와 함께 요청이 실패합니다. 원본 Blob의 Blob 유형은 블록 Blob이어야 합니다. 다음은 원본 개체 URL의 몇 가지 예입니다.

- https://myaccount.blob.core.windows.net/mycontainer/myblob
- https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
- https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime>
x-ms-copy-source-authorization: <scheme> <signature> 선택 사항입니다. 복사 원본에 대한 권한 부여 체계 및 서명을 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요.
스키마 전달자만 Microsoft Entra 지원됩니다.
이 헤더는 버전 2020-10-02 이상에서 지원됩니다.
x-ms-requires-sync:true 필수 사항입니다. 비동 Copy Blob From URL 기 작업 대신 동기 작업임을 Copy Blob 나타냅니다.
x-ms-source-content-md5 선택 사항입니다. URI에서 Blob 콘텐츠의 MD5 해시를 지정합니다. 이 해시는 URI에서 데이터를 전송하는 동안 Blob의 무결성을 확인하는 데 사용됩니다. 이 헤더를 지정하면 스토리지 서비스는 복사 원본에서 도착한 콘텐츠의 해시를 이 헤더 값과 비교합니다.

MD5 해시는 Blob과 함께 저장되지 않습니다.

두 해시가 일치하지 않으면 작업이 실패하고 오류 코드 400(잘못된 요청)이 표시됩니다.
x-ms-lease-id:<ID> 대상 blob에 활성 임대가 포함된 경우 필수입니다. 이 헤더에 지정된 임대 ID는 대상 blob의 임대 ID와 일치해야 합니다. 요청에 임대 ID가 포함되어 있지 않거나 유효하지 않으면 상태 코드 412(사전 조건 실패)로 인해 작업이 실패합니다.

이 헤더를 지정하고 대상 Blob에 현재 활성 임대가 없는 경우 상태 코드 412(사전 조건 실패)로 인해 작업이 실패합니다.

버전 2012-02-12 이상에서 이 값은 임대된 Blob에 대한 활성 무한 임대를 지정해야 합니다. 상태 코드 412(사전 조건 실패)로 인해 유한 기간 임대 ID가 실패합니다.
x-ms-client-request-id 선택 사항입니다. 로깅이 구성될 때 로그에 기록되는 1-KiB 문자 제한으로 클라이언트에서 생성된 불투명 값을 제공합니다. 이 헤더를 사용하여 클라이언트 쪽 활동과 서버가 수신하는 요청의 상관 관계를 지정하는 것이 좋습니다.
x-ms-access-tier 선택 사항입니다. 대상 Blob에 설정할 계층을 지정합니다. 이 헤더는 버전 2017-04-17 이상에서만 프리미엄 계정의 페이지 Blob용입니다. 지원되는 계층의 전체 목록은 VM용 고성능 Premium Storage 및 관리 디스크를 참조하세요. 이 헤더는 블록 Blob 버전 2018-11-09 이상에서 지원됩니다. 블록 Blob 계층화는 Blob Storage 또는 범용 v2 계정에서 지원됩니다. 유효한 값은 Hot, Cool, ColdArchive입니다. 참고:Cold 계층은 버전 2021-12-02 이상에서 지원됩니다. 블록 Blob 계층화에 대한 자세한 내용은 핫, 쿨 및 보관 스토리지 계층을 참조하세요.

요청 본문

없음

응답

응답에는 HTTP 상태 코드 및 응답 헤더 집합이 포함되어 있습니다.

상태 코드

작업에 성공하면 상태 코드 202(수락됨)가 반환됩니다.

상태 코드에 대한 자세한 내용은 상태 및 오류 코드를 참조하세요.

응답 헤더

이 작업의 응답에는 다음과 같은 헤더가 포함됩니다. 응답에는 추가 표준 HTTP 헤더도 포함될 수 있습니다. 모든 표준 헤더는 HTTP/1.1 프로토콜 사양을 준수합니다.

응답 헤더 Description
ETag 복사본이 완료되면 대상 Blob의 값이 포함 ETag 됩니다. 복사본이 완료되지 않은 경우 에는 복사본의 시작 부분에 생성된 빈 Blob의 값이 포함 ETag 됩니다.

값은 ETag 따옴표로 묶입니다.
Last-Modified 대상 Blob에 대한 복사 작업이 완료된 날짜/시간을 반환합니다.
x-ms-request-id 만들어진 요청을 고유하게 식별합니다. 이를 사용하여 요청 문제를 해결할 수 있습니다. 자세한 내용은 API 작업 문제 해결을 참조하세요.
x-ms-version 요청을 실행하는 데 사용되는 Blob Storage의 버전을 나타냅니다.
Date 서비스가 응답을 보낸 시간을 나타내는 UTC 날짜/시간 값입니다.
x-ms-copy-id: <id> 이 복사 작업의 문자열 식별자입니다.
x-ms-copy-status: <success> 복사 작업의 상태를 나타냅니다. 값 success 은 작업이 성공적으로 완료되었음을 의미합니다.
x-ms-client-request-id 요청 및 해당 응답 문제를 해결하는 데 사용할 수 있습니다. 이 헤더의 값은 헤더의 값 x-ms-client-request-id 과 같으며, 요청에 있고 값이 최대 1,024자 표시 ASCII 문자인 경우 입니다. 헤더가 x-ms-client-request-id 요청에 없는 경우 이 헤더는 응답에 존재하지 않습니다.
x-ms-request-server-encrypted: true/false true 요청 내용이 지정된 알고리즘을 통해 성공적으로 암호화되면 로 설정합니다. 그렇지 않으면 값은 false입니다.
x-ms-encryption-scope 요청이 암호화 scope 사용하는 경우 반환되므로 클라이언트는 암호화 scope 통해 요청 내용이 성공적으로 암호화되도록 할 수 있습니다.

응답 본문

없음

샘플 응답

다음은 blob 복사 요청에 대한 샘플 응답입니다.

Response Status:  
HTTP/1.1 202 Accepted  
  
Response Headers:   
Last-Modified: <date>   
ETag: "0x8CEB669D794AFE2"  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402  
x-ms-version: 2018-03-28  
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
x-ms-copy-status: success  
Date: <date>  
  

권한 부여

Azure Storage에서 데이터 액세스 작업을 호출할 때 권한 부여가 필요합니다. 다음 표에서는 작업의 대상 및 원본 개체에 Copy Blob From URL 권한을 부여하는 방법을 설명합니다.

개체 유형 Microsoft Entra ID 권한 부여 SAS(공유 액세스 서명) 권한 부여 공유 키 권한 부여(또는 공유 키 라이트)
대상 블록 Blob Yes Yes Yes
동일한 스토리지 계정의 원본 블록 Blob Yes Yes Yes
다른 스토리지 계정의 원본 블록 Blob

요청이 요청 헤더에 x-ms-tags 태그를 지정하는 경우 호출자는 Blob 태그 설정 작업의 권한 부여 요구 사항을 충족해야 합니다.

아래에 설명된 대로 작업에 권한을 Copy Blob From URL 부여할 수 있습니다. 다른 스토리지 계정의 원본 Blob은 읽기(r) 권한이 있는 SAS 토큰을 통해 별도로 권한을 부여해야 합니다. 원본 Blob 권한 부여에 대한 자세한 내용은 요청 헤더 x-ms-copy-source에 대한 세부 정보를 참조하세요.

중요

Microsoft는 관리 ID와 함께 Microsoft Entra ID 사용하여 Azure Storage에 대한 요청에 권한을 부여하는 것이 좋습니다. Microsoft Entra ID 공유 키 권한 부여에 비해 뛰어난 보안 및 사용 편의성을 제공합니다.

Azure Storage는 Microsoft Entra ID 사용하여 Blob 데이터에 대한 요청에 권한을 부여할 수 있도록 지원합니다. Microsoft Entra ID 사용하면 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 보안 주체에 권한을 부여할 수 있습니다. 보안 주체는 사용자, 그룹, 애플리케이션 서비스 주체 또는 Azure 관리 ID일 수 있습니다. 보안 주체는 OAuth 2.0 토큰을 반환하기 위해 Microsoft Entra ID 인증됩니다. 그런 다음 토큰을 사용하여 Blob service에 대한 요청을 승인할 수 있습니다.

Microsoft Entra ID 사용하여 권한 부여에 대한 자세한 내용은 Microsoft Entra ID 사용하여 Blob에 대한 액세스 권한 부여를 참조하세요.

사용 권한

아래에는 Microsoft Entra 사용자, 그룹, 관리 ID 또는 서비스 주체가 작업을 호출 Copy Blob From URL 하는 데 필요한 RBAC 작업과 이 작업을 포함하는 최소 권한의 기본 제공 Azure RBAC 역할이 나와 있습니다.

대상 Blob

동일한 스토리지 계정 내의 원본 Blob

Azure RBAC를 사용하여 역할을 할당하는 방법에 대한 자세한 내용은 Blob 데이터에 액세스하기 위해 Azure 역할 할당을 참조하세요.

설명

작업의 원본 및 대상 Blob은 Copy Blob From URL 블록 Blob이어야 합니다.

버전 2020-10-02 이상에서는 복사 작업의 원본에 대해 Microsoft Entra 권한 부여가 지원됩니다.

Copy Blob From URL 작업은 항상 전체 원본 Blob을 복사합니다. 바이트 범위 또는 블록 세트 복사는 지원되지 않습니다.

원본 Blob을 다른 이름의 대상 Blob에 복사할 수 있습니다. 대상 Blob은 기존 블록 Blob이거나 복사 작업에서 만드는 새 Blob일 수 있습니다.

블록 Blob에서 복사하는 경우 커밋된 모든 블록과 해당 블록 ID가 복사됩니다. 커밋되지 않은 블록은 복사되지 않습니다. 복사 작업이 끝나면 대상 Blob은 원본과 동일한 커밋된 블록 수를 갖게 됩니다.

블록 Blob에 대한 값은 ETag 작업이 시작되고 작업이 완료되는 경우 변경 Copy Blob From URL 됩니다.

Blob 속성 및 메타데이터 복사

블록 Blob이 복사되면 다음 시스템 속성이 동일한 값으로 대상 Blob에 복사됩니다.

  • Content-Type

  • Content-Encoding

  • Content-Language

  • Content-Length

  • Cache-Control

  • Content-MD5

  • Content-Disposition

원본 Blob의 커밋된 블록 목록도 대상 Blob에 복사됩니다. 커밋되지 않은 블록은 복사되지 않습니다.

대상 Blob은 항상 원본 Blob과 크기가 같으므로 대상 Blob의 Content-Length 헤더 값은 원본 Blob의 해당 헤더 값과 일치합니다.

헤더가 x-ms-tags 대상 Blob에 대한 태그를 제공하는 경우 쿼리 문자열로 인코딩되어야 합니다. 태그 키 및 값은 Blob 태그 설정 작업에 지정된 명명 및 길이 요구 사항을 준수해야 합니다.

헤더에는 x-ms-tags 최대 2킬로비트의 태그가 포함될 수 있습니다. 더 많은 태그가 필요한 경우 작업을 사용합니다 Set Blob Tags .

헤더가 태그를 x-ms-tags 제공하지 않는 경우 태그는 원본 Blob에서 복사되지 않습니다.

임대된 Blob 복사

작업은 Copy Blob From URL 원본 Blob에서만 읽으므로 원본 Blob의 임대 상태는 중요하지 않습니다.

결제

가격 책정 요청은 Blob Storage REST API를 통해 직접 또는 Azure Storage 클라이언트 라이브러리에서 Blob Storage API를 사용하는 클라이언트에서 시작됩니다. 이러한 요청은 트랜잭션당 요금을 발생합니다. 트랜잭션 유형은 계정 청구 방식에 영향을 줍니다. 예를 들어 읽기 트랜잭션은 쓰기 트랜잭션이 아닌 다른 청구 범주에 발생합니다. 다음 표에서는 스토리지 계정 유형에 따라 요청에 대한 Copy Blob From URL 청구 범주를 보여 줍니다.

작업 Storage 계정 유형 청구 범주
URL에서 Blob 복사(대상 계정1) 프리미엄 블록 Blob
표준 범용 v2
표준 범용 v1
쓰기 작업
URL에서 Blob 복사(원본 계정2) 프리미엄 블록 Blob
표준 범용 v2
표준 범용 v1
읽기 작업

1대상 계정은 쓰기를 시작하기 위해 하나의 트랜잭션에 대해 요금이 청구됩니다.
2원본 계정은 원본 개체에 대한 각 읽기 요청에 대해 하나의 트랜잭션을 발생합니다.

지정된 청구 범주의 가격 책정에 대한 자세한 내용은 가격 책정 Azure Blob Storage 참조하세요.

또한 원본 및 대상 계정이 다른 지역(예: 미국 북부 및 미국 남부)에 있는 경우 요청을 전송하는 데 사용하는 대역폭은 송신으로 원본 스토리지 계정에 청구됩니다. 동일 지역 내에서 계정 간 송신은 무료입니다.

동일한 계정 내에서 이름이 다른 대상 Blob에 원본 Blob을 복사하는 경우 새 Blob에 추가 스토리지 리소스를 사용합니다. 그런 다음 복사 작업을 수행하면 해당 추가 리소스에 대한 스토리지 계정의 용량 사용량에 대한 요금이 청구됩니다.

추가 정보

Azure Storage에 대한 요청 권한 부여
상태 및 오류 코드
Blob Storage 오류 코드
스냅샷 요금이 발생하는 방식 이해