バージョン付レイヤーにデータを公開します

現在 blob 、このサービスは REST API バージョン v1 およびをサポート v2しています。 v1 バージョン管理、インデックス作成、およびストリーム(ストリームペイロードが 1MB より大きい場合)の各レイヤーへのアクセスには、バージョンを使用する必要があります。 v2 オブジェクト ストア レイヤーにアクセスするには、バージョンを使用する必要があります。 正しい API バージョンの応答が返されるように、 API 検索から適切な API バージョンを常に選択してください。 手順については 、『 API Lookup 開発者ガイド』を参照してください。

1 つ以上のバージョンレイヤーにデータを公開するには、データをすべて 1 つのパブリケーションにまとめて公開して、一緒にバージョン管理できるようにする必要があります。 REST API publishv2(メタデータの場合)および blobv1(データの場合)を使用して、バージョン管理されたレイヤーにデータをアップロードして公開します。

一般的なパブリケーションフローは、次の手順で構成されています。

  1. 認可トークンを取得します。
  2. API ベースの URL を取得します。
  3. パブリケーションを初期化します。
  4. データ ハンドルを生成します。
  5. 複数パーツのアップロードを初期化します。
  6. データパーツをアップロードします。
  7. マルチパートのアップロードを完了します。
  8. ステータスを待ちます。
  9. メタデータを生成します。
  10. メタデータをアップロードします。
  11. メタデータを削除します。
  12. パブリケーションを送信します。
  13. パブリケーションが完了するまで待ちます。

