データセット内のトレーニングデータを Amazon S3 にエクスポートする - Amazon Personalize

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

データセット内のトレーニングデータを Amazon S3 にエクスポートする

データを Amazon Personalize データセットにインポートした後、そのデータを Amazon S3 バケットにエクスポートできます。Amazon Personalize がレコメンデーションの生成に使用するデータを検証および検査し、以前にリアルタイムで記録したアイテムインタラクションイベントを表示したり、またはデータのオフライン分析を実行したりできます。

一括でインポートしたデータ (Amazon Personalize のデータセットのインポートジョブを使用してインポートされたもの) のみをエクスポートするか、個別にインポートしたデータ (コンソール、または PutEventsPutUsers、もしくは PutItems 操作を使用してインポートされた履歴およびリアルタイムのレコード) のみをエクスポートするか、その両方を実行するかを選択できます。

注記

Action インタラクションデータセットまたは Actions データセットのデータをエクスポートすることはできません。

すべてのフィールドと完全に一致するレコードの場合、Amazon Personalize はレコードを 1 つだけエクスポートします。2 つのレコードの ID が同じでも 1 つ以上のフィールドが異なる場合、Amazon Personalize は、エクスポートするデータに応じてレコードを含めたり削除したりします。

  • 一括データと増分データの両方をエクスポートする場合、Amazon Personalize は同じ ID の最新のアイテムのみをエクスポートし (アイテムデータセットのエクスポートの場合)、同じ ID のユーザーのみをエクスポートします (ユーザーデータセットのエクスポートの場合)。アイテムインタラクションデータセットの場合、Amazon Personalize はすべてのアイテムインタラクションデータをエクスポートします。

  • 増分データのみをエクスポートする場合、Amazon Personalize は、同じ を持つアイテムまたはユーザーを含め、個別にインポートしたすべてのアイテム、ユーザー、またはアイテムインタラクションデータをエクスポートしますIDs。すべてのフィールドに完全に一致するレコードのみが除外されます。

  • バルクデータのみをエクスポートする場合、Amazon Personalize には、同じ を持つアイテムまたはユーザーを含め、一括でインポートしたすべてのアイテム、ユーザー、またはアイテムインタラクションデータが含まれますIDs。すべてのフィールドに完全に一致するレコードのみが除外されます。

データセットをエクスポートするには、データセットのエクスポートジョブを作成します。データセットエクスポートジョブは、データセット内のレコードを Amazon S3 バケット内の 1 つ以上のCSVファイルに出力するレコードエクスポートツールです。出力CSVファイルには、データセットのスキーマのフィールドと一致する列名を持つヘッダー行が含まれます。

データセットのエクスポートジョブの許可要件

データセットをエクスポートするには、Amazon Personalize は、Amazon S3 バケットにファイルを追加するための許可を必要とします。アクセス許可を付与するには、バケットで PutObjectおよび ListBucket アクションを使用するアクセス許可をロールに付与する新しい AWS Identity and Access Management (IAM) ポリシーを Amazon Personalize サービスロールにアタッチし、Amazon Personalize プリンシパルに PutObjectおよび アクションを使用するアクセス許可を付与するバケットポリシーを出力 Amazon S3 ListBucket バケットにアタッチします。

暗号化に AWS Key Management Service (AWS KMS) を使用する場合は、Amazon Personalize と Amazon Personalize IAMサービスロールにキーを使用するアクセス許可を付与する必要があります。詳細については、「AWS KMS キーを使用するアクセス許可を Amazon Personalize に付与する」を参照してください。

データセットをエクスポートするためのサービスロールのポリシー

次のポリシー例は、PutObject および ListBucket アクションを使用するための許可を Amazon Personalize のサービスロールに付与します。amzn-s3-demo-bucket を出力バケットの名前に置き換えます。ポリシーをIAMサービスロールにアタッチする方法については、「」を参照してくださいAmazon Personalize サービスロールに対する、Amazon S3 ポリシーのアタッチ

