데이터세트의 교육 데이터를 Amazon S3로 내보내기 - Personalize

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

데이터세트의 교육 데이터를 Amazon S3로 내보내기

Personalize 데이터세트로 데이터를 가져온 후 데이터를 S3 버킷으로 내보낼 수 있습니다. Amazon Personalize가 추천을 생성하는 데 사용하는 데이터를 확인 및 검사하거나, 이전에 실시간으로 기록한 항목 상호 작용 이벤트를 보거나, 데이터에 대한 오프라인 분석을 수행하기 위해 데이터를 내보낼 수 있습니다.

대량으로 가져온 데이터(Personalize 데이터세트 가져오기 작업을 사용하여 가져온 데이터)만 내보내거나, 개별적으로 가져온 데이터(콘솔이나, PutEvents, PutUsers또는 PutItems작업을 사용하여 가져온 레코드)만 내보내거나, 둘 다 내보내도록 선택할 수 있습니다.

참고

작업 상호 작용 데이터 세트 또는 작업 데이터 세트의 데이터는 내보낼 수 없습니다.

모든 필드와 정확히 일치하는 레코드의 경우 Personalize는 레코드 하나만 내보냅니다. 두 레코드의 ID가 동일하지만 하나 이상의 필드가 다른 경우 Personalize는 내보내기로 선택한 데이터에 따라 레코드를 포함시키거나 제거합니다.

  • 대량 및 증분 데이터를 모두 내보내는 경우 Personalize는 동일한 ID를 가진 최신 항목만 내보내고(항목 데이터세트 내보내기에서), 동일한 ID를 가진 사용자만 내보냅니다(사용자 데이터세트 내보내기에서). 항목 상호 작용 데이터 세트의 경우 Amazon Personalize는 모든 항목 상호 작용 데이터를 내보냅니다.

  • 증분 데이터만 내보내는 경우 Amazon Personalize는 동일한 품목 또는 사용자를 포함하여 개별적으로 가져온 모든 품목, 사용자 또는 품목 상호 작용 데이터를 내보냅니다. IDs 모든 필드와 정확히 일치하는 레코드만 제외됩니다.

  • 대량 데이터만 내보내는 경우 Amazon Personalize에는 동일한 품목 또는 사용자를 포함하여 대량으로 가져온 모든 품목, 사용자 또는 품목 상호 작용 데이터가 포함됩니다. IDs 모든 필드와 정확히 일치하는 레코드만 제외됩니다.

데이터세트를 내보내려면 데이터세트 내보내기 작업을 생성합니다. 데이터세트 내보내기 작업은 데이터세트의 레코드를 Amazon S3 버킷에 있는 하나 이상의 CSV 파일로 출력하는 레코드 내보내기 도구입니다. 출력 CSV 파일에는 데이터세트 스키마의 필드와 일치하는 열 이름이 있는 헤더 행이 포함됩니다.

데이터세트 내보내기 작업 권한 요구 사항

데이터세트를 내보내려면 S3 버킷에 파일을 추가할 수 있는 권한이 Personalize에 필요합니다. 권한을 부여하려면 Amazon Personalize 서비스 역할에 새 AWS Identity and Access Management (IAM) 정책을 연결하여 역할에 버킷의 PutObjectListBucket 작업을 사용할 권한을 부여하는 새 () 정책을 연결하고, Amazon Personalize 원칙에 및 작업을 사용할 PutObject 권한을 부여하는 버킷 정책을 출력 Amazon S3 버킷에 연결하십시오. ListBucket

암호화에 AWS Key Management Service (AWS KMS) 를 사용하는 경우 Amazon Personalize와 Amazon IAM Personalize 서비스 역할에 키를 사용할 권한을 부여해야 합니다. 자세한 내용은 Amazon Personalize에 AWS KMS 키 사용 권한 부여 단원을 참조하십시오.

데이터세트 내보내기를 위한 서비스 역할 정책

다음 예제 정책은 Personalize 서비스 역할에 PutObjectListBucket작업을 사용할 수 있는 권한을 부여합니다. amzn-s3-demo-bucket을 출력 버킷의 이름으로 바꿉니다. IAM서비스 역할에 정책을 연결하는 방법에 대한 자세한 내용은 을 참조하십시오. S3 정책을 Personalize 서비스 역할에 연결

{ "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/*" ] } ] }

데이터세트를 내보내는 데 사용되는 S3 버킷 정책

다음 예제 정책은 S3 버킷에서 PutObjectListBucket작업을 사용할 수 있는 권한을 Personalize에 부여합니다. amzn-s3-demo-bucket을 사용 중인 버킷의 이름으로 바꿉니다. Amazon S3 버킷 정책을 버킷에 추가하는 방법에 대한 자세한 내용은 Amazon 심플 스토리지 서비스 사용 설명서의 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

데이터를 데이터세트로 가져오고 출력 S3 버킷을 생성한 후, 분석을 위해 데이터를 버킷으로 내보낼 수 있습니다. Personalize 콘솔을 사용하여 데이터세트를 내보내려면 데이터세트 내보내기 작업을 생성합니다. S3 버킷 생성에 대한 자세한 내용은 Simple Storage Service 사용 설명서의 버킷 생성 단원을 참조하세요.

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

