

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ノートブックステップとの間で情報を受け渡しする
<a name="create-notebook-auto-run-dag-seq"></a>

以下のセクションでは、情報を環境変数とパラメータとしてノートブックに渡す方法について説明します。

## 環境変数を渡す
<a name="create-notebook-auto-run-dag-seq-env-var"></a>

次の例に示されるとおり、環境変数をディクショナリとして `NotebookJobStep` の `environment_variable` 引数に渡します。

```
environment_variables = {"RATE": 0.0001, "BATCH_SIZE": 1000}

notebook_job_step = NotebookJobStep(
    ...
    environment_variables=environment_variables,
    ...
)
```

次の例で示されるとおり、ノートブックで `os.getenv()` を使って、環境変数を使用できます。

```
# inside your notebook
import os
print(f"ParentNotebook: env_key={os.getenv('env_key')}")
```

## パラメータの受け渡し
<a name="create-notebook-auto-run-dag-seq-param"></a>

`NotebookJobStep` インスタンスの最初のノートブックジョブステップにパラメータを渡す際、必要に応じて Jupyter Notebook のセルにタグを付けて、新しいパラメータまたはパラメータの上書きを適用する場所を示すことができます。Jupyter Notebook のセルにタグを付ける方法の詳細については、「[ノートブックをパラメータ化する](notebook-auto-run-troubleshoot-override.md)」を参照してください。

次のスニペットに示されるとおり、ノートブックジョブステップの `parameters` パラメータを介してパラメータを渡します。

```
notebook_job_parameters = {
    "company": "Amazon",
}

notebook_job_step = NotebookJobStep(
    ...
    parameters=notebook_job_parameters,
    ...
)
```

入力ノートブック内では、`parameters` でタグ付けされたセルの後、タグ付けされたセルがない場合はノートブックの先頭に、パラメータが適用されます。

```
# this cell is in your input notebook and is tagged with 'parameters'
# your parameters and parameter overrides are applied after this cell
company='default'
```

```
# in this cell, your parameters are applied
# prints "company is Amazon"
print(f'company is {company}')
```

## 前のステップから情報を取得する
<a name="create-notebook-auto-run-dag-seq-interstep"></a>

以下では、前のステップからデータを抽出してノートブックジョブステップに渡す方法について説明します。

**`properties` 属性を使用する**

前のステップの `properties` 属性では、以下のプロパティを使用できます。
+ `ComputingJobName`— トレーニングジョブ名
+ `ComputingJobStatus`— トレーニングジョブのステータス
+ `NotebookJobInputLocation`— 入力 Amazon S3 の場所
+ `NotebookJobOutputLocationPrefix`— トレーニングジョブ出力へのパス、具体的には `{NotebookJobOutputLocationPrefix}/{training-job-name}/output/output.tar.gz` に出力が保存される
+ `InputNotebookName`— 入力ノートブックのファイル名
+ `OutputNotebookName`— 出力ノートブックファイル名 (ジョブが失敗した場合、トレーニングジョブ出力フォルダに存在しない場合があります)

次のコードスニペットは、プロパティ属性からパラメータを抽出する方法を説明しています。

```
notebook_job_step2 = NotebookJobStep(
    ....
    parameters={
        "step1_JobName": notebook_job_step1.properties.ComputingJobName,
        "step1_JobStatus": notebook_job_step1.properties.ComputingJobStatus,
        "step1_NotebookJobInput": notebook_job_step1.properties.NotebookJobInputLocation,
        "step1_NotebookJobOutput": notebook_job_step1.properties.NotebookJobOutputLocationPrefix,
    }
```

**JsonGet を使用する**

上記のパラメータ以外のパラメータを渡す場合や、前のステップの JSON 出力が Amazon S3 に存在する場合は、`JsonGet` を使用します。`JsonGet` は、Amazon S3 の JSON ファイルから直接データを抽出できる一般的なメカニズムです。

`JsonGet` を使用して Amazon S3 の JSON ファイルを抽出するには、次の手順を実行します。

1. JSON ファイルを Amazon S3 にアップロードします。データが既に Amazon S3 にアップロードされている場合は、このステップをスキップします。次の例は、JSON ファイルを Amazon S3 にアップロードする方法を説明しています。

   ```
   import json
   from sagemaker.s3 import S3Uploader
   
   output = {
       "key1": "value1", 
       "key2": [0,5,10]
   }
               
   json_output = json.dumps(output)
   
   with open("notebook_job_params.json", "w") as file:
       file.write(json_output)
   
   S3Uploader.upload(
       local_path="notebook_job_params.json",
       desired_s3_uri="s3://path/to/bucket"
   )
   ```

1. 抽出する値への S3 URI と JSON パスを指定します。次の例では、`JsonGet` はキー `key2` (`10`) に関連付けられた値のインデックス 2 を表すオブジェクトを返します。

   ```
   NotebookJobStep(
       ....
       parameters={
           # the key job_key1 returns an object representing the value 10
           "job_key1": JsonGet(
               s3_uri=Join(on="/", values=["s3:/", ..]),
               json_path="key2[2]" # value to reference in that json file
           ), 
           "job_key2": "Amazon" 
       }
   )
   ```