

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

# 그래프 노트북에서 Amazon Neptune 사용
<a name="graph-notebooks"></a>

Neptune 그래프로 작업하려면 Neptune 그래프 노트북을 사용하거나 CloudFormation [템플릿](get-started-cfn-create.md)으로 새 Neptune 데이터베이스를 생성할 수 있습니다.

그래프를 처음 접하고 배우며 실험하고 싶든, 경험이 많고 쿼리를 구체화하려 하든 관계없이 [Neptune 워크벤치](#graph-notebooks-workbench)는 그래프 애플리케이션을 구축할 때 생산성을 높일 수 있는 대화식 개발 환경(IDE)을 제공합니다. 워크벤치는 Neptune 데이터베이스와 상호 작용하고, 쿼리를 작성하며, 데이터를 시각화할 수 있는 사용자 친화적인 인터페이스를 제공합니다.

 CloudFormation 템플릿을 사용하여 Neptune 데이터베이스를 설정하고 Workbench를 사용하여 그래프 애플리케이션을 개발하면 추가 도구 없이도 Neptune을 빠르고 효율적으로 시작할 수 있습니다. 따라서 기본 인프라 설정보다 애플리케이션 구축에 집중할 수 있습니다.

**참고**  
 Amazon SageMaker AI를 통해 관리되는 Neptune 노트북은 현재 아시아 태평양(말레이시아)(ap-southeast-5) 리전에서 사용할 수 없습니다. 그러나 비관리형 대체 옵션을 통해 Neptune 노트북을 배포할 수 있습니다. 노트북을 수동으로 배포하려면 [수동으로 Neptune 노트북 설정](#graph-notebook-manual-setup) 섹션을 참조하세요.

Neptune은 GitHub의 오픈 소스 [Neptune 그래프 노트북](https://github.com/aws/graph-notebook) 프로젝트와 Neptune 워크벤치에 [Jupyter](https://jupyter-notebook.readthedocs.io/en/stable/) 및 [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/index.html) 노트북을 제공합니다. 이 노트북은 그래프 기술과 Neptune에 대해 배울 수 있는 대화식 코딩 환경에서 샘플 애플리케이션 자습서와 코드 스니펫을 제공합니다. 이를 통해 다양한 쿼리 언어, 여러 데이터 세트, 심지어 백엔드의 서로 다른 데이터베이스를 사용하여 그래프를 설정 및 구성하고, 정보를 입력하고, 쿼리하는 과정을 알아볼 수 있습니다.

다음과 같은 여러 가지 방법으로 이러한 노트북을 호스팅할 수 있습니다.
+  [Neptune 워크벤치](#graph-notebooks-workbench)를 사용하면 Amazon SageMaker AI에서 호스팅되는 완전관리형 환경에서 Jupyter Notebook을 실행하고 Neptune [그래프 노트북 프로젝트](https://github.com/aws/graph-notebook)의 최신 릴리스를 자동으로 로드할 수 있습니다. 새 Neptune 데이터베이스를 생성할 때 [Neptune 콘솔](https://console.aws.amazon.com/neptune)에서 워크벤치를 쉽게 설정할 수 있습니다.
**참고**  
 Neptune 노트북 인스턴스를 생성할 때 네트워크 액세스에 대해 Amazon SageMaker AI를 통한 직접 액세스(기본값)와 VPC를 통한 액세스의 두 가지 옵션이 제공업체로부터 제공됩니다. 두 옵션 어느 쪽이든 노트북은 Neptune 워크벤치 설치를 위한 패키지 종속성을 가져오기 위해 인터넷에 액세스해야 합니다. 인터넷 액세스 권한이 부족하면 Neptune 노트북 인스턴스를 생성할 수 없습니다.
+ [Jupyter를 로컬에 설치](#graph-notebooks-local)할 수도 있습니다. 이를 통해 Neptune 또는 오픈 소스 그래프 데이터베이스 중 하나의 로컬 인스턴스에 연결된 노트북에서 노트북을 실행할 수 있습니다. 후자의 경우 비용 지출 없이 원하는 만큼 그래프 기술을 실험해 볼 수 있습니다. 그런 다음 준비가 되면 Neptune이 제공하는 관리형 프로덕션 환경으로 원활하게 전환할 수 있습니다.

## Neptune 워크벤치를 사용하여 Neptune 노트북 호스팅
<a name="graph-notebooks-workbench"></a>

Neptune은 시간당 0.10 USD 미만으로 시작할 수 있는 `T3` 및 `T4g` 인스턴스 유형을 제공합니다. Amazon SageMaker AI를 통해 워크벤치 리소스에 대한 요금이 Neptune 청구와 별도로 청구됩니다. [Neptune 요금 페이지](https://aws.amazon.com/neptune/pricing/)를 참조하세요. Neptune 워크벤치에서 생성된 Jupyter 및 JupyterLab 노트북은 모두 Amazon Linux 2 및 JupyterLab 4 환경을 사용합니다. JupyterLab Notebook 지원에 대한 자세한 내용은 [Amazon SageMaker AI 설명서](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-jl.html)를 참조하세요.

다음 두 가지 방법 중 하나로에서 Neptune 워크벤치를 사용하여 Jupyter 또는 JupyterLab 노트북 AWS Management Console 을 생성할 수 있습니다.
+ 새 Neptune DB 클러스터를 생성할 때는 **노트북 구성** 메뉴를 사용합니다. 이렇게 하려면 [를 사용하여 Neptune DB 클러스터 시작 AWS Management Console](manage-console-launch-console.md)에 설명된 단계를 따르세요.
+ DB 클러스터를 이미 생성한 후에는 왼쪽 탐색 창의 **노트북** 메뉴를 사용합니다. 이렇게 하려면 다음 단계를 따르십시오.

****노트북** 메뉴를 사용하여 Jupyter 또는 JupyterLab Notebook을 만들려면**

1.  AWS Management Console에 로그인하고 [https://console.aws.amazon.com/neptune/home](https://console.aws.amazon.com/neptune/home) Amazon Neptune 콘솔을 엽니다.

1. 왼쪽의 탐색 창에서 **노트북**을 선택합니다.

1. **노트북 생성**을 선택합니다.

1. Neptune 서비스로 **데이터베이스**를 선택합니다.

1. **클러스터** 목록에서 Neptune DB 클러스터를 선택합니다. 아직 DB 클러스터가 없는 경우 **클러스터 생성**을 선택하여 클러스터를 만듭니다.

1. **노트북 인스턴스 유형**을 선택합니다.

1. 노트북에 이름을 지정하고 선택에 따라 설명을 지정합니다.

1. 노트북에 대한 AWS Identity and Access Management (IAM) 역할을 아직 생성하지 않은 경우 **IAM 역할 생성을** 선택하고 IAM 역할 이름을 입력합니다.
**참고**  
이전 노트북용으로 만든 IAM 역할을 재사용하려는 경우, 사용 중인 Neptune DB 클러스터에 액세스할 수 있는 올바른 권한이 역할 정책에 포함되어야 합니다. `neptune-db:*` 작업 아래에 있는 리소스 ARN의 구성 요소가 해당 클러스터와 일치하는지 검토하여 이를 확인할 수 있습니다. 권한이 잘못 구성된 경우 notebook magic 명령을 실행하려고 할 때 연결 오류가 발생합니다.

1. **노트북 생성**을 선택합니다. 모든 준비가 완료되기까지 생성 프로세스에 5\$110분이 소요될 수 있습니다.

1. 노트북을 만든 후 노트북을 선택한 다음 **Jupyter 열기** 또는 **JupyterLab 열기**를 선택합니다.

콘솔에서 노트북의 AWS Identity and Access Management (IAM) 역할을 만들거나 직접 만들 수 있습니다. 이 역할의 정책에는 다음이 포함되어야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowS3GetObjectS3ListBucket",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::aws-neptune-notebook",
        "arn:aws:s3:::aws-neptune-notebook/*",
        "arn:aws:s3:::aws-neptune-notebook-us-east-1",
        "arn:aws:s3:::aws-neptune-notebook-us-east-1/*"
      ]
    },
    {
      "Sid": "AllowAccessNeptuneDB",
      "Effect": "Allow",
      "Action": "neptune-db:*",
      "Resource": [
        "arn:aws:neptune-db:us-east-1:111122223333:cluster-resource-id/*"
      ]
    }
  ]
}
```

------

위 정책의 두 번째 설명에는 하나 이상의 Neptune [클러스터 리소스 ID](iam-data-resources.md)가 나열되어 있습니다.

또한 역할은 다음과 같은 신뢰 관계를 설정해야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sagemaker.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

다시 말하지만, 모든 준비를 완료하는 데 5\$110분이 걸릴 수 있습니다.

[Neptune ML용 Neptune 노트북을 수동으로 구성](ml-manual-setup-notebooks.md)에 설명된 대로 Neptune ML과 함께 작동하도록 새 노트북을 구성할 수 있습니다.

### Python을 사용하여 Neptune에 일반 SageMaker AI 노트북 연결
<a name="graph-notebooks-workbench-python"></a>

Neptune magics를 설치했다면 노트북을 Neptune에 쉽게 연결할 수 있지만, Neptune 노트북을 사용하지 않더라도 Python을 사용하여 SageMaker AI 노트북을 Neptune에 연결할 수도 있습니다.

**SageMaker AI 노트북 셀에서 Neptune에 연결하기 위해 취해야 할 단계**

1. 다음과 같이 Gremlin Python 클라이언트를 설치합니다.

   ```
   !pip install gremlinpython
   ```

   Neptune 노트북은 Gremlin Python 클라이언트를 자동으로 설치하므로, 이 단계는 일반 SageMaker AI 노트북을 사용하는 경우에만 필요합니다.

1. 다음과 같은 코드를 작성하여 Gremlin 쿼리를 연결하고 실행합니다.

   ```
   from gremlin_python import statics
   from gremlin_python.structure.graph import Graph
   from gremlin_python.process.graph_traversal import __
   from gremlin_python.process.strategies import *
   from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection
   from gremlin_python.driver.aiohttp.transport import AiohttpTransport
   from gremlin_python.process.traversal import *
   import os
   
   port = 8182
   server = '(your server endpoint)'
   
   endpoint = f'wss://{server}:{port}/gremlin'
   
   graph=Graph()
   
   connection = DriverRemoteConnection(endpoint,'g',
                    transport_factory=lambda:AiohttpTransport(call_from_event_loop=True))
   
   g = graph.traversal().withRemote(connection)
   
   results = (g.V().hasLabel('airport')
                   .sample(10)
                   .order()
                   .by('code')
                   .local(__.values('code','city').fold())
                   .toList())
   
   # Print the results in a tabular form with a row index
   for i,c in enumerate(results,1):
       print("%3d %4s %s" % (i,c[0],c[1]))
   
   connection.close()
   ```

**참고**  
3.5.0 이전 버전의 Gremlin Python 클라이언트를 사용하는 경우 다음 행을 참조하세요.  

```
connection = DriverRemoteConnection(endpoint,'g',
                 transport_factory=lambda:AiohttpTransport(call_from_event_loop=True))
```
다음과 같을 수 있습니다.  

```
connection = DriverRemoteConnection(endpoint,'g')
```

## 를 통해 그래프 노트북을 Amazon Neptune Workbench로 시작 CloudFormation
<a name="graph-notebooks-cloudformation"></a>

를 사용하여 Amazon Neptune 워크벤치 노트북을 배포할 수 있습니다 CloudFormation. CloudFormation 템플릿은 Neptune 워크벤치 노트북을 리소스로 배포하고 기본 '시작하기' 노트북을 포함합니다. 워크벤치를 사용하면 Amazon SageMaker에서 호스팅하는 Jupyter 노트북을 사용하여 Amazon Neptune 데이터베이스 클러스터로 작업할 수 있습니다. Amazon SageMaker Amazon SageMaker를 통해 워크벤치 리소스에 대한 요금이 Neptune 청구와 별도로 청구됩니다.

 CloudFormation 템플릿과 IAM 역할 요구 사항 및 권한을 포함한 자세한 지침은 [그래프 노트북 GitHub 리포지토리](https://github.com/aws/graph-notebook/tree/main/additional-databases/sagemaker/neptune-notebook-cloudformation)에서 확인할 수 있습니다.

## Neptune 노트북에서 CloudWatch 로그 활성화
<a name="graph-notebooks-cw-logs"></a>

이제 Neptune 노트북에서 CloudWatch 로그가 기본적으로 활성화됩니다. CloudWatch 로그를 생성하지 않는 구형 노트북을 사용하는 경우 다음 단계에 따라 수동으로 활성화하세요.

1. 에 로그인 AWS Management Console 하고 [SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker/home)을 엽니다.

1. 왼쪽 탐색 창에서 **노트북**을 선택한 다음 **노트북 인스턴스**를 선택합니다. 로그를 활성화하려는 Neptune 노트북의 이름을 찾습니다.

1. 해당 노트북 인스턴스의 이름을 선택하여 세부 정보 페이지로 이동합니다.

1. 노트북 인스턴스가 실행 중인 경우 노트북 세부 정보 페이지 오른쪽 상단에 있는 **중지** 버튼을 선택합니다.

1. **권한 및 암호화**에 **IAM 역할 ARN**에 대한 필드가 있습니다. 이 필드의 링크를 선택하면 이 노트북 인스턴스가 실행되는 IAM 역할로 이동합니다.

1. 다음 정책을 생성합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "logs:CreateLogDelivery",
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:DeleteLogDelivery",
           "logs:Describe*",
           "logs:GetLogDelivery",
           "logs:GetLogEvents",
           "logs:ListLogDeliveries",
           "logs:PutLogEvents",
           "logs:PutResourcePolicy",
           "logs:UpdateLogDelivery"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------

1. 이 새 정책을 저장하고 4단계에서 찾은 IAM 역할에 연결합니다.

1. SageMaker AI 노트북 인스턴스 세부 정보 페이지의 오른쪽 상단에서 **시작**을 클릭합니다.

1. 로그가 유입되기 시작하면 세부 정보 페이지의 **노트북 인스턴스 설정** 섹션 왼쪽 하단에 있는 **수명 주기 구성** 필드 아래에 **로그 보기** 링크가 표시됩니다.

노트북이 시작되지 않는 경우 SageMaker AI 콘솔의 노트북 세부 정보 페이지에 노트북 인스턴스를 시작하는 데 5분 이상 걸렸다는 메시지가 나타납니다. 이 문제와 관련된 CloudWatch 로그는 다음 이름 아래에서 찾을 수 있습니다.

```
(your-notebook-name)/LifecycleConfigOnStart
```

## 로컬 시스템에서 그래프 노트북 설정
<a name="graph-notebooks-local"></a>

그래프-노트북 프로젝트에는 로컬 시스템에 Neptune 노트북을 설정하기 위한 지침이 있습니다.
+ [사전 조건](https://github.com/aws/graph-notebook/#prerequisites)
+ [Jupyter 및 JupyterLab 설치](https://github.com/aws/graph-notebook/#installation)
+ [그래프 데이터베이스에 연결](https://github.com/aws/graph-notebook/#connecting-to-a-graph-database).

로컬 노트북을 Neptune DB 클러스터나 오픈 소스 그래프 데이터베이스의 로컬 또는 원격 인스턴스에 연결할 수 있습니다.

### Neptune 클러스터와 함께 Neptune 노트북 사용
<a name="graph-notebooks-local-with-neptune"></a>

백엔드의 Neptune 클러스터에 연결하는 경우 Amazon SageMaker AI에서 노트북을 실행하는 것이 좋습니다. 노트북을 로컬에 설치하는 것보다 SageMaker AI에서 Neptune에 연결하는 것이 더 편리할 수 있으며, [Neptune ML](machine-learning.md)을 사용하면 작업이 더 쉬워집니다.

SageMaker AI에서 노트북을 설정하는 방법에 대한 지침은 [Amazon SageMaker를 사용하여 그래프-노트북 시작](https://github.com/aws/graph-notebook/blob/main/additional-databases/sagemaker/README.md)을 참조하세요.

Neptune 자체를 설정 및 구성하는 방법에 대한 자세한 내용은 [Amazon Neptune 설정](neptune-setup.md)을 참조하세요.

로컬에 설치된 Neptune 노트북을 Neptune DB 클러스터에 연결할 수도 있습니다. Amazon Neptune DB 클러스터는 외부 세계와 격리되도록 설계된 Amazon Virtual Private Cloud(VPC)에서만 생성할 수 있기 때문에 연결이 다소 복잡해질 수 있습니다. VPC 외부에서 VPC에 연결하는 방법에는 여러 가지가 있습니다. 하나는 로드 밸런서를 사용하는 것입니다. 다른 하나는 VPC 피어링을 사용하는 것입니다([Amazon Virtual Private Cloud 피어링 가이드](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) 참조).

하지만 대부분의 사용자에게는 VPC 내에 Amazon EC2 프록시 서버에 연결하여 설정한 다음 [SSH 터널링](https://www.ssh.com/ssh/tunneling/)(포트 포워딩이라고도 함)을 사용하여 연결하는 방법이 가장 편리합니다. 설정 방법에 대한 지침은 [그래프-노트북](https://github.com/aws/graph-notebook/) GitHub 프로젝트의 `additional-databases/neptune` 폴더에서 [그래프 노트북을 Amazon Neptune에 로컬로 연결](https://github.com/aws/graph-notebook/tree/main/additional-databases/neptune)을 참조하세요.

### 오픈 소스 그래프 데이터베이스와 함께 Neptune 노트북 사용
<a name="graph-notebooks-open-source_databases"></a>

백엔드에 다양한 오픈 소스 데이터베이스가 있는 Neptune 노트북을 사용하여 무료로 그래프 기술을 시작할 수도 있습니다. TinkerPop [Gremlin 서버](https://tinkerpop.apache.org/docs/current/reference/#gremlin-server)와 [Blazegraph](https://blazegraph.com/) 데이터베이스를 예로 들 수 있습니다.

Gremlin 서버를 백엔드 데이터베이스로 사용하려면 다음 단계를 따르세요.
+ [그래프-노트북을 Gremlin 서버에 연결하는 중](https://github.com/aws/graph-notebook/blob/main/additional-databases/gremlin-server/README.md#connecting-graph-notebook-to-a-gremlin-server) GitHub 폴더.
+ [그래프-노트북 Gremlin 구성](https://github.com/aws/graph-notebook/#gremlin-server) GitHub 폴더.

[Blazegraph](https://github.com/blazegraph/database)의 로컬 인스턴스를 백엔드 데이터베이스로 사용하려면 다음 단계를 따르세요.
+ [Blazegraph 빠른 시작 지침](https://github.com/blazegraph/database/wiki/Quick_Start)을 검토하여 Blazegraph 인스턴스를 실행하는 데 필요한 기본 설정 및 구성을 이해합니다.
+ [그래프 노트북 Blazegraph 구성](https://github.com/aws/graph-notebook/#blazegraph) GitHub 폴더에 액세스하여하여 로컬 Blazegraph 인스턴스 설정에 필요한 파일과 지침을 확인합니다.
+ GitHub 리포지토리 내에서 'blazegraph' 디렉터리로 이동한 후 제공된 지침에 따라 로컬 Blazegraph 인스턴스를 설정합니다. 여기에는 Blazegraph 소프트웨어 다운로드, 필요한 파일 구성, Blazegraph 서버 시작을 위한 단계가 포함됩니다.

로컬 Blazegraph 인스턴스가 실행되면, 그래프 기반 데이터 및 쿼리의 백엔드 데이터베이스로 애플리케이션에 통합할 수 있습니다. 애플리케이션을 Blazegraph 인스턴스에 연결하는 방법은 graph-notebook 리포지토리에서 제공하는 설명서 및 예제를 참조하세요.

## Neptune 노트북을 JupyterLab 4.x로 마이그레이션
<a name="migrating-neptune-notebooks-jupyterlab"></a>

이 섹션에서는 Neptune 노트북을 JupyterLab 4.x 및 최신 Amazon Linux 환경으로 마이그레이션하는 다양한 방법을 설명합니다. JupyterLab 버전 관리에 대한 자세한 내용은 [Amazon SageMaker AI JupyterLab 버전 관리](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-jl.html)를 참조하세요.

### 마이그레이션 접근 방식
<a name="migration-approaches"></a>

#### 새로 설치
<a name="fresh-installation"></a>

기존 워크스페이스 파일이나 구성을 보존할 필요가 없다면 다음을 수행할 수 있습니다.

1. JupyterLab 4.x를 실행하는 새 노트북 인스턴스 생성(notebook-al2-v3)

1. 새 설정이 예상대로 작동하는지 확인

1. 이전 노트북 인스턴스 중지 및 삭제

#### File Transfer 마이그레이션
<a name="file-transfer-migration"></a>

이 방법은 로컬 시스템 또는 Amazon S3를 중간 스토리지로 사용합니다.

**최적의 용도**  

+ [ Amazon SageMaker AI 네트워킹 구성을 통한 직접 인터넷 액세스](https://docs.aws.amazon.com//sagemaker/latest/dg/appendix-notebook-and-internet-access.html#appendix-notebook-and-internet-access-default).
+ 마이그레이션할 적절한 양의 데이터
+ 전체 워크스페이스 구성이 아닌 보존할 특정 파일입니다.

##### 방법 1: JupyterLab UI 사용
<a name="method-jupyterlab-ui"></a>

**최적의 용도**  

+ 적은 수의 파일
+ 선택적 파일 마이그레이션
+ 간단한 드래그 앤 드롭 작업 선호

**단계(Steps)**  


1. 소스 JupyterLab 인스턴스에서 파일 다운로드:
   + JupyterLab에서 새 인스턴스로 마이그레이션할 파일 탐색 및 선택
   + 마우스 오른쪽 버튼을 클릭 및 **다운로드** 선택

1. 새 JupyterLab 인스턴스에 업로드:
   + JupyterLab의 업로드 버튼을 사용하여 새 인스턴스에 복사하려는 모든 파일 선택
   + (또는) 파일을 직접 드래그 앤 드롭

##### 방법 2: Amazon S3 사용
<a name="method-s3"></a>

**최적의 용도**  

+ 많은 수의 파일
+ 폴더 구조 보존
+ 대량 마이그레이션

**사전 조건**  
노트북과 연결된 역할이 Amazon S3 버킷에 업로드하고 액세스할 수 있는 적절한 권한을 가지고 있는지 확인합니다.

```
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject", "s3:ListBucket"],
"Resource": ["arn:aws:s3:::your-bucket-name/*", "arn:aws:s3:::your-bucket-name"]
}
```

**참고**  
 [AWS CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/index.html)는 SageMaker AI 노트북에 사전 설치되어 있어야 합니다.

**단계(Steps)**  


1. JupyterLab에서 터미널을 열거나, `!` 접두사를 사용하여 노트북 셀에 터미널 명령어를 입력합니다.

1. [Amazon S3 cp](https://docs.aws.amazon.com//cli/latest/reference/s3/cp.html) 또는 [Amazon S3 sync](https://docs.aws.amazon.com//cli/latest/reference/s3/sync.html) CLI 명령어를 사용하여 기존 JupyterLab 인스턴스의 파일을 S3로 복사합니다.

   ```
   # using AWS s3 cp
   aws s3 cp /home/ec2-user/SageMaker/your-folder s3://your-bucket/backup/ --recursive
   
   # (OR) using AWS s3 sync
   aws s3 sync /home/ec2-user/SageMaker/your-folder s3://your-bucket/backup/
   ```

1. S3에서 새 JupyterLab 인스턴스로 파일을 복사합니다.

   ```
   # using AWS s3 cp
   aws s3 cp s3://your-bucket/backup/ /home/ec2-user/SageMaker/your-folder --recursive
   
   # (OR) using AWS s3 sync
   aws s3 sync s3://your-bucket/backup/ /home/ec2-user/SageMaker/your-folder
   ```

**참고**  
폴더 구조 유지 및 증분 업데이트에는 `sync`를, 일회성 전송에는 `cp`를 사용하세요.

#### Amazon EFS 마이그레이션
<a name="amazon-efs-migration"></a>

**최적의 용도**  

+ [ VPC 전용](https://docs.aws.amazon.com//sagemaker/latest/dg/appendix-notebook-and-internet-access.html#appendix-notebook-and-internet-access-default-vpc) 네트워킹 구성
+ 대용량 데이터 볼륨

**단계(Steps)**  
[Amazon SageMaker AI 노트북에 EFS 파일 시스템 마운트](https://aws.amazon.com/blogs//machine-learning/mount-an-efs-file-system-to-an-amazon-sagemaker-notebook-with-lifecycle-configurations/) 블로그에 따라 노트북 인스턴스에 Amazon EFS 파일 시스템을 사용합니다.

또한 Neptune 노트북을 새 환경으로 마이그레이션하는 데 특별히 적용되는 몇 가지 단계가 더 있습니다.

1. [콘솔에서 Neptune 노트북 생성](https://docs.aws.amazon.com//neptune/latest/userguide/graph-notebooks.html#graph-notebooks-workbench) 시, 수명 주기 구성에서 **새로운 수명 주기 구성 생성**을 선택합니다.

1. 템플릿 수명 주기 구성에서 install.sh 스크립트 뒤에 Amazon EFS 마운트 명령어(`sudo mount -t nfs ...`)를 추가합니다.

이렇게 하면 노트북 인스턴스가 시작되거나 다시 시작될 때마다 Amazon EFS 파일 시스템이 자동으로 마운트됩니다. 마운트 문제 해결은 [Amazon EFS 문제 해결 문서](https://docs.aws.amazon.com/efs/latest/ug/troubleshooting.html)를 참조하세요.

**장점**  

+ 인스턴스 간 파일에 대한 원활한 액세스
+ 중간 전송 없이 직접 파일에 액세스
+ 대규모 데이터세트의 효율적인 처리

#### Amazon EBS 볼륨 마이그레이션
<a name="ebs-volume-migration"></a>

**보존이 필요할 때 가장 적합**  

+ 워크스페이스 구성 완료
+ 숨겨진 파일
+ 시스템 설정
+ 워크스페이스 구성, 숨겨진 파일 및 시스템 설정을 완전히 보존

[Amazon EBS 볼륨에 대한AWS SageMaker AI 마이그레이션 가이드](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-upgrade.html)에 따라 노트북 인스턴스와 연결된 Amazon EBS 볼륨에서 파일을 전송합니다.

또한 Neptune 노트북을 새 환경으로 마이그레이션하는 데 특별히 적용되는 몇 가지 단계가 더 있습니다.

## Neptune별 사전 조건
<a name="graph-notebooks-migrating-to-JL3-prereqs"></a>

소스 Neptune 노트북의 IAM 역할에 다음 권한을 모두 추가합니다.

```
{
  "Effect": "Allow",
  "Action": [
    "s3:GetObject",
    "s3:ListBucket",
    "s3:CreateBucket",
    "s3:PutObject"
  ],
  "Resource": [
    "arn:aws:s3:::(your ebs backup bucket name)",
    "arn:aws:s3:::(your ebs backup bucket name)/*"
  ]
},
{
  "Effect": "Allow",
  "Action": [
    "sagemaker:ListTags"
  ],
  "Resource": [
    "*"
  ]
}
```

백업에 사용할 S3 버킷에 대해 올바른 ARN을 지정해야 합니다.

## Neptune별 수명 주기 구성
<a name="graph-notebooks-migrating-to-JL3-lifecycle"></a>

블로그 게시물에 설명된 대로 `on-create.sh`에서 백업을 복원하기 위한 두 번째 수명 주기 구성 스크립트를 만들 때는 수명 주기 이름이 `aws-neptune-*` 형식(예: `aws-neptune-sync-from-s3`)을 따라야 합니다. 이렇게 하면 Neptune 콘솔에서 노트북을 만들 때 LCC를 선택할 수 있습니다.

## 스냅샷에서 새 인스턴스로의 Neptune 관련 동기화
<a name="graph-notebooks-migrating-to-JL3-synchronizing"></a>

스냅샷에서 새 인스턴스로 동기화하는 방법에 대해 블로그 게시물에 설명된 단계에서 다음과 같은 Neptune별 변경 사항이 있습니다.
+ 4단계에서 **notebook-al2-v3**를 선택합니다.
+ 5단계에서 소스 Neptune 노트북의 IAM 역할을 재사용합니다.
+ 7단계 및 8단계 사이에서 다음을 수행합니다.
  + **노트북 인스턴스 설정**에서 해당 `aws-neptune-*` 형식을 사용하는 이름을 설정합니다.
  + **네트워크** 설정 아코디언을 열고 소스 노트북과 동일한 VPC, 서브넷, 보안 그룹을 선택합니다.

## 새 노트북을 만든 후의 Neptune별 단계
<a name="graph-notebooks-migrating-to-JL3-afterwards"></a>

1. 노트북의 **Jupyter 열기** 버튼을 선택합니다. `SYNC_COMPLETE` 파일이 기본 디렉터리에 표시되면 다음 단계로 진행합니다.

1. SageMaker AI 콘솔에서 노트북 인스턴스 페이지로 이동합니다.

1. 노트북을 중지합니다.

1. **편집**을 선택합니다.

1. 노트북 인스턴스 설정에서 소스 Neptune 노트북의 원래 수명 주기를 선택하여 **수명 주기 구성** 필드를 편집합니다. 참고로 이 주기는 EBS 백업 수명 주기가 아닙니다.

1. **노트북 설정 업데이트**를 선택합니다.

1. 노트북을 다시 시작합니다.

블로그 게시물에 설명된 단계를 수정하면 이제 그래프 노트북을 Amazon Linux 2 및 JupyterLab 4 환경을 사용하는 새 Neptune 노트북 인스턴스로 마이그레이션해야 합니다. 의 Neptune 페이지에 액세스 및 관리를 위해 표시 AWS Management Console되며, 이제 **Jupyter 열기** 또는 ** JupyterLab 열기**를 선택하여 중단한 위치에서 작업을 계속할 수 있습니다.

## Amazon SageMaker AI 인스턴스에서 Neptune 노트북 생성
<a name="create-notebook-next"></a>

****

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 Amazon SageMaker AI 콘솔을 엽니다.

1. 탐색 창에서 **노트북**을 확장한 다음 **노트북 인스턴스**를 선택합니다.

1. **노트북 인스턴스 생성**을 선택합니다.

1. **노트북 인스턴스 설정**에서 **노트북 인스턴스 이름** 아래에 노트북 이름 앞에 `aws-neptune-` 접두사를 붙여 지정합니다(예: `aws-neptune-my-test-notebook`).

1. **플랫폼 식별자**에서 **Amazon Linux 2, JupyterLab 4**를 선택합니다.

1. **추가 구성**을 선택합니다.

1. **수명 주기 구성**에서 선택 사항에서 **새로운 수명 주기 구성 생성**을 선택합니다.

1. **구성**의 **이름**에 4단계의 노트북 인스턴스 이름을 입력합니다.

1. **스크립트**의 **노트북 시작**에서 기존 스크립트를 다음으로 바꿉니다.

   ```
   #!/bin/bash
   
   sudo -u ec2-user -i <<'EOF'
   
   echo "export GRAPH_NOTEBOOK_AUTH_MODE=IAM" >> ~/.bashrc
   echo "export GRAPH_NOTEBOOK_SSL=True" >> ~/.bashrc
   echo "export GRAPH_NOTEBOOK_SERVICE=neptune-db for Neptune, or neptune-graph for Neptune Analytics" >> ~/.bashrc
   echo "export GRAPH_NOTEBOOK_HOST=(Neptune Analytics graph endpoint, public or private)" >> ~/.bashrc
   echo "export GRAPH_NOTEBOOK_PORT=8182" >> ~/.bashrc
   echo "export NEPTUNE_LOAD_FROM_S3_ROLE_ARN=" >> ~/.bashrc
   echo "export AWS_REGION=(AWS region)" >> ~/.bashrc
   
   aws s3 cp s3://aws-neptune-notebook-(AWS region)/graph_notebook.tar.gz /tmp/graph_notebook.tar.gz
   rm -rf /tmp/graph_notebook
   tar -zxvf /tmp/graph_notebook.tar.gz -C /tmp
   /tmp/graph_notebook/install_jl4x.sh
   
   EOF
   ```

1. **구성 생성**을 선택합니다.

1. **권한 및 암호화**의 **IAM 역할**에서 위에서 생성한 역할을 선택합니다.

1. **네트워크**에서 프라이빗 그래프 엔드포인트를 사용하는 경우 다음을 수행합니다.

   1. **VPC**에서 Neptune Analytics 그래프가 있는 VPC를 선택합니다.

   1. **서브넷**에서 Neptune Analytics 그래프와 연결된 서브넷을 선택합니다.

   1. **보안 그룹**에서 Neptune Analytics 그래프와 연결된 모든 보안 그룹을 선택합니다.

1. **노트북 인스턴스 생성**을 선택합니다.

1. 5분 또는 10분 후 새 노트북이 `Ready` 상태에 도달하면 선택합니다. **Jupyter 열기** 또는 **JupyterLab 열기**를 선택합니다.

## 수동으로 Neptune 노트북 설정
<a name="graph-notebook-manual-setup"></a>

 그래프 노트북 및 그래프 탐색기에 사용할 수 있는 AWS 오픈 소스 패키지를 사용하여 Neptune 노트북 환경을 설정할 수도 있습니다. 오픈 소스 패키지를 사용하여 노트북을 설정하는 방법은 여러 가지가 있지만, 권장되는 접근 방식은 다음과 같습니다.
+  로컬 머신에 [graph-notebook](https://github.com/aws/graph-notebook)을 설정하고, 로컬 머신을 Amazon EC2 인스턴스와 동일한 VPC에 있는 Neptune 클러스터에 연결하는 Amazon EC2 SSH 터널을 설정합니다.
+  VPC 내의 Amazon EC2 인스턴스에 [graph-explorer](https://github.com/aws/graph-explorer)를 설정합니다.

 오픈소스 [graph-notebooks](https://github.com/aws/graph-notebook) 및 [graph-explorer](https://github.com/aws/graph-explorer) 패키지 설정 방법에 대한 자세한 지침은 다음 공식 AWS 설명서 및 GitHub 리포지토리를 참조하세요.
+  [https://docs.aws.amazon.com//neptune/latest/userguide/graph-notebooks.html#graph-notebooks-local](https://docs.aws.amazon.com//neptune/latest/userguide/graph-notebooks.html#graph-notebooks-local) 
+  [https://docs.aws.amazon.com//neptune/latest/userguide/get-started-connect-ec2-same-vpc.html](https://docs.aws.amazon.com//neptune/latest/userguide/get-started-connect-ec2-same-vpc.html) 
+  [https://github.com/aws/graph-notebook/tree/main/additional-databases/neptune](https://github.com/aws/graph-notebook/tree/main/additional-databases/neptune) 
+  [https://github.com/aws/graph-explorer/blob/main/additionaldocs/getting-started/README.md#amazon-ec2-setup](https://github.com/aws/graph-explorer/blob/main/additionaldocs/getting-started/README.md#amazon-ec2-setup) 

**보안 구성**  
 환경을 설정할 때 다음 보안 구성이 적절하게 설정되었는지 확인합니다.
+  **Neptune 클러스터 보안 그룹** - Amazon EC2 인스턴스의 보안 그룹에서 포트 8182로 들어오는 TCP 트래픽을 허용합니다.
+  **Amazon EC2 인스턴스 보안 그룹** - Graph Explorer 접근을 활성화하도록 인바운드 HTTPS 규칙을 구성합니다.

 Neptune 클러스터와 Amazon EC2 인스턴스 모두에 단일 보안 그룹을 사용하는 것이 좋습니다. 이렇게 하면 구성이 간소화되고 잠재적 연결 문제가 줄어듭니다. 그러나 그룹 내 리소스 간 통신을 허용하기 위해 자기 참조 규칙을 추가해야 합니다.