[データ駆動型社会を支える「データスペース」の実像─ハンズオンで理解するその価値と可能性]
Eclipse Dataspace Components(EDC)を使ってデータスペースを体験しよう(3):第10回
2024年11月6日(水)角井 健太郎、土橋 昌、八木 拓馬、渡邊 凜太郎(NTTデータグループ 技術革新統括本部)
ビジネスの高度化はもちろん、社会運営にとってもデータ活用の重要性は論を俟たない。一方で、データがサイロ化しシステムや組織内で留まっていては、その真価は発揮されない。データを十全に生かすには、信頼性を担保しながら組織や国境を越えて共有・連携するためのプラットフォーム、すなわち「データスペース」が必要となる。第8回から第11回にかけては、欧州で開発されたデータスペース構築用フレームワーク「Eclipse Dataspace Components(EDC)」を実際に動かすことで、データスペースに対する理解を深めることを目指す。本稿では、データ提供者・利用者間の契約をベースにしたデータ転送の手順を紹介する。
第9回では、データスペース構築フレームワークの1つ「Eclipse Dataspace Components(EDC)」のサンプルプロジェクト「EDC Samples」を用いて契約締結を行いました。本稿では、第9回までに準備した環境を用い、EDCを用いたデータ転送をハンズオン形式で紹介します。
データ転送は以下の3つの手順で行います(図1)。
- データ転送プロセスの開始
- データ転送状況の確認
- データの取得
拡大画像表示
以降の作業では、第8回で構築した環境および第9回で実行した作業を前提に説明します。なお、ここで扱うサンプルは簡易的なものであり、内部で扱うデータを永続化しません。そのため、もしコネクタを停止した場合は、再度アセットの登録や契約の締結が必要となります。
本稿で紹介する手順を実行するために、まず第8回の流れに沿ってProvider側とConsumer側の2つのWSL2ウィンドウ(ターミナル)上にそれぞれのコネクタを起動し、さらにProvider側とConsumer側のそれぞれで、コマンド実行用のWSL2ウィンドウ(ターミナル)も起動してください。続いて、第9回の内容を実施し、「契約合意ID」を確認できるところまで作業してください。
データ転送プロセスの開始
ここでは、ConsumerからProvider宛にコネクタ経由でデータ転送開始リクエストを送信する手順を解説します(図2)。
具体的には、(1)ユーザー(データ利用者)からConsumerコネクタに、契約合意IDとともにデータ転送開始リクエストを送信します。(2)リクエストがProviderのコネクタに転送されます。(3)Providerのコネクタで契約合意IDを確認し、適切であれば転送プロセスが開始されます。(4)転送プロセスが開始された場合、Consumerに「データ転送プロセスID」が返されます。
拡大画像表示
上述のプロセスを実行するためのに、まずはリクエストボディを作成します。第9回までの手順で取得した契約合意IDの値を、transfer/transfer-02-consumer-pull/resources/start-transfer.json
のcontractId
の値に入力します。なお、本稿に記載している値は筆者が実行した際の例なので、以下の手順を実行する際は、読者ご自身の値を用いるようにしてください。なお、プロジェクトをクローンした最初の状態では{{contract-agreement-id}}
と記載されています。
cat transfer/transfer-02-consumer-pull/resources/start-transfer.json -s | jq
Consumerコネクタのコマンド例
{
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/"
},
"@type": "TransferRequestDto",
"connectorId": "provider",
"counterPartyAddress": "http://localhost:19194/protocol",
"contractId": "97f2f6a7-8a03-4fc7-93d9-0b4146db3c9d",
"assetId": "assetId",
"protocol": "dataspace-protocol-http",
"transferType": "HttpData-PULL"
}
実行結果例(太字部分は契約合意ID)
上記のリクエストボディとともに、Consumerコネクタの/management/v3/transferprocesses
パスのエンドポイントにリクエストを送信します。その結果、コネクタ経由でProvider宛にデータ転送プロセスの開始リクエストが送信されます。
契約合意IDの値が適切であることがProvider側で確認された場合、以下のようにデータ転送プロセスID(Transfer process id)が記載された実行結果が得られます。 データ転送プロセスIDの値は、データ転送状況の確認の際に使いますので、お手元に控えておいてください。
curl -X POST "http://localhost:29193/management/v3/transferprocesses" -H "Content-Type: application/json" -d @transfer/transfer-02-consumer-pull/resources/start-transfer.json -s | jq
Consumerコネクタのコマンド例
{
"@type": "IdResponse",
"@id": "5dbf2e81-f3d0-46c5-ba6e-6ed7955ae2ff",
"createdAt": 1723531454719,
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/",
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"odrl": "http://www.w3.org/ns/odrl/2/"
}
実行結果例(太字部分はデータ転送プロセスID)
データ転送状況の確認
次に、データ転送プロセスの状況(ステータス)を確認します(図3)。まず、(1)ユーザー(データ利用者)がConsumerコネクタにデータ転送プロセスのステータス確認依頼を送信。(2)ステータス確認依頼がProviderに転送され、(3)ステータスが返されます。
拡大画像表示
ここでは、/management/v3/transferprocesses/{{transfer process id}}
のパスのエンドポイントにステータス確認依頼を送信します。なお、上記の{{transfer process id}}
の部分は、先の作業で得られたデータ転送プロセスIDに置き換えてください。
適切にプロセスが開始されている場合、実行結果内のstate
欄の値がSTARTED
となります。
curl http://localhost:29193/management/v3/transferprocesses/{{transfer processed}} -s | jq
Consumerコネクタのコマンド例
{
"@id":"5dbf2e81-f3d0-46c5-ba6e-6ed7955ae2ff",
"@type":"TransferProcess",
"state":"STARTED",
"stateTimestamp":1723531456163,
"type":"CONSUMER",
"callbackAddresses":[],
"correlationId": "cb1adb8f-df91-41fe-80c0-c95aaf02c809",
"assetId": "assetId",
"contractId": "69bc1fd5-f421-436d-aeda-04cc18cc2f4b",
"transferType": "HttpData-PULL",
"@context": {
"@vocab": "https://w3id.org/edc/v0.0.1/ns/",
"edc": "https://w3id.org/edc/v0.0.1/ns/",
"odrl": "http://www.w3.org/ns/odrl/2/"
}
}
実行結果例(太字部分はデータ転送プロセスのステータス)
●Next:鍵の受け渡しを通じた安全なデータ取得の流れ
会員登録(無料)が必要です
- 1
- 2
- 次へ >
- Eclipse Dataspace Components(EDC)を使ってデータスペースを体験しよう(2):第9回(2024/10/30)
- Eclipse Dataspace Components(EDC)を使ってデータスペースを体験しよう(1):第8回(2024/10/23)
- 欧州発のデータスペースの動向とOSSプロジェクトの最前線:第7回(2024/10/16)
- CADDEを動かしてデータスペースを体験しよう[後編]:第6回(2024/10/09)
- CADDEを動かしてデータスペースを体験しよう[前編]:第5回(2024/10/02)