

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

# Amazon Personalize でのデータセットのエクスポートジョブの作成
<a name="create-dataset-export-job"></a>

データセットのエクスポートジョブは、Amazon Personalize コンソール、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用して作成します。

## データセットのエクスポートジョブの作成 (コンソール)
<a name="export-data-console"></a>

データをデータセットにインポートし、出力 Amazon S3 バケットを作成したら、分析のためにデータをバケットにエクスポートできます。**Amazon Personalize コンソールを使用してデータセットをエクスポートするには、データセットのエクスポートジョブを作成します。Amazon S3 バケットの作成の詳細については、「**Amazon Simple Storage Service ユーザーガイド」の「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」を参照してください。

データセットをエクスポートする前に、Amazon Personalize のサービスロールが出力 Amazon S3 バケットにアクセスして書き込むことができることを確認してください。「[データセットのエクスポートジョブの許可要件](export-permissions.md)」を参照してください。

**データセットのエクスポートジョブを作成するには (コンソール)**

1. [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home) で Amazon Personalize コンソールを開きます。

1. ナビゲーションペインで、**[Dataset groups]** (データセットグループ) を選択します。

1. **[Dataset groups]** (データセットグループ) のページで、データセットグループを選択します。

1. ナビゲーションペインで、**[Datasets]** (データセット) を選択します。

1. Amazon S3 バケットにエクスポートするデータセットを選択します。

1.  **[Dataset export jobs]** (データセットのエクスポートジョブ) で、**[Create dataset export job]** (データセットのエクスポートジョブを作成) を選択します。

1. **[Dataset export job details]** (データセットのエクスポートジョブの詳細) の **[Dataset export job name]** (データセットのエクスポートジョブ名) に、エクスポートジョブの名前を入力します。

1. **[IAM サービスロール]**で、「[Amazon Personalize 向けの IAM ロールの作成](set-up-required-permissions.md#set-up-create-role-with-permissions)」で作成した Amazon Personalize のサービスロールを選択します。

1. **[Amazon S3 data output path]** (Amazon S3 データ出力パス) で、宛先 Amazon S3 バケットを入力します。次の構文を使用します。

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

1. AWS KMS を暗号化に使用している場合、**KMS キー ARN** には、AWS KMS キーの Amazon リソースネーム (ARN) を入力します。

1. **[Export data type]** (データタイプをエクスポート) で、最初にデータをインポートした方法に基づいて、エクスポートするデータのタイプを選択します。
   +  データセットのインポートジョブを使用して一括でインポートしたデータのみをエクスポートするには、**[Bulk]** (一括) を選択します。
   + コンソールまたは`PutEvents`、`PutUsers`、または `PutItems` 操作を使用して個別にインポートしたデータのみをエクスポートするには、**[増分]** を選択します。
   + データセット内のすべてのデータをエクスポートするには、**[Both]** (両方) を選択します。

1. **[タグ]** には、オプションで任意のタグを追加します。Amazon Personalize リソースのタグ付けの詳細については、「[Amazon Personalize リソースのタグ付け](tagging-resources.md)」を参照してください。

1. **[Create dataset export job]** (データセットのエクスポートジョブを作成) を選択します。

   **[Dataset overview]** (データセットの概要) のページの **[Dataset export jobs]** (データセットのエクスポートジョブ) で、ジョブが **[Export job status]** (エクスポートジョブのステータス) で一覧表示されます。ステータスが **ACTIVE** になると、データセットのエクスポートジョブが完了します。その後、出力 Amazon S3 バケットからデータをダウンロードできます。Amazon S3 バケットからオブジェクトをダウンロードする方法については、*Amazon Simple Storage Service ユーザーガイド*の「[オブジェクトのダウンロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html)」を参照してください。

## データセットのエクスポートジョブの作成 (AWS CLI)
<a name="export-data-cli"></a>

データをデータセットにインポートし、出力 Amazon S3 バケットを作成したら、分析のためにデータセットをバケットにエクスポートできます。AWS CLI を使用してデータセットをエクスポートするには、`create-dataset-export-job` AWS CLI コマンドを使用してデータセットのエクスポートジョブを作成します。Amazon S3 バケットの作成の詳細については、[Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)の「*バケットの作成*」を参照してください。

データセットをエクスポートする前に、Amazon Personalize のサービスロールが出力 Amazon S3 バケットにアクセスして書き込むことができることを確認してください。「[データセットのエクスポートジョブの許可要件](export-permissions.md)」を参照してください。

 `create-dataset-export-job` AWS CLI コマンドの例を次に示します。ジョブに名前を付け、`dataset arn` をエクスポートするデータセットの Amazon リソースネーム (ARN) に、`role ARN` を「[Amazon Personalize 向けの IAM ロールの作成](set-up-required-permissions.md#set-up-create-role-with-permissions)」で作成した Amazon Personalize のサービスロールの ARN に、それぞれ置き換えます。`s3DataDestination` で、`kmsKeyArn` についてはオプションで AWS KMS キーの ARN を指定し、`path` については出力 Amazon 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>

 データをデータセットにインポートし、出力 Amazon S3 バケットを作成したら、分析のためにデータセットをバケットにエクスポートできます。AWS SDK を使用してデータセットをエクスポートするには、[CreateDatasetExportJob](API_CreateDatasetExportJob.md) 操作を使用してデータセットのエクスポートジョブを作成します。Amazon S3 バケットの作成の詳細については、[Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)の「*バケットの作成*」を参照してください。

次のコードは、SDK for Python (Boto3) または SDK for Java 2.x SDK を使用してデータセットのエクスポートジョブを作成する方法を示しています。

データセットをエクスポートする前に、Amazon Personalize のサービスロールが出力 Amazon S3 バケットにアクセスして書き込むことができることを確認してください。「[データセットのエクスポートジョブの許可要件](export-permissions.md)」を参照してください。

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

次の `create_dataset_export_job` を使用して、データセット内のデータを Amazon S3 バケットにエクスポートします。ジョブに名前を付け、`dataset arn` をエクスポートするデータセットの Amazon リソースネーム (ARN) に、`role ARN` を「[Amazon Personalize 向けの IAM ロールの作成](set-up-required-permissions.md#set-up-create-role-with-permissions)」で作成した Amazon Personalize のサービスロールの ARN に、それぞれ置き換えます。`s3DataDestination` で、`kmsKeyArn` についてはオプションで AWS KMS キーの ARN を指定し、`path` については出力 Amazon 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、取り込みモード、出力 Amazon 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());
    }
}
```

------