

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

# Amazon Personalize에서 데이터세트 내보내기 작업 생성
<a name="create-dataset-export-job"></a>

데이터세트 내보내기 작업은 Personalize 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWSSDK를 사용하여 생성할 수 있습니다.

## 데이터세트 내보내기 작업 생성(콘솔)
<a name="export-data-console"></a>

데이터를 데이터세트로 가져오고 출력 S3 버킷을 생성한 후, 분석을 위해 데이터를 버킷으로 내보낼 수 있습니다. **Personalize 콘솔을 사용하여 데이터세트를 내보내려면 데이터세트 내보내기 작업을 생성합니다. S3 버킷 생성에 대한 자세한 내용은 Simple Storage Service 사용 설명서의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) 단원을 참조하세요.**

데이터세트를 내보내기 전에 Personalize 서비스 역할이 출력 S3 버킷에 액세스하고 여기에 기록할 수 있는지 확인합니다. [데이터세트 내보내기 작업 권한 요구 사항](export-permissions.md) 단원을 참조하세요.

**데이터세트 내보내기 작업을 생성하려면(콘솔)**

1. [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home) 에서 Personalize 콘솔을 엽니다.

1. 탐색 창에서 **데이터세트 그룹**을 선택합니다.

1. **데이터세트 그룹** 페이지에서 데이터세트 그룹을 선택합니다.

1. 탐색 창에서 **데이터세트**를 선택합니다.

1. S3 버킷으로 내보내려는 데이터세트를 선택합니다.

1.  **데이터세트 내보내기 작업**에서 **데이터세트 내보내기 작업 생성**을 선택합니다.

1. **데이터세트 내보내기 작업 세부 정보**에서 **데이터세트 내보내기 작업 이름**에 내보내기 작업의 이름을 입력합니다.

1. **IAM 서비스 역할**의 경우 [Personalize에 대한 IAM 역할 생성](set-up-required-permissions.md#set-up-create-role-with-permissions)에서 생성한 Personalize 서비스 역할을 선택합니다.

1. **S3 데이터 출력 경로**에서 대상 S3 버킷을 입력합니다. 다음 구문을 사용합니다.

   **s3://amzn-s3-demo-bucket/<folder path>**

1. 암호화에 AWS KMS을 사용하는 경우 **KMS 키 ARN**에서 AWS KMS키의 리소스 이름(ARN)을 입력합니다.

1. **내보내기 데이터 유형**에서 해당 데이터를 처음 가져온 방식에 따라 내보낼 데이터 유형을 선택합니다.
   +  데이터세트 가져오기 작업을 사용하여 대량으로 가져온 데이터만 내보내려면 **대량**을 선택합니다.
   + 콘솔이나 `PutEvents`, `PutUsers`또는 `PutItems`작업을 사용하여 개별적으로 가져온 데이터만 내보내려면 **증분**을 선택합니다.
   + 데이터세트의 모든 데이터를 내보내려면 **둘 다**를 선택합니다.

1. **태그**의 경우, 원하는 태그를 추가할 수 있습니다. Personalize 리소스 태그 지정에 대한 자세한 내용은 [Personalize 리소스에 태그 지정](tagging-resources.md)단원을 참조하세요.

1. **데이터세트 내보내기 작업 생성**을 선택합니다.

   **데이터세트 개요** 페이지의 **데이터세트 내보내기 작업**에서 작업이 **내보내기 작업 상태**와 함께 나열됩니다. 상태가 **ACTIVE**로 표시되면 해당 데이터세트 내보내기 작업은 완료된 것입니다. 그러면 출력 S3 버킷에서 데이터를 다운로드할 수 있습니다. S3 버킷에서 객체를 다운로드하는 방법에 대한 자세한 내용은 Simple Storage Service 사용 설명서의 [객체 다운로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html) 단원을 참조하세요.**

## 데이터세트 내보내기 작업 생성(AWS CLI)
<a name="export-data-cli"></a>

데이터를 데이터세트로 가져오고 출력 S3 버킷을 생성한 후, 데이터세트를 분석을 위해 버킷으로 내보낼 수 있습니다. AWS CLI를 사용하여 데이터세트를 내보내려면 `create-dataset-export-job`AWS CLI 명령을 사용하여 데이터세트 내보내기 작업을 생성합니다. S3 버킷 생성에 대한 자세한 내용은 Simple Storage Service 사용 설명서의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) 단원을 참조하세요.**

