컨테이너와 Blob, 메타데이터의 이름 지정 및 참조
이 항목에서는 컨테이너, Blob, 메타데이터 및 스냅숏의 명명 및 참조에 대해 설명합니다. 저장소 계정은 0개 이상의 컨테이너를 포함할 수 있습니다. 컨테이너에는 속성, 메타데이터 및 0개 이상의 Blob이 포함됩니다. Blob은 이진 데이터, 속성 및 메타데이터로 구성된 단일 엔터티입니다.
리소스 이름
컨테이너 또는 Blob을 참조하는 URI는 고유해야 합니다. 계정 이름이 고유하기 때문에 두 계정에서 동일한 이름의 컨테이너를 가질 수 있습니다. 그러나 한 저장소 계정 내 모든 컨테이너는 고유한 이름을 가져야 합니다. 특정 컨테이너 내 모든 Blob 또한 해당 컨테이너 내에서 고유한 이름을 가져야 합니다.
명명 규칙을 위반하는 이름으로 컨테이너 또는 Blob을 만들 경우 상태 코드 400(잘못된 요청)의 오류가 발생합니다.
Blob 및 컨테이너 이름은 URL 내에서 Blob 서비스에 전달됩니다. 특정 문자는 UTF-8(기본) 또는 MBCS를 사용하여 퍼센트 인코딩되어야 URL에 표시될 수 있습니다. 이 인코딩은 Azure Storage 클라이언트 라이브러리를 사용할 때 자동으로 발생합니다. 그러나 인코딩해도 URL 경로에 적합하지 않은 문자가 있습니다. 이러한 문자는 Blob 또는 컨테이너 이름에 사용할 수 없습니다. 이러한 문자 목록은 컨테이너 또는 Blob 이름에서 지원되지 않는 유니코드 문자를 참조하세요.
\uE000과 같은 코드 포인트는 NTFS 파일 이름에는 적합하지만 유효한 유니코드 문자가 아니므로 사용할 수 없습니다. 제어 문자(0x00-0x1F, \u0081 등)와 같은 일부 ASCII 또는 유니코드 문자도 허용되지 않습니다.
HTTP/1.1에서 유니코드 문자열을 제어하는 추가 규칙은 RFC 2616, 섹션 2.2: 기본 규칙 및 RFC 3987을 참조하세요.
컨테이너 이름
컨테이너를 만들 때 다음 명명 규칙을 준수하여 해당 컨테이너에 유효한 DNS 이름을 지정해야 합니다.
컨테이너 이름은 문자 또는 숫자로 시작하거나 끝나야 하며 문자, 숫자 및 대시(-) 문자만 포함할 수 있습니다.
컨테이너 이름에서 모든 대시(-) 문자는 문자 또는 숫자 바로 앞뒤에 와야 하며 연속 대시를 사용할 수 없습니다.
컨테이너 이름의 모든 문자는 소문자여야 합니다.
컨테이너 이름의 길이는 3자 이상, 63자 이하여야 합니다.
Blob 이름
Blob 이름은 다음 명명 규칙을 준수해야 합니다.
Blob 이름은 모든 문자 조합을 포함할 수 있습니다.
Blob 이름은 Azure Storage의 Blob에 대해 1자 이상이어야 하고 1,024자 이하여야 합니다.
Azure Storage 에뮬레이터는 최대 256자 길이의 Blob 이름을 지원합니다. 자세한 내용은 개발 및 테스트에 Azure Storage 에뮬레이터 사용을 참조하세요.
대/소문자를 구분합니다.
예약된 URL 문자는 적절히 이스케이프되어야 합니다.
Blob 이름을 구성하는 경로 세그먼트 수는 254개를 초과할 수 없습니다. 패스 세그먼트는 가상 디렉터리의 이름에 해당하는 연속적인 구분 기호 문자(예:, 슬래시 '/') 사이의 문자열입니다.
참고
Blob 이름이 점(.), 슬래시(/) 또는 이 둘의 조합으로 끝나지 않아야 합니다. 패스 세그먼트는 점(.)으로 끝나서는 안 됩니다.
Blob 서비스는 계층 구조 스키마가 아닌 플랫 저장소 스키마를 기반으로 합니다. 그러나 Blob 이름 내에서 한 문자 또는 문자열의 구분 기호를 지정하여 가상 계층을 만들 수 있습니다. 다음 목록에 유효하고 고유한 Blob 이름의 예가 나와 있습니다. 동일 컨테이너에서 하나의 문자열이 동시에 유효한 Blob 이름 및 가상 디렉터리 이름이 될 수 있습니다.
/a
/a.txt
/a/b
/a/b.txt
Blob을 열거할 때 구분 기호 문자를 사용할 수 있습니다.
메타데이터 이름
컨테이너 또는 Blob 리소스의 메타데이터는 리소스와 연결된 이름과 값의 쌍으로 저장됩니다. 메타데이터 이름은 C# 식별자에 대한 명명 규칙을 준수해야 합니다.
메타데이터를 만들 때는 이름에서 대/소문자를 구분하지만 설정하거나 읽을 때에는 대/소문자를 구분하지 않습니다. 리소스에 대해 동일한 이름의 메타데이터 헤더가 두 개 이상 제출될 경우 Blob 서비스는 상태 코드 400(잘못된 요청)을 반환합니다.
리소스 URI 구문
각 리소스에 해당하는 기본 URL을 통해 리소스를 참조하게 됩니다.
저장소 계정의 경우 기본 URI에 계정의 이름만 포함됩니다.
https://myaccount.blob.core.windows.net
컨테이너의 기본 URI에는 계정 이름과 컨테이너 이름이 포함됩니다.
https://myaccount.blob.core.windows.net/mycontainer
Blob의 기본 URI에는 계정 이름과 컨테이너 이름, Blob의 이름이 포함됩니다.
https://myaccount.blob.core.windows.net/mycontainer/myblob
저장소 계정은 URI에서 생략할 수 있는 기본 컨테이너인 루트 컨테이너를 포함할 수 있습니다. 루트 컨테이너의 Blob은 컨테이너 이름 없이 참조하거나, 이름에 루트 컨테이너임을 명시적으로 표시할 수 있습니다($root
). 자세한 내용은 루트 컨테이너 작업을 참조하세요. 다음 URI는 모두 루트 컨테이너의 Blob을 참조합니다.
https://myaccount.blob.core.windows.net/myblob
https://myaccount.blob.core.windows.net/$root/myblob
Blob 스냅숏
스냅숏은 스냅숏이 생성될 당시에 저장된 Blob의 읽기 전용 버전입니다. 스냅숏을 사용하여 Blob의 백업 또는 검사점을 만들 수 있습니다. 스냅숏 Blob 이름에는 기본 Blob URI와 함께 스냅숏이 생성된 날짜와 시간을 나타내는 값이 포함됩니다.
다음과 같은 URI의 Blob을 가정해 보겠습니다.
https://myaccount.blob.core.windows.net/mycontainer/myblob
이 Blob의 스냅숏 URI는 다음과 같습니다.
https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
컨테이너 또는 Blob 이름에서 지원되지 않는 유니코드 문자
다음 표에서는 컨테이너 또는 Blob 이름에서 지원되지 않는 유니코드 문자 목록을 제공합니다.
유니코드 문자 |
---|
U+0080 |
U+0082 |
U+0083 |
U+0084 |
U+0085 |
U+0086 |
U+0087 |
U+0088 |
U+0089 |
U+008A |
U+008B |
U+008C |
U+008E |
U+0091 |
U+0092 |
U+0093 |
U+0094 |
U+0095 |
U+0096 |
U+0097 |
U+0098 |
U+0099 |
U+009A |
U+009B |
U+009C |
U+009E |
U+009F |
U+FDD1 |
U+FDD2 |
U+FDD3 |
U+FDD4 |
U+FDD5 |
U+FDD6 |
U+FDD7 |
U+FDD8 |
U+FDD9 |
U+FDDA |
U+FDDB |
U+FDDC |
U+FDDE |
U+FDDF |
U+FDE0 |
U+FDE1 |
U+FDE2 |
U+FDE3 |
U+FDE4 |
U+FDE5 |
U+FDE6 |
U+FDE7 |
U+FDE8 |
U+FDE9 |
U+FDEA |
U+FDEB |
U+FDEC |
U+FDED |
U+FDEE |
U+FDEF |
U+FFF0 |
U+FFF1 |
U+FFF2 |
U+FFF3 |
U+FFF4 |
U+FFF5 |
U+FFF6 |
U+FFF7 |
U+FFF8 |
U+FFF9 |
U+FFFA |
U+FFFB |
U+FFFC |
U+FFFD |
U+FFFE |
U+FFFF |
U+1FFFE |
U+1FFFF |
U+2FFFE |
U+2FFFF |
U+3FFFE |
U+3FFFF |
U+5FFFE |
U+5FFFF |
U+6FFFE |
U+6FFFF |
U+7FFFE |
U+7FFFF |
U+9FFFE |
U+9FFFF |
U+AFFFE |
U+AFFFF |
U+BFFFE |
U+BFFFF |
U+DFFFE |
U+DFFFF |
U+EFFFE |
U+EFFFF |
U+FFFFE |
U+FFFFF |