これらの手順については、以下で説明します。

  1. HTTP 要求の認可トークンを取得します。

    認可トークンの取得方法については、次の URL を参照してください。

    『 ID およびアクセス管理ガイド』を参照してください

  2. 公開先のカタログのpublishおよび blobAPI の API ベースの URL を取得します。

    API ベースの URL を取得するには、 API ルックアップサービスを使用します。 手順については、以下を参照してください。

    API 検索開発者ガイド

  3. パブリケーションを初期化します。

    パブリケーションを初期化するには、公開先のレイヤーを指定します。 パブリケーションが初期化されると、パブリケーショントークンが届き publish ます。このメタデータを使用して、 API を使用して をパブリッシュし、新しく初期化したパブリケーションについての情報を取得します。

    パブリケーションを初期化するには publish 、 API を使用します。

    POST /<Base path for the publish API from the API Lookup Service>/publications HTTP/1.1
    Host: <Hostname for the publish API from the API Lookup Service>
    Authorization: Bearer <Authorization Token>
    Content-Type: application/json
    Cache-Control: no-cache
    
    {
      "layerIds": [
        "<Layer to Publish To>"
      ]
    }
    

    応答に はパブリケーション ID が含まれます。 例 :

    {
        "id": "abc1234567-xy90-11aa-abc123-abc123456789",
        ...
    }
    

    publish API では、バージョン管理されたレイヤーで一度に 1 つのアクティブなパブリケーションのみがサポートされます。 別の発行者がアクティブに発行しているときにパブリケーションを初期化すると、アクティブなパブリケーションがキャンセルされます。 既存のパブリケーションが送信されたがまだ完了していない場合は、初期化しようとすると 409 Conflict エラーが発生します。

  4. データ ハンドルを生成します。

    blob API を使用してデータをアップロードするには、データの一意の識別子を生成する必要があります。 これは データ ハンドルと呼ばれます。

    データ ハンドルを生成する場合は、次の点に注意してください。

    • データ ハンドルは任意のものを選択できますが、すべてのバージョンでレイヤー内で一意である必要があります。
    • データ ハンドルには、任意の一意の番号、またはコンテンツまたはメタデータのハッシュを指定できます。
    • データ ハンドルを使用してデータをアップロードした後は、データ ハンドルを再利用できません。
    • データ ハンドルがすでに使用されているためにデータのアップロードに失敗した場合は、再試行ロジックでアップロード用の新しいデータ ハンドルを生成する必要があります。

    データ ハンドルの競合を管理するロジックを作成する必要があります。 たとえば、処理を再開して既存のデータ ハンドルにデータを再アップロードしようとすると、エラーが発生し、アップロードが失敗します。

    blob API を使用して、データ ハンドルがすでに存在するかどうかを確認できます。

    HEAD /<Base path for the blob API from the API Lookup Service>/layers/<Layer ID>/data/<Data Handle> HTTP/1.1
    Host: <Hostname for the blob API from the API Lookup Service>
    Authorization: Bearer <Authorization Token>
    Cache-Control: no-cache
    

    応答が成功すると、指定したデータ ハンドルが存在します。

    blob API を使用して、マルチパートアップロードの初期化、データパートのアップロード、およびマルチパートアップロードの完了によって生成したデータ ハンドルを使用してデータをアップロードできるようになりました。

  5. データ ハンドルのマルチパートアップロードを初期化します。

    データ ハンドルのマルチパートアップロードを初期化するには、次のリクエストを使用します。

    POST /<Base path for the blob API from the API Lookup Service>/layers/<Layer ID>/data/<Data Handle>/multiparts HTTP/1.1
    Host: <Hostname for the blob API from the API Lookup Service>
    Authorization: Bearer <Authorization Token>
    Content-Type: application/json
    Cache-Control: no-cache
    
    {
      "contentType": "application/octet-stream"
    }
    

    応答には、アップロードを管理するための URL が含まれています。

     {
       "links": {
         "uploadPart": {
           "href": "https://blobstore.data.api.platform.here.com/blobstore/v1/catalogs/documentation-test/layers/versioned-layer-1/data/DataHandleA/multiparts/eyJvYmplY3RJZCI6ImVyaWtzSGFuZGxlQSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vanNvbiIsInVwbG9hZElkIjoiZS42eXhqRGdkSEttMlVvcThFYUZGUUk0V2tyV01naFNrcVJiaGc5ZFp4eEVWY1pFUVBZdDBMeXlLQ1NRS1BUcHlwWGg4eEVoTlBFbnJLYnptTnRmbWVUdnJpY1plZi45M2VybWU3S2NwZHJiT2lyQjdTS1Bod2FUSTg5ZmpRNHoifQ=/parts",
           "method": "POST"
         },
         "complete": {
           "href": "https://blobstore.data.api.platform.here.com/blobstore/v1/catalogs/documentation-test/layers/versioned-layer-1/data/DataHandleA/multiparts/eyJvYmplY3RJZCI6ImVyaWtzSGFuZGxlQSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vanNvbiIsInVwbG9hZElkIjoiZS42eXhqRGdkSEttMlVvcThFYUZGUUk0V2tyV01naFNrcVJiaGc5ZFp4eEVWY1pFUVBZdDBMeXlLQ1NRS1BUcHlwWGg4eEVoTlBFbnJLYnptTnRmbWVUdnJpY1plZi45M2VybWU3S2NwZHJiT2lyQjdTS1Bod2FUSTg5ZmpRNHoifQ=",
           "method": "PUT"
         },
         "status": {
           "href": "https://blobstore.data.api.platform.here.com/blobstore/v1/catalogs/documentation-test/layers/versioned-layer-1/data/DataHandleA/multiparts/eyJvYmplY3RJZCI6ImVyaWtzSGFuZGxlQSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vanNvbiIsInVwbG9hZElkIjoiZS42eXhqRGdkSEttMlVvcThFYUZGUUk0V2tyV01naFNrcVJiaGc5ZFp4eEVWY1pFUVBZdDBMeXlLQ1NRS1BUcHlwWGg4eEVoTlBFbnJLYnptTnRmbWVUdnJpY1plZi45M2VybWU3S2NwZHJiT2lyQjdTS1Bod2FUSTg5ZmpRNHoifQ=",
           "method": "GET"
         },
         "delete": {
           "href": "https://blobstore.data.api.platform.here.com/blobstore/v1/catalogs/documentation-test/layers/versioned-layer-1/data/DataHandleA/multiparts/eyJvYmplY3RJZCI6ImVyaWtzSGFuZGxlQSIsImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vanNvbiIsInVwbG9hZElkIjoiZS42eXhqRGdkSEttMlVvcThFYUZGUUk0V2tyV01naFNrcVJiaGc5ZFp4eEVWY1pFUVBZdDBMeXlLQ1NRS1BUcHlwWGg4eEVoTlBFbnJLYnptTnRmbWVUdnJpY1plZi45M2VybWU3S2NwZHJiT2lyQjdTS1Bod2FUSTg5ZmpRNHoifQ=",
           "method": "DELETE"
         }
       }
     }
    
  6. データパーツをアップロードします。

    マルチパートのアップロードを初期化したので uploadPart、前のステップで指定した POST メソッドの URL を使用してデータをアップロードできます。この名前はです。

    50 MB を超えるデータをアップロードする場合は、データをパーツに分割し、各パーツを個別にアップロードする必要があります。 各パーツの最小サイズは 5 MB ですが、最小サイズではない最後のパーツは除きます。 部品内の最大データ量は 5 GB です。 また、クエリ パラメーターでパーツ番号を入力する必要が partNumberあります。パーツ番号は後でデータを再構成するために使用されます。

    50 MB 未満のデータをアップロードする場合は、データを 1 つのパートにアップロードできますが、最小サイズはありません。

    POST <Path for uploadPart from prior step> HTTP/1.1
    Host: <Hostname for uploadPart from prior step>
    Authorization: Bearer <Authorization Token>
    Content-Type: application/octet-stream
    Cache-Control: no-cache
    
    <Data to Upload>
    

    応答には アップロードしたパーツの ID である etag ヘッダーが含まれています。 マルチパートのアップロードを完了するために必要に応じて、これらを収集し、関連付けられている部品番号と関連付けます。

    HTTP 5xx エラーを処理するための再試行ロジックがアプリケーションに含まれていることを推奨します。 再試行ロジックで指数バックオフを使用します。

  7. マルチパートのアップロードを完了します。

    複数パーツのアップロードを完了するには、この complete リクエストを作成するために指定された URL を使用して、アップロードされたすべてのパーツのタグとパーツ番号を入力します。

    PUT <Path for complete from prior step> HTTP/1.1
    Host: <Hostname for complete from prior step>
    Authorization: Bearer <Authorization Token>
    Content-Type: application/json
    Cache-Control: no-cache
    
    {
      "parts": [
        {
          "etag": "yJvYmplY3RJZCI6ImVyaWtzSGFuZGxlQSIsImNvbnRlbnRUeXBlIjoiYXBwbGlj"
          "number": 1
        },
        {
          "etag": "1h2h3k4j5h6ZCI6ImVyaWtzSGFuZGxlQadjiwo234ADF2323k34H5heoH543Hr"
          "number": 2
        }
      ]
    }
    
  8. ステータスを待ちます。

    このリクエストを作成するには、 URL Named statuscompletedを受信するか、またはsuccess使用するまで、アップロードのステータスをポーリングする必要があります。

    GET <Path for status from prior step> HTTP/1.1
    Host: <Hostname for status from prior step>
    Authorization: Bearer <Authorization Token>
    Cache-Control: no-cache
    
  9. メタデータを生成します。

    すべてのデータパーツがアップロードされたら、 HERE platform 内のデータを表すために使用されるメタデータを生成する必要があります。 少なくとも、メタデータはパーティション ID とデータのアップロードに使用したデータ ハンドルで構成されている必要があります。 設定できるフィールドの詳細な説明については publish 、『 API リファレンス for the API 』を参照してください。

    API レファレンス (英語)

    メタデータを生成したら、すべてのデータがアップロードされ、すべてのメタデータが生成されたら、次のステップに進み、メタデータをアップロードできるように、どこかに集約します。

  10. メタデータをアップロードします。

    メタデータをアップロードするには publish 、 API を使用します。 例 :

    POST /<Base path for the publish API from the API Lookup Service>/layers/<Layer ID>/publications/<Publication Id>/partitions HTTP/1.1
    Host: <Hostname for the publish API from the API Lookup Service>
    Authorization: Bearer <Authorization Token>
    Content-Type: application/json
    Cache-Control: no-cache
    {
     "partitions": [
       {
         "compressedDataSize": 0,
         "dataHandle": "DataHandleA",
         "dataSize": 0,
         "partition": "partition01"
       }
      ]
    }
    

    1 つのリクエストでアップロードおよび公開できるパーティションの最大数は 1,000 です。 1,000 を超えるパーティションをアップロードする場合は、最初の 1,000 個のパーティションのデータをアップロードしてから、 1,000 個のパーティションのメタデータをアップロードします。 次に、次のパーティションのセットに進みます。 すべてのデータがアップロードされるまで待ってからメタデータをアップロードしないでください。 パフォーマンスが低下する可能性があります。 代わりに、データをアップロードしてからメタデータを実行し、必要に応じてすべてのデータと対応するメタデータがアップロードされるまで繰り返します。

  11. メタデータを削除します

    メタデータを削除するに publish は、 API を使用してメタデータを公開する場合と同じ手順を実行しますが、削除するパーティションの空のデータハンドルを送信するだけです。 例 :

    POST /<Base path for the publish API from the API Lookup Service>/layers/<Layer ID>/publications/<Publication Id>/partitions HTTP/1.1
    Host: <Hostname for the publish API from the API Lookup Service>
    Authorization: Bearer <Authorization Token>
    Content-Type: application/json
    Cache-Control: no-cache
    {
    "partitions": [
      {
        "partition": "partition01"
        "dataHandle": ""
      }
     ]
    }
    

    パーティションは、 1 つのパブリケーションで削除および追加できます。

  12. パブリケーションを送信します。

    パブリケーションを送信するには publish 、 API を使用します。

    PUT /<Base path for the publish API from the API Lookup Service>/publications/<Publication ID> HTTP/1.1
    Host: <Hostname for the publish API from the API Lookup Service>
    Authorization: Bearer <Authorization Token>
    Cache-Control: no-cache
    

    パブリケーションを送信すると、メタデータ処理が開始されます。 パブリケーションプロセスを変更または中断することはできません。そのため、パブリケーションを送信する前に準備ができていることを確認してください。

  13. パブリケーションが完了するまで待ちます。

    パブリケーションが送信されると、 HERE platform がそのパブリケーションを処理します。 現在のパブリケーションの量およびパブリケーションのサイズによっては、処理に数分から数時間かかることがあります。 publish API を使用して、パブリケーションのステータスを確認できます。

    GET /<Base path for the publish API from the API Lookup Service>/publications/<Publication Id> HTTP/1.1
    Host: <Hostname for the publish API from the API Lookup Service>
    Authorization: Bearer <Authorization Token>
    Cache-Control: no-cache
    

    publish v2 の場合、完了したパブリケーションの応答は HTTP ステータス 200 OK を返し、応答本文のstateフィールドに値succeededが含まれます。 例 :

    {
    "layerDetails": [],
    "catalogVersion": 394,
    "id": "v2-1ca3aee1-1c3f-4a98-8288-ecfed7466133",
    "catalogId": "my-catalog",
    "details": {
        "expires": 1526769797871,
        "state": "succeeded",
        "modified": 1526510600520,
        "message": "Publication has succeeded",
        "started": 1526510597871
    },
    "layerIds": [
        "versioned-layer"
    ],
    "type": "partition",
    "versionDependencies": [
        {
            "hrn": "hrn:my-company:data:::my-catalog",
            "version": 395,
            "direct": true
        }
    ]
    }
    

HTTP ステータスはパブリケーションステータスとは相関しないため、 HTTP ステータスに依存するだけではなく、stateフィールドの値succeededを確認する必要があります。 ステータスが「失敗」の場合、新しいパブリケーションを初期化し、失敗メッセージに記載されている問題が解決された後でメタデータを再アップロードする必要があります。 アップロードされたデータおよびデータハンドルは再利用できます。

完了を待っていることは、以前にファイナライズされたパブリケーションが完了するまで新しいパブリケーションを開始できないため、バージョン管理されたパブリケーションプロセスの重要な部分です。 新しいパブリケーションを開始しようとすると、 HTTP 409 の競合応答が発生します。

」に一致する結果は 件です

    」に一致する結果はありません