데이터세트를 내보내기 전에 Personalize 서비스 역할이 출력 S3 버킷에 액세스하고 여기에 기록할 수 있는지 확인합니다. [데이터세트 내보내기 작업 권한 요구 사항](export-permissions.md)을(를) 참조하세요.

 다음은 `create-dataset-export-job`AWS CLI 명령의 예입니다. 작업에 이름을 부여하고, `dataset arn`을 내보내려는 데이터세트의 리소스 이름(ARN)으로 바꾸고, `role ARN`를 [Personalize에 대한 IAM 역할 생성](set-up-required-permissions.md#set-up-create-role-with-permissions)에서 생성했던 Personalize 서비스 역할의 ARN으로 바꿉니다. `s3DataDestination`에서, `kmsKeyArn`에 대해 선택적으로 AWS KMS키에 대한 ARN을 제공하고, `path`에 대해 출력 S3 버킷에 대한 경로를 제공합니다.

 `ingestion-mode`의 경우 다음 옵션 중에서 내보낼 데이터를 지정합니다.
+  데이터세트 가져오기 작업을 사용하여 대량으로 가져온 데이터만 내보내려면 `BULK`을 지정합니다.
+  콘솔 또는 `PutEvents`, PutUsers 또는 `PutItems`작업을 사용하여 개별적으로 가져온 데이터만 내보내려면 `PUT`을 지정합니다.
+  데이터세트의 모든 데이터를 내보내려면 `ALL`를 지정합니다.

 자세한 내용은 [CreateDatasetExportJob](API_CreateDatasetExportJob.md) 섹션을 참조하세요.

```
aws personalize create-dataset-export-job \
  --job-name job name \
  --dataset-arn dataset ARN \
  --job-output "{\"s3DataDestination\":{\"kmsKeyArn\":\"kms key ARN\",\"path\":\"s3://amzn-s3-demo-bucket/folder-name/\"}}" \
  --role-arn role ARN \
  --ingestion-mode PUT
```

데이터세트 내보내기 작업 ARN이 표시됩니다.

```
{
  "datasetExportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-export-job/DatasetExportJobName"
}
```

`DescribeDatasetExportJob` 작업을 사용하여 상태를 확인합니다.

```
aws personalize describe-dataset-export-job \
  --dataset-export-job-arn dataset export job ARN
```

## 데이터세트 내보내기 작업 생성(AWS SDK)
<a name="export-data-sdk"></a>

 데이터를 데이터세트로 가져오고 출력 S3 버킷을 생성한 후, 데이터세트를 분석을 위해 버킷으로 내보낼 수 있습니다. AWS SDK를 사용하여 데이터세트를 내보내려면 [CreateDatasetExportJob](API_CreateDatasetExportJob.md)작업을 사용하여 데이터세트 내보내기 작업을 생성합니다. S3 버킷 생성에 대한 자세한 내용은 Simple Storage Service 사용 설명서의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) 단원을 참조하세요.**

다음 코드는 Python용 SDK(Boto3) 또는 Java 2.x용 SDK를 사용하여 데이터세트 내보내기 작업을 생성하는 방법을 보여줍니다.

데이터세트를 내보내기 전에 Personalize 서비스 역할이 출력 S3 버킷에 액세스하고 여기에 기록할 수 있는지 확인합니다. [데이터세트 내보내기 작업 권한 요구 사항](export-permissions.md)을(를) 참조하세요.

------
#### [ SDK for Python (Boto3) ]