데이터세트 내보내기 작업을 생성하려면(콘솔)
  1. 집에서 https://console.aws.amazon.com/personalize/ Amazon Personalize 콘솔을 엽니다.

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

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

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

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

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

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

  8. IAM서비스 역할의 경우 에서 생성한 Amazon Personalize 서비스 역할을 선택합니다. Personalize에 대한 IAM 역할 생성

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

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

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

  11. 내보내기 데이터 유형에서 해당 데이터를 처음 가져온 방식에 따라 내보낼 데이터 유형을 선택합니다.

    • 데이터세트 가져오기 작업을 사용하여 대량으로 가져온 데이터만 내보내려면 대량을 선택합니다.

    • 콘솔이나 PutEvents, PutUsers또는 PutItems작업을 사용하여 개별적으로 가져온 데이터만 내보내려면 증분을 선택합니다.

    • 데이터세트의 모든 데이터를 내보내려면 둘 다를 선택합니다.

  12. 태그의 경우, 원하는 태그를 추가할 수 있습니다. Personalize 리소스 태그 지정에 대한 자세한 내용은 Personalize 리소스에 태그 지정단원을 참조하세요.

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

    데이터세트 개요 페이지의 데이터세트 내보내기 작업에서 작업이 내보내기 작업 상태와 함께 나열됩니다. 상태가 이면 데이터세트 내보내기 작업이 완료됩니다 ACTIVE. 그러면 출력 S3 버킷에서 데이터를 다운로드할 수 있습니다. S3 버킷에서 객체를 다운로드하는 방법에 대한 자세한 내용은 Simple Storage Service 사용 설명서의 객체 다운로드 단원을 참조하세요.

데이터를 데이터세트로 가져오고 출력 S3 버킷을 생성한 후, 데이터세트를 분석을 위해 버킷으로 내보낼 수 있습니다. 를 사용하여 데이터세트를 내보내려면 명령어를 AWS CLI사용하여 데이터세트 내보내기 작업을 만드세요. create-dataset-export-job AWS CLI S3 버킷 생성에 대한 자세한 내용은 Simple Storage Service 사용 설명서의 버킷 생성 단원을 참조하세요.

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

다음은 create-dataset-export-job AWS CLI 명령의 예입니다. 작업 이름을 지정하고, 내보내려는 데이터 세트의 Amazon 리소스 이름 (ARN) role ARN 으로 바꾸고, 생성한 Amazon Personalize 서비스 역할로 바꿉니다. dataset arn ARN Personalize에 대한 IAM 역할 생성s3DataDestination kmsKeyArn 경우 선택적으로 AWS KMS 키를 입력하고 의 ARN 경우 출력 Amazon S3 버킷의 경로를 path 제공하십시오.

ingestion-mode의 경우 다음 옵션 중에서 내보낼 데이터를 지정합니다.

  • 데이터세트 가져오기 작업을 사용하여 대량으로 가져온 데이터만 내보내려면 BULK을 지정합니다.

  • 콘솔 또는 PutEvents PutUsers, 또는 PutItems 작업을 사용하여 개별적으로 가져온 데이터만 PUT 내보내도록 지정합니다.

  • 데이터세트의 모든 데이터를 내보내려면 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

데이터를 데이터세트로 가져오고 출력 S3 버킷을 생성한 후, 데이터세트를 분석을 위해 버킷으로 내보낼 수 있습니다. 를 사용하여 데이터세트를 내보내려면 작업을 사용하여 데이터세트 내보내기 작업을 만드세요. AWS SDKs CreateDatasetExportJob S3 버킷 생성에 대한 자세한 내용은 Simple Storage Service 사용 설명서의 버킷 생성 단원을 참조하세요.

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

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

SDK for Python (Boto3)

데이터세트의 데이터를 S3 버킷으로 내보내려면 다음 create_dataset_export_job을 사용합니다. 작업 이름을 지정하고, 내보내려는 데이터 세트의 Amazon 리소스 이름 (ARN) role ARN 으로 바꾸고, 생성한 Amazon Personalize 서비스 역할로 바꿉니다. dataset arn ARN Personalize에 대한 IAM 역할 생성s3DataDestination kmsKeyArn 경우 선택적으로 AWS KMS 키를 입력하고 의 ARN 경우 출력 Amazon S3 버킷의 경로를 path 제공하십시오.

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메서드를 사용합니다. a PersonalizeClient, 내보내기 작업 이름, 내보내려는 데이터세트, 수집 모드, 출력 Amazon S3 버킷 경로, 키 등을 파라미터로 전달합니다. ARN ARN AWS KMS

ingestionMode은 다음 옵션 중 하나일 수 있습니다.

  • 데이터세트 가져오기 작업을 사용하여 대량으로 가져온 데이터만 내보내려면 IngestionMode.BULK을 사용합니다.

  • 콘솔 또는 PutEvents PutUsers, 또는 작업을 사용하여 개별적으로 가져온 데이터만 내보내는 데 사용합니다IngestionMode.PUT. PutItems

  • 데이터세트의 모든 데이터를 내보내려면 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()); } }