컨테이너와 Blob, 메타데이터의 이름 지정 및 참조

이 항목에서는 컨테이너, Blob, 메타데이터 및 스냅숏의 명명 및 참조에 대해 설명합니다. 저장소 계정은 0개 이상의 컨테이너를 포함할 수 있습니다. 컨테이너에는 속성, 메타데이터 및 0개 이상의 Blob이 포함됩니다. 계정에 계층 구조 네임스페이스가 있는 경우 컨테이너에는 0개 이상의 디렉터리도 포함될 수 있으며 해당 디렉터리에 Blob이 0개 이상 포함될 수 있습니다. 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자 이하여야 합니다.

디렉터리 이름

계정에 계층 구조 네임스페이스가 있는 경우 디렉터리 이름은 다음 명명 규칙을 따라야 합니다.

  • 디렉터리 이름에는 문자의 조합이 포함될 수 있습니다.

  • 디렉터리 이름은 하나 이상의 문자 길이여야 하며 길이는 1,024자를 초과할 수 없습니다.

  • 디렉터리 이름은 대/소문자를 구분합니다.

  • 예약된 URL 문자는 적절히 이스케이프되어야 합니다.

참고

점(.), 슬래시(/), 백슬래시(\) 또는 둘의 시퀀스 또는 조합으로 끝나는 디렉터리 이름을 사용하지 마세요. 패스 세그먼트는 점(.)으로 끝나서는 안 됩니다.

백슬래시가 허용되지 않는 스크린샷

Blob 이름

Blob 이름은 다음 명명 규칙을 준수해야 합니다. 이러한 규칙은 달리 명시되지 않는 한 계층 구조 네임스페이스가 있는 계정의 Blob에도 적용됩니다.

  • Blob 이름은 모든 문자 조합을 포함할 수 있습니다.

  • Blob 이름은 Azure Storage의 Blob에 대해 1자 이상이어야 하고 1,024자 이하여야 합니다.

    Azure Storage 에뮬레이터는 최대 256자 길이의 Blob 이름을 지원합니다. 자세한 내용은 개발 및 테스트에 Azure Storage 에뮬레이터 사용을 참조하세요.

  • 대/소문자를 구분합니다.

  • 예약된 URL 문자는 적절히 이스케이프되어야 합니다.

  • Blob 이름을 구성하는 경로 세그먼트 수에는 제한이 있습니다. 경로 세그먼트는 디렉터리 또는 가상 디렉터리에 해당하는 연속 구분 기호 문자(예: 슬래시 /) 사이의 문자열입니다. 다음 경로 세그먼트 제한 사항은 Blob 이름에 적용됩니다.

    • 스토리지 계정에 계층 구조 네임스페이스를 사용하도록 설정 하지 않은 경우 Blob 이름을 구성하는 경로 세그먼트 수는 254를 초과할 수 없습니다.
    • 스토리지 계정에 계층 구조 네임스페이스가 사용하도록 설정된 경우 Blob 이름을 구성하는 경로 세그먼트 수는 63을 초과할 수 없습니다(계정 이름 및 컨테이너 이름에 대한 경로 세그먼트 포함).

참고

점(.), 슬래시(/), 백슬래시(\) 또는 둘의 시퀀스 또는 조합으로 끝나는 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 이름에 사용하지 않는 유니코드 문자 목록을 제공합니다. 이 목록의 다른 문자와 함께 사용할 경우 이러한 문자는 UTF-8 또는 MCBS 디코딩에 실패하여 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

추가 정보