내보내기(0) 인쇄
모두 확장

XML 매니페스트 파일 형식

업데이트 날짜: 2013년 12월

XML 매니페스트 파일은 패키지의 내용을 설명하고 패키지의 내용이 각 역할의 디렉터리 구조에 매핑되는 방식을 지정합니다. 일반적으로 지정된 역할에 대해 배포되는 파일은 다른 역할에서 필요합니다. 패키지 작성자는 새 패키지 형식의 단일 매니페스트를 사용하여 중복된 파일을 정확히 한 번 포함한 다음 해당 파일을 여러 역할에 배포하는 방법을 선언적으로 설명할 수 있습니다. 새 패키지 형식은 보관 구조를 단순화하며 패키지 작성자가 여러 역할에서나 한 역할 내에서 파일을 공유하는 보관 파일을 최적화할 수 있도록 합니다. 이에 따라 패키지 크기가 작아지므로 Windows Azure에 패키지를 보다 빠르게 배포할 수 있습니다.

규칙에 따라 XML 매니페스트 파일의 이름은 package.xml로 지정됩니다. 그러나 XML 매니페스트는 관계가 XML 매니페스트 파일을 가리키는 한 어떠한 보관 파일도 될 수 있으며 XML 매니페스트 파일은 스키마를 따릅니다.

이 항목에서는 예제를 사용하여 XML 매니페스트 파일의 형식에 대해 설명합니다. XML 매니페스트 파일의 스키마를 보려면 XML 매니페스트 파일 스키마를 참조하십시오.

기본 XML 형식은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<PackageDefinition xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/windowsazure">
  <PackageMetaData />
  <PackageContents />
  <PackageLayouts />
</PackageDefinition>

다음은 XML 매니페스트 파일에 대한 XML 네임스페이스입니다.

http://schemas.microsoft.com/windowsazure

XML 매니페스트에는 세 가지 섹션이 포함되어 있습니다. 각 섹션은 모든 이름이 “a/b/c…” 구문을 사용한 상대 URI인 명명된 리소스의 컬렉션입니다. 이러한 이름은 동일한지 여부를 확인할 때 대/소문자를 구분하는 것으로 처리되며 일반 URI 인코딩 및 이스케이프 규칙을 따라야 합니다. 이 항목에서는 다음 순서로 세 가지 섹션에 대해 설명합니다.

PackageMetaData

PackageMetaData 컬렉션은 키/값 저장소입니다. 여기서 키와 값은 문자열입니다. 다음은 PackageMetaData 컬렉션의 예입니다.

<PackageMetaData>
  <KeyValuePair>
    <Key>http://schemas.microsoft.com/windowsazure/ProductVersion/</Key>
    <Value>1.7.30308.2000 </Value>
  </KeyValuePair>
</PackageMetaData>

키와 값을 인코딩하는 UTF-8 바이트의 합은 1MB를 초과하지 않아야 합니다. 메타데이터가 1MB를 초과하는 패키지는 모든 패키지 프로세서에서 거부될 수 있습니다.

네임스페이스 충돌을 방지하려면 메타데이터 키가 XML 네임스페이스에서 사용되는 동일한 규칙을 따르는 URI여야 합니다.

PackageContents

PackageContents 컬렉션은 패키지를 구성하는 파일을 설명합니다. 여기에는 파일 이름, 길이, 내용의 선택적 sha256 해시 및 경로가 포함됩니다. 다음은 PackageContents 컬렉션의 예입니다.

<PackageContents>
  <ContentDefinition>
    <Name>Content/Example/WithoutHash</Name>
    <ContentDescription>
      <LengthInBytes>123</LengthInBytes>
      <IntegrityCheckHashAlgortihm>None</IntegrityCheckHashAlgortihm>
      <IntegrityCheckHash/>
      <DataStorePath>File00</DataStorePath>
    </ContentDescription>
  </ContentDefinition>
  <ContentDefinition>
    <Name>Content/Example/WithHash</Name>
    <ContentDescription>
      <LengthInBytes>123</LengthInBytes>
      <IntegrityCheckHashAlgortihm>Sha256</IntegrityCheckHashAlgortihm>          <IntegrityCheckHash>AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=</IntegrityCheckHash>
      <DataStorePath>File01</DataStorePath>
    </ContentDescription>
  </ContentDefinition>
</PackageContents>

내용 항목은 크기가 무제한일 수 있는 내용 BLOB 리소스 및 바이트의 명명된 스트림입니다. 바이트가 손상 없이 적절하게 전송되었는지 확인하기 위해 이 바이트 스트림에 무결성 검사가 선택적으로 적용될 수 있습니다.

IntegrityCheckHashAlgortihm 요소의 유효한 값은 NoneSha256입니다. None이 지정된 경우 IntegrityCheckHash 요소는 빈 요소여야 합니다. Sha256의 경우 문자열이 해시 바이트의 Base-64 인코딩이어야 합니다. 이 문자열은 XSD 형식 xs:base64Binary여야 합니다.

이름은 상대 URI이며 대/소문자를 구분하여 처리됩니다. 각 내용 항목에는 해당 항목에 대한 OPC 보관 파일의 바이트 스트림을 참조하는 상대 URI인 DataStorePath 요소가 있습니다. DataStorePath의 이름은 임의로 지정됩니다. 다른 파일 시스템에서 OPC 파일의 압축을 쉽게 풀고 다시 압축할 수 있도록 하기 위해 OPC 항목 이름은 US-ASCII여야 하고 대/소문자를 구분하여 비교할 때 고유해야 합니다. 또한 파일 시스템 경로 제한을 방지하기 위해 짧은 이름을 사용해야 합니다.