{ "Version": "2012-10-17", "Id": "PersonalizeS3BucketAccessPolicy", "Statement": [ { "Sid": "PersonalizeS3BucketAccessPolicy", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

データセットをエクスポートするための Amazon S3 バケットポリシー

次のポリシー例は、Amazon S3 バケットに対する PutObject および ListBucket アクションを使用するための許可を Amazon Personalize に付与します。amzn-s3-demo-bucket をバケットの名前に置き換えます。Amazon S3 バケットポリシーをバケットに追加する方法については、Amazon Simple Storage Service ユーザーガイドのAmazon S3 コンソールを使用したバケットポリシーの追加」を参照してください。

{ "Version": "2012-10-17", "Id": "PersonalizeS3BucketAccessPolicy", "Statement": [ { "Sid": "PersonalizeS3BucketAccessPolicy", "Effect": "Allow", "Principal": { "Service": "personalize.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

データセットエクスポートジョブの作成

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

データをデータセットにインポートし、出力 Amazon S3 バケットを作成したら、分析のためにデータをバケットにエクスポートできます。Amazon Personalize コンソールを使用してデータセットをエクスポートするには、データセットのエクスポートジョブを作成します。Amazon S3 バケットの作成の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「バケットの作成」を参照してください。

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

データセットのエクスポートジョブを作成するには (コンソール)
  1. ホーム で https://console.aws.amazon.com/personalize/Amazon Personalize コンソールを開きます。

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

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

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

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

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

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

  8. IAM サービスロール で、 で作成した Amazon Personalize サービスロールを選択しますAmazon Personalize 向けの IAM ロールの作成

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

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

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

  11. [Export data type] (データタイプをエクスポート) で、最初にデータをインポートした方法に基づいて、エクスポートするデータのタイプを選択します。

    • データセットのインポートジョブを使用して一括でインポートしたデータのみをエクスポートするには、[Bulk] (一括) を選択します。

    • コンソールまたはPutEventsPutUsers、または PutItems 操作を使用して個別にインポートしたデータのみをエクスポートするには、[増分] を選択します。

    • データセット内のすべてのデータをエクスポートするには、[Both] (両方) を選択します。

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

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

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

データをデータセットにインポートし、出力 Amazon S3 バケットを作成したら、分析のためにデータセットをバケットにエクスポートできます。を使用してデータセットをエクスポートするには AWS CLI、 create-dataset-export-job AWS CLI コマンドを使用してデータセットのエクスポートジョブを作成します。Amazon S3 バケットの作成の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「バケットの作成」を参照してください。

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

次に create-dataset-export-job AWS CLI コマンドの例を示します。ジョブに名前を付け、 dataset arnをエクスポートするデータセットの Amazon リソースネーム (ARN) role ARNに置き換え、 を で作成した Amazon Personalize サービスロールARNの に置き換えますAmazon Personalize 向けの IAM ロールの作成。でs3DataDestination、 にはkmsKeyArnオプションで AWS KMS キーARNに を指定し、 には出力 Amazon S3 バケットへのパスpathを指定します。

ingestion-mode で、次のオプションからエクスポートするデータを指定します。

  • データセットのインポートジョブを使用して一括でインポートしたデータのみをエクスポートするように BULK を指定します。

  • コンソールPUTまたは 、、または PutItemsオペレーションを使用して個別にインポートしたデータのみをエクスポートするにはPutEvents PutUsers、 を指定します。

  • データセット内のすべてのデータをエクスポートするように ALL を指定します。

詳細については、「CreateDatasetExportJob」を参照してください。

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

データをデータセットにインポートし、出力 Amazon S3 バケットを作成したら、分析のためにデータセットをバケットにエクスポートできます。を使用してデータセットをエクスポートするには AWS SDKs、 CreateDatasetExportJobオペレーションを使用してデータセットのエクスポートジョブを作成します。Amazon S3 バケットの作成の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「バケットの作成」を参照してください。

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

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

SDK for Python (Boto3)

次の create_dataset_export_job を使用して、データセット内のデータを Amazon S3 バケットにエクスポートします。ジョブに名前を付け、 dataset arnをエクスポートするデータセットの Amazon リソースネーム (ARN) role ARNに置き換え、 を で作成した Amazon Personalize サービスロールARNの に置き換えますAmazon Personalize 向けの IAM ロールの作成。ではs3DataDestination、 にはkmsKeyArnオプションで AWS KMS キーARNに を指定し、 には出力 Amazon S3 バケットへのパスpathを指定します。

ingestionMode で、次のオプションからエクスポートするデータを指定します。

  • データセットのインポートジョブを使用して一括でインポートしたデータのみをエクスポートするように BULK を指定します。

  • コンソールPUTまたは 、、または PutItemsオペレーションを使用して個別にインポートしたデータのみをエクスポートするにはPutEvents PutUsers、 を指定します。

  • データセット内のすべてのデータをエクスポートするように 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 バケットのパス、キーの を渡します。 ARN AWS KMS

ingestionMode は、次のいずれかのオプションになります。

  • データセットのインポートジョブを使用して一括でインポートしたデータのみをエクスポートするように IngestionMode.BULK を使用します。

  • コンソールまたは 、、または PutItemsオペレーションを使用して個別にインポートしたデータのみをエクスポートIngestionMode.PUTするにはPutEvents PutUsers、 を使用します。

  • データセット内のすべてのデータをエクスポートするように 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()); } }