

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 노트북 단계와 정보 주고받기
<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. Amazon S3에 JSON 파일을 업로드합니다. 데이터가 이미 Amazon S3에 업로드된 경우 이 단계를 건너뜁니다. 다음 예시에서는 Amazon S3에 JSON 파일을 업로드하는 방법을 보여줍니다.

   ```
   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" 
       }
   )
   ```