데이터세트의 데이터를 S3 버킷으로 내보내려면 다음 `create_dataset_export_job`을 사용합니다. 작업에 이름을 부여하고, `dataset arn`을 내보내려는 데이터세트의 리소스 이름(ARN)으로 바꾸고, `role ARN`를 [Personalize에 대한 IAM 역할 생성](set-up-required-permissions.md#set-up-create-role-with-permissions)에서 생성했던 Personalize 서비스 역할의 ARN으로 바꿉니다. `s3DataDestination`에서, `kmsKeyArn`에 대해 선택적으로 AWS KMS키에 대한 ARN을 제공하고, `path`에 대해 출력 S3 버킷에 대한 경로를 제공합니다.

 `ingestionMode`의 경우 다음 옵션 중에서 내보낼 데이터를 지정합니다.
+ 데이터세트 가져오기 작업을 사용하여 대량으로 가져온 데이터만 내보내려면 `BULK`을 지정합니다.
+ 콘솔 또는 `PutEvents`, PutUsers 또는 `PutItems`작업을 사용하여 개별적으로 가져온 데이터만 내보내려면 `PUT`을 지정합니다.
+ 데이터세트의 모든 데이터를 내보내려면 `ALL`를 지정합니다.

```
import boto3

personalize = boto3.client('personalize')

response = personalize.create_dataset_export_job(
    jobName = 'job name',
    datasetArn = 'dataset ARN',
    jobOutput = {
      "s3DataDestination": {
        "kmsKeyArn": "kms key ARN",
        "path": "s3://amzn-s3-demo-bucket/folder-name/"
      }
    },
    roleArn = 'role ARN',
    ingestionMode = 'PUT'
)

dsej_arn = response['datasetExportJobArn']

print ('Dataset Export Job arn: ' + dsej_arn)

description = personalize.describe_dataset_export_job(
    datasetExportJobArn = dsej_arn)['datasetExportJob']

print('Name: ' + description['jobName'])
print('ARN: ' + description['datasetExportJobArn'])
print('Status: ' + description['status'])
```

------
#### [ SDK for Java 2.x ]

데이터세트 내보내기 작업을 생성하려면 다음 `createDatasetExportJob`메서드를 사용합니다. PersonalizeClient, 내보내기 작업의 이름, 내보내려는 데이터세트의 ARN, 수집 모드, 출력 S3 버킷의 경로, AWS KMS키의 ARN 등을 파라미터로 전달합니다.

 `ingestionMode`은 다음 옵션 중 하나일 수 있습니다.
+ 데이터세트 가져오기 작업을 사용하여 대량으로 가져온 데이터만 내보내려면 `IngestionMode.BULK`을 사용합니다.
+ 콘솔 또는 `PutEvents`, PutUsers 또는 `PutItems`작업을 사용하여 개별적으로 가져온 데이터만 내보내려면 `IngestionMode.PUT`을 사용합니다.
+ 데이터세트의 모든 데이터를 내보내려면 `IngestionMode.ALL`를 사용합니다.

```
public static void createDatasetExportJob(PersonalizeClient personalizeClient, 
                                        String jobName,
                                        String datasetArn, 
                                        IngestionMode ingestionMode, 
                                        String roleArn,
                                        String s3BucketPath,
                                        String kmsKeyArn) {

    long waitInMilliseconds = 30 * 1000; // 30 seconds
    String status = null;

    try {
        S3DataConfig exportS3DataConfig = S3DataConfig.builder()
            .path(s3BucketPath)
            .kmsKeyArn(kmsKeyArn)
            .build();
            
        DatasetExportJobOutput jobOutput = DatasetExportJobOutput.builder()
            .s3DataDestination(exportS3DataConfig)
            .build();

        CreateDatasetExportJobRequest createRequest = CreateDatasetExportJobRequest.builder()
            .jobName(jobName)
            .datasetArn(datasetArn)
            .ingestionMode(ingestionMode)
            .jobOutput(jobOutput)
            .roleArn(roleArn)
            .build();

        String datasetExportJobArn = personalizeClient.createDatasetExportJob(createRequest).datasetExportJobArn();

        DescribeDatasetExportJobRequest describeDatasetExportJobRequest = DescribeDatasetExportJobRequest.builder()
            .datasetExportJobArn(datasetExportJobArn)
            .build();

        long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60;

        while (Instant.now().getEpochSecond() < maxTime) {

            DatasetExportJob datasetExportJob = personalizeClient.describeDatasetExportJob(describeDatasetExportJobRequest)
                .datasetExportJob();

            status = datasetExportJob.status();
            System.out.println("Export job status: " + status);

            if (status.equals("ACTIVE") || status.equals("CREATE FAILED")) {
                break;
            }
            try {
                Thread.sleep(waitInMilliseconds);
            } catch (InterruptedException e) {
                System.out.println(e.getMessage());
            }
        }
    } catch (PersonalizeException e) {
        System.out.println(e.awsErrorDetails().errorMessage());
    }
}
```

------