PackageLayouts

PackageLayouts 컬렉션은 내용 리소스를 Windows Azure VM에서 파일 및 디렉터리의 특정 레이아웃에 매핑합니다. 파일 레이아웃에는 상대 경로뿐만 아니라 작성 및 수정 시간도 포함됩니다. 경로는 지정된 대상 파일 시스템에 특정한 것으로 간주되어야 합니다. 경로의 구문이 운영 체제에 따라 다르므로 경로는 불투명 값으로 처리되어야 합니다. 레이아웃은 단지 매핑의 설명이므로 레이아웃의 크기는 내용의 크기가 아니라 레이아웃에 있는 파일 수에 비례합니다. 즉, 이후의 패키지 작성자는 대체 레이아웃을 포함할 수 있습니다. 예를 들어 Linux를 대상으로 하는 레이아웃과 Windows 운영 체제를 대상으로 하는 레이아웃이 하나씩 있으면 운영 체제 중립적인 패키지를 작성할 수 있습니다. 그러나 Windows Azure SDK 1.7의 경우 패키지는 Windows 규칙을 따라야 합니다.

PackageLayouts 컬렉션은 패키지 내용을 Windows Azure 가상 컴퓨터에서 파일 및 디렉터리의 특정 레이아웃에 매핑합니다. 패키지 레이아웃은 명명되며 패키지에는 여러 가지 레이아웃이 있을 수 있습니다. 각 레이아웃은 패키지 내용 항목의 바이트 스트림을 대상 파일 시스템의 파일에 추출하는 방법을 설명합니다. 각 레이아웃은 대상 파일 시스템의 명명 규칙을 사용하는 고유한 파일 경로의 목록입니다. 패키지 작성자는 대체 레이아웃을 포함하고 운영 체제 중립적인 패키지를 작성할 수 있습니다. 예를 들어 패키지에 Linux를 대상으로 하는 레이아웃과 Windows를 대상으로 하는 레이아웃이 하나씩 포함될 수 있습니다. 레이아웃에는 UTC 작성 및 수정 시간, 읽기 전용 특성과 같은 파일 메타데이터도 포함됩니다.

PackageLayouts 컬렉션의 다음 예제에는 fileCollection1fileCollection2라는 두 가지 레이아웃이 포함되어 있습니다. 이러한 두 레이아웃은 패키지 리소스 Content/Example/WithoutHashContent/Example/WithHash에서 두 파일의 작성을 설명합니다. 그러나 두 레이아웃은 내용을 서로 다른 파일 이름에 매핑합니다. fileCollection1에서 파일 이름은 대/소문자를 구분하여 고유합니다. fileCollection2에서 이름은 대/소문자만 다릅니다. 이 예제에서는 패키지 형식이 중립적으로 디자인되는 방법을 보여 주지만 파일 레이아웃을 만든 패키지 작성자는 대상 파일 시스템 규칙을 알고 있어야 합니다. 두 번째 파일 레이아웃인 fileCollection2는 파일 시스템이 대/소문자를 구분하는 운영 체제에만 추출될 수 있습니다. 특히 FilePath 인수에서 인코딩된 문자열은 대/소문자를 구분하여 비교할 때 불투명 키로 처리됩니다.

<PackageLayouts>
    <LayoutDefinition>
      <Name>fileColletion1</Name>
      <LayoutDescription>
        <FileDefinition>
          <FilePath>Readme.txt</FilePath>
          <FileDescription>
            <DataContentReference>Content/Example/WithoutHash</DataContentReference>
            <CreatedTimeUtc>2012-02-01T01:16:33.9633733Z</CreatedTimeUtc>
            <ModifiedTimeUtc>2012-02-01T01:16:33.9643734Z</ModifiedTimeUtc>
            <ReadOnly>false</ReadOnly>
          </FileDescription>
        </FileDefinition>
        <FileDefinition>
          <FilePath>ReadmeToo.txt</FilePath>
          <FileDescription>
            <DataContentReference>Content/Example/WithHash</DataContentReference>
            <CreatedTimeUtc>2012-02-01T01:16:33.9643734Z</CreatedTimeUtc>
            <ModifiedTimeUtc>2012-02-01T01:16:33.9643734Z</ModifiedTimeUtc>
            <ReadOnly>false</ReadOnly>
          </FileDescription>
        </FileDefinition>
      </LayoutDescription>
    </LayoutDefinition>
    <LayoutDefinition>
      <Name>fileColletion2</Name>
      <LayoutDescription>
        <FileDefinition>
          <FilePath>README</FilePath>
          <FileDescription>
            <DataContentReference>Content/Example/WithoutHash</DataContentReference>
            <CreatedTimeUtc>2012-02-01T01:16:33.9643734Z</CreatedTimeUtc>
            <ModifiedTimeUtc>2012-02-01T01:16:33.9643734Z</ModifiedTimeUtc>
            <ReadOnly>false</ReadOnly>
          </FileDescription>
        </FileDefinition>
        <FileDefinition>
          <FilePath>Readme</FilePath>
          <FileDescription>
            <DataContentReference>Content/Example/WithHash</DataContentReference>
            <CreatedTimeUtc>2012-02-01T01:16:33.9643734Z</CreatedTimeUtc>
            <ModifiedTimeUtc>2012-02-01T01:16:33.9643734Z</ModifiedTimeUtc>
            <ReadOnly>false</ReadOnly>
          </FileDescription>
        </FileDefinition>
      </LayoutDescription>
    </LayoutDefinition>
  </PackageLayouts>

참고 항목

표시:
© 2015 Microsoft