|
6 | 6 | "source": [ |
7 | 7 | "# APC-CLI 基本チュートリアル 実行フロー\n", |
8 | 8 | "\n", |
9 | | - "基本的に各ステップを上から順に実行することで、AutoPrivacy DCR上で関数を実行することができます。\n", |
| 9 | + "各ステップを上から順に実行することで、AutoPrivacy DCR上で関数を実行することができます。\n", |
10 | 10 | "AutoPrivacy DCRの操作をCLIから行うツールとして、APC-CLIというコマンドラインツールを用います。\n", |
11 | 11 | "\n", |
12 | | - "**このJupyterNotebookは[こちら](https://github.com/acompany-develop/dcr-docs-examples/blob/main/notebooks/tutorial/basic_apc_cli_tutorial.ipynb)に上がっているため、ステップ2の環境変数さえ設定すれば、あとは説明に従って各セルを実行するだけで、AutoPrivacy DCR上で処理を実行できるようになっています。**\n", |
| 12 | + "**このJupyterNotebookは[dcr-docs-examplesリポジトリ](https://github.com/acompany-develop/dcr-docs-examples)に含まれています。リポジトリをクローンし、ステップ3の環境変数を設定すれば、説明に従って各セルを実行するだけでAutoPrivacy DCR上で処理を実行できます。**\n", |
13 | 13 | "\n", |
14 | 14 | "## 概要\n", |
15 | 15 | "\n", |
16 | 16 | "このスクリプトは以下の主要なステップで構成されています:\n", |
17 | | - "1. 全体概要\n", |
18 | | - "2. 環境変数設定\n", |
19 | | - "3. APC-CLI のセットアップ\n", |
20 | | - "4. プロファイル設定\n", |
21 | | - "5. 入出力の設定ファイルの生成\n", |
22 | | - "6. 認証とヘルスチェック\n", |
23 | | - "7. プロジェクト設定\n", |
24 | | - "8. 関数の準備\n", |
25 | | - "9. 関数ストレージへのアップロード\n", |
26 | | - "10. Cleanroom デプロイ\n", |
27 | | - "11. データの Cleanroom へのコピー\n", |
28 | | - "12. Cleanroom の実行\n", |
29 | | - "13. 結果のダウンロード\n", |
30 | | - "14. クリーンアップ" |
| 17 | + "1. チュートリアル全体概要\n", |
| 18 | + "2. AutoPrivacy DCR 概要\n", |
| 19 | + "3. 環境変数設定\n", |
| 20 | + "4. APC-CLI のセットアップ\n", |
| 21 | + "5. プロファイル設定\n", |
| 22 | + "6. 入出力の設定ファイルの生成\n", |
| 23 | + "7. 認証とヘルスチェック\n", |
| 24 | + "8. プロジェクト設定\n", |
| 25 | + "9. 関数の準備\n", |
| 26 | + "10. 関数ストレージへのアップロード\n", |
| 27 | + "11. Cleanroom デプロイ\n", |
| 28 | + "12. データの Cleanroom へのコピー\n", |
| 29 | + "13. Cleanroom の実行\n", |
| 30 | + "14. 結果のダウンロード\n", |
| 31 | + "15. クリーンアップ" |
31 | 32 | ] |
32 | 33 | }, |
33 | 34 | { |
34 | 35 | "cell_type": "markdown", |
35 | 36 | "metadata": {}, |
36 | 37 | "source": [ |
37 | | - "## 1. 全体概要\n", |
38 | | - "Cleanroomを用いることで、二者間で安全にデータを共有し実行することが可能となります。APC-CLI実行時に基本的にprofile(user)を指定するのですが、profileが異なれば異なるユーザーから実行されることを想定しているため、異なるマシンから実行することが可能です(同一のマシンから実行することも可能)。\n", |
39 | | - "具体的なフロー図は以下のようになります。\n", |
| 38 | + "## 1. チュートリアル全体概要\n", |
40 | 39 | "\n", |
41 | | - "<details><summary>フロー図</summary>\n", |
42 | | - "<img src=\"../img/apc_sequence.svg\" width=\"800\">\n", |
43 | | - "</details>" |
44 | | - ] |
45 | | - }, |
46 | | - { |
47 | | - "cell_type": "markdown", |
48 | | - "metadata": {}, |
49 | | - "source": [ |
50 | | - "## 2. 環境変数設定\n", |
51 | | - "ファイル・ディレクトリ構成としては、今回は以下のようなものを想定します。この詳細については[こちら](https://acompany-develop.github.io/autoprivacy-cloud/apc-dcr/user-guide/user-files/function-directory.html)から参照できます。" |
52 | | - ] |
53 | | - }, |
54 | | - { |
55 | | - "cell_type": "markdown", |
56 | | - "metadata": {}, |
57 | | - "source": [ |
58 | | - "```\n", |
59 | | - "FUNCTION_SOURCE_PATH\n", |
60 | | - "├── function # 関数のパス\n", |
61 | | - "│ └── handler.py\n", |
62 | | - "│ └── packages # 依存パッケージのパス\n", |
63 | | - "├── inputs # 入力データのパス\n", |
64 | | - "│ ├── input_1\n", |
65 | | - "│ └── input_2\n", |
66 | | - "└── outputs # 出力データのパス\n", |
67 | | - " ├── output_1\n", |
68 | | - " └── output_2\n", |
69 | | - "```" |
| 40 | + "このチュートリアルでは、AutoPrivacy DCRを使用してデータの安全な共有と処理を実現する方法を説明します。具体的には、二者間でデータを共有し、Cleanroom上でjoin関数を実行することで、プライバシーを保護しながらデータ処理を行います。join関数の全実装は[こちらのコード](https://github.com/acompany-develop/dcr-docs-examples/blob/main/functions/join/function/handler.py)のようになります。\n", |
| 41 | + "\n", |
| 42 | + "**前提条件:**\n", |
| 43 | + "- 設定情報(CLIENT_ID、CLIENT_SECRET等)\n", |
| 44 | + "- Python 3.10\n", |
| 45 | + "- OS: macOS、Linux\n", |
| 46 | + "- アーキテクチャ: x86_64、ARM64" |
70 | 47 | ] |
71 | 48 | }, |
72 | 49 | { |
73 | 50 | "cell_type": "markdown", |
74 | 51 | "metadata": {}, |
75 | 52 | "source": [ |
76 | | - "このチュートリアルではjoin関数をCleanroom上で実行します。join関数の全実装は[こちら](https://github.com/acompany-develop/dcr-docs-examples/blob/main/functions/join/function/handler.py)のようになります。" |
| 53 | + "## 2. AutoPrivacy DCR 概要\n", |
| 54 | + "Cleanroomを用いることで、二者間で安全にデータを共有し実行することが可能となります。APC-CLI実行時にprofile(user)を指定することで、異なるユーザーとして実行することができます。profileによってユーザーが区別されるため、異なるマシンから実行することが可能です(同一のマシンから実行することも可能)。\n", |
| 55 | + "具体的なフロー図は以下のようになります。\n", |
| 56 | + "\n", |
| 57 | + "<details><summary>フロー図</summary>\n", |
| 58 | + "<img src=\"../img/apc_sequence.svg\" width=\"800\">\n", |
| 59 | + "</details>" |
77 | 60 | ] |
78 | 61 | }, |
79 | 62 | { |
80 | 63 | "cell_type": "markdown", |
81 | 64 | "metadata": {}, |
82 | 65 | "source": [ |
83 | | - "実行に必要な環境変数を.envファイルに書き込みます。`API_URL`, `ATTESTATION_URL`, `ATTESTATION_API_VERSION`, `MR_ENCLAVE`, `MR_SIGNER`, `CLIENT_ID1`, `CLIENT_SECRET1`, `CLIENT_ID2`, `CLIENT_SECRET2`, `PROJECT_ID`という環境変数の値はAutoPrivacy DCRサービス提供者から提供されたものを使用します。ただし、ダブルクオーテーションはつけずに値だけを環境変数に代入してください。\n", |
| 66 | + "## 3. 環境変数設定\n", |
84 | 67 | "\n", |
85 | | - "なお、データ共有を行う二者間では、`CLIENT_ID`と`CLIENT_SECRET`だけ異なり、それ以外環境変数の値(`API_URL`, `ATTESTATION_URL`, `ATTESTATION_API_VERSION`, `MR_ENCLAVE`, `MR_SIGNER`, `PROJECT_ID`)は同一になります。" |
| 68 | + "実行に必要な環境変数を設定します。`API_URL`, `ATTESTATION_URL`, `ATTESTATION_API_VERSION`, `MR_ENCLAVE`, `MR_SIGNER`, `CLIENT_ID1`, `CLIENT_SECRET1`, `CLIENT_ID2`, `CLIENT_SECRET2`, `PROJECT_ID`という環境変数の値は、AutoPrivacy DCRサービス提供者から提供されるconfig.tomlファイルに記載されています。ただし、ダブルクオーテーションはつけずに値だけを環境変数に代入してください。\n", |
| 69 | + "\n", |
| 70 | + "なお、データ共有を行う二者間では、`CLIENT_ID`と`CLIENT_SECRET`だけ異なり、それ以外の環境変数の値(`API_URL`, `ATTESTATION_URL`, `ATTESTATION_API_VERSION`, `MR_ENCLAVE`, `MR_SIGNER`, `PROJECT_ID`)は同一になります。" |
86 | 71 | ] |
87 | 72 | }, |
88 | 73 | { |
|
115 | 100 | "cell_type": "markdown", |
116 | 101 | "metadata": {}, |
117 | 102 | "source": [ |
118 | | - "## 3. APC-CLI のセットアップ\n", |
| 103 | + "## 4. APC-CLI のセットアップ\n", |
119 | 104 | "\n", |
120 | 105 | "詳細なAPC-CLIのセットアップ方法については、[こちら](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/getting-started/installation.html)から参照できます。\n", |
121 | 106 | "\n", |
|
139 | 124 | "cell_type": "markdown", |
140 | 125 | "metadata": {}, |
141 | 126 | "source": [ |
142 | | - "指定したバージョンでAPC-CLIをダウンロードします。" |
| 127 | + "指定したバージョンでAPC-CLIをダウンロードします。\n", |
| 128 | + "\n", |
| 129 | + "**注意**: このステップではwgetを使用します。wgetがインストールされていない場合は、以下のコマンドでインストールしてください:\n", |
| 130 | + "- **macOS**: `brew install wget`\n", |
| 131 | + "- **Linux (Ubuntu/Debian)**: `sudo apt-get install wget`" |
143 | 132 | ] |
144 | 133 | }, |
145 | 134 | { |
|
226 | 215 | "cell_type": "markdown", |
227 | 216 | "metadata": {}, |
228 | 217 | "source": [ |
229 | | - "## 4. プロファイル設定\n", |
230 | | - "各プロファイルに対して種設定情報を入力し、User IDを生成します。\n", |
| 218 | + "## 5. プロファイル設定\n", |
| 219 | + "各プロファイルに対して設定情報を入力し、User IDを生成します。\n", |
231 | 220 | "今回のチュートリアルでは標準出力されるUserIDを環境変数に読み込むために以下のようにコマンドを実行します。\n", |
232 | 221 | "コマンドの詳細は [configure コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/configure.html) から参照できます。\n", |
233 | 222 | "\n", |
|
307 | 296 | "cell_type": "markdown", |
308 | 297 | "metadata": {}, |
309 | 298 | "source": [ |
310 | | - "## 5. 入出力の設定ファイルの生成\n", |
| 299 | + "## 6. 入出力の設定ファイルの生成\n", |
311 | 300 | "\n", |
312 | | - "入出力の設定ファイルを`$ENCRYPTED_FILES_PATH`に作成します。詳細は[こちら](https://acompany-develop.github.io/autoprivacy-cloud/apc-dcr/user-guide/user-files/definition-files.html)から参照できます。\n", |
| 301 | + "入出力の設定ファイルを`$ENCRYPTED_FILES_PATH`に作成します。この設定ファイルでは、入力データと出力データにアクセス可能なUser IDを指定します。\n", |
| 302 | + "詳細は[こちら](https://acompany-develop.github.io/autoprivacy-cloud/apc-dcr/user-guide/user-files/definition-files.html)から参照できます。\n", |
313 | 303 | "\n", |
314 | | - "**ただし、実行前に**`<USER_1_ID>`**と**`<USER_2_ID>`**を5で出力された**`profile1`**と**`profile2`**のUser IDに置き換えてください。**" |
| 304 | + "**注意: 以下のコマンド実行前に**`<USER_1_ID>`**と**`<USER_2_ID>`**を5で出力された**`profile1`**と**`profile2`**のUser IDに置き換えてください。**" |
315 | 305 | ] |
316 | 306 | }, |
317 | 307 | { |
|
340 | 330 | "cell_type": "markdown", |
341 | 331 | "metadata": {}, |
342 | 332 | "source": [ |
343 | | - "## 6. 認証とヘルスチェック\n", |
| 333 | + "## 7. 認証とヘルスチェック\n", |
344 | 334 | "\n", |
345 | 335 | "各プロファイルでログインします。コマンドの詳細は [auth-login コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/auth-login.html) から参照できます。" |
346 | 336 | ] |
|
386 | 376 | "cell_type": "markdown", |
387 | 377 | "metadata": {}, |
388 | 378 | "source": [ |
389 | | - "## 7. プロジェクト設定\n", |
| 379 | + "## 8. プロジェクト設定\n", |
390 | 380 | "\n", |
391 | 381 | "各プロファイルで同じプロジェクトを設定します。コマンドの詳細は [set-project コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/set-project.html) から参照できます。" |
392 | 382 | ] |
|
410 | 400 | "cell_type": "markdown", |
411 | 401 | "metadata": {}, |
412 | 402 | "source": [ |
413 | | - "## 8. 関数の準備\n", |
414 | | - "Cleanroom上で実行する関数のパスを設定します。\n", |
415 | | - "今回のチュートリアルでは、リポジトリの中のjoin関数のパスを`FUNCTION_SOURCE_PATH`に指定します。\n", |
| 403 | + "## 9. 関数の準備\n", |
| 404 | + "\n", |
| 405 | + "Cleanroom上で実行する関数のパスを設定します。今回のチュートリアルでは、リポジトリの中のjoin関数のパスを`FUNCTION_SOURCE_PATH`に指定します。\n", |
| 406 | + "\n", |
| 407 | + "ファイル・ディレクトリ構成としては、今回は以下のようなものを想定します。ディレクトリ構成の詳細については[ドキュメント](https://acompany-develop.github.io/autoprivacy-cloud/apc-dcr/user-guide/user-files/function-directory.html)から参照できます。\n", |
| 408 | + "\n", |
| 409 | + "```\n", |
| 410 | + "FUNCTION_SOURCE_PATH\n", |
| 411 | + "├── function # 関数のパス\n", |
| 412 | + "│ └── handler.py\n", |
| 413 | + "│ └── packages # 依存パッケージのパス\n", |
| 414 | + "├── inputs # 入力データのパス\n", |
| 415 | + "│ ├── input_1\n", |
| 416 | + "│ └── input_2\n", |
| 417 | + "└── outputs # 出力データのパス\n", |
| 418 | + " ├── output_1\n", |
| 419 | + " └── output_2\n", |
| 420 | + "```\n", |
| 421 | + "\n", |
416 | 422 | "なお、[このディレクトリ](https://github.com/acompany-develop/dcr-docs-examples/tree/main/functions)の中の関数はCleanroom上で実行可能であり、これらの関数のパスを指定することも可能です。" |
417 | 423 | ] |
418 | 424 | }, |
|
468 | 474 | "cell_type": "markdown", |
469 | 475 | "metadata": {}, |
470 | 476 | "source": [ |
471 | | - "## 9. 関数ストレージへのアップロード\n", |
| 477 | + "## 10. 関数ストレージへのアップロード\n", |
472 | 478 | "\n", |
473 | 479 | "関数ディレクトリのパスを指定した上で、実行する関数をCleanroom上にアップロードします。コマンドの詳細は [function-storage コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/function-storage.html#function-storage-upload) から参照できます。なお、出力された`FunctionStoragePath`は次のCleanroomデプロイのステップで使用します。" |
474 | 480 | ] |
|
491 | 497 | "cell_type": "markdown", |
492 | 498 | "metadata": {}, |
493 | 499 | "source": [ |
494 | | - "## 10. Cleanroom デプロイ\n", |
| 500 | + "## 11. Cleanroom デプロイ\n", |
495 | 501 | "\n", |
496 | 502 | "アップロードされた関数を使用してCleanroomアプリケーションをデプロイします。\n", |
497 | 503 | "コマンドの詳細は [cleanroom deploy コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/cleanroom.html#cleanroom-deploy) から参照できます。\n", |
498 | 504 | "\n", |
499 | | - "**ただし、実行前に**`--source`**オプションの引数の<FUNCTION_STORAGE_PATH>を9で出力された**`FunctionStoragePath`**の値に置き換えてください。**" |
| 505 | + "**注意: 以下のコマンド実行前に**`--source`**オプションの引数の<FUNCTION_STORAGE_PATH>を10で出力された**`FunctionStoragePath`**の値に置き換えてください。**" |
500 | 506 | ] |
501 | 507 | }, |
502 | 508 | { |
|
524 | 530 | "cell_type": "markdown", |
525 | 531 | "metadata": {}, |
526 | 532 | "source": [ |
527 | | - "## 11. データの Cleanroom へのコピー\n", |
| 533 | + "## 12. データの Cleanroom へのコピー\n", |
528 | 534 | "\n", |
529 | 535 | "各プロファイルから、ローカルの入力データをCleanroom上にコピーします。コマンドの詳細は [cleanroom copyコマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/cleanroom-data.html) から参照できます。" |
530 | 536 | ] |
|
548 | 554 | "cell_type": "markdown", |
549 | 555 | "metadata": {}, |
550 | 556 | "source": [ |
551 | | - "## 12. Cleanroom の実行\n", |
| 557 | + "## 13. Cleanroom の実行\n", |
552 | 558 | "\n", |
553 | 559 | "デプロイされたCleanroom上のアプリケーションを実行します。コマンドの詳細は [cleanroom run コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/cleanroom.html#cleanroom-run) から参照できます。" |
554 | 560 | ] |
|
571 | 577 | "cell_type": "markdown", |
572 | 578 | "metadata": {}, |
573 | 579 | "source": [ |
574 | | - "## 13. 結果のダウンロード\n", |
| 580 | + "## 14. 結果のダウンロード\n", |
575 | 581 | "\n", |
576 | 582 | "実行結果を各プロファイルにダウンロードします。コマンドの詳細は [cleanroom data コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/cleanroom-data.html) から参照できます。" |
577 | 583 | ] |
|
595 | 601 | "cell_type": "markdown", |
596 | 602 | "metadata": {}, |
597 | 603 | "source": [ |
598 | | - "## 14. クリーンアップ\n", |
| 604 | + "## 15. クリーンアップ\n", |
599 | 605 | "\n", |
600 | | - "使用したリソースに変更を加える必要があり、削除したい場合はリソースをクリーンアップすることができます。" |
| 606 | + "DCR上にアップロードした関数ディレクトリやデプロイしたCleanroomアプリケーションを使用しない場合はクリーンアップすることをお勧めします。それぞれの手順は以下の通りです。" |
601 | 607 | ] |
602 | 608 | }, |
603 | 609 | { |
|
627 | 633 | "source": [ |
628 | 634 | "Cleanroom上にアップロードされた関数を削除します。コマンドの詳細は [function-storage delete コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/function-storage.html#function-storage-delete) から参照できます。\n", |
629 | 635 | "\n", |
630 | | - "**ただし、実行前に<FUNCTION_STORAGE_PATH>を9で出力された`FunctionStoragePath`の値に置き換えてください。**" |
| 636 | + "**注意: 以下のコマンド実行前に<FUNCTION_STORAGE_PATH>を10で出力された`FunctionStoragePath`の値に置き換えてください。**" |
631 | 637 | ] |
632 | 638 | }, |
633 | 639 | { |
|
0 commit comments