Amazon RDS 데이터베이스의 데이터를 사용하여 Amazon ML 데이터 소스 생성 - Amazon Machine Learning

더 이상 Amazon Machine Learning 서비스를 업데이트하거나 새 사용자를 받지 않습니다. 이 설명서는 기존 사용자에 제공되지만 더 이상 업데이트되지 않습니다. 자세한 내용은 Amazon Machine Learning이란? 단원을 참조하세요.

Amazon RDS 데이터베이스의 데이터를 사용하여 Amazon ML 데이터 소스 생성

Amazon ML을 사용하면 Amazon Realtional Database Service(Amazon RDS)의 MySQL 데이터베이스에 저장된 데이터로부터 데이터 소스 객체를 생성할 수 있습니다. 이 작업을 수행하면 Amazon ML이 지정한 SQL 쿼리를 실행하는 AWS Data Pipeline 객체를 생성하고 선택한 S3 버킷에 출력을 배치합니다. Amazon ML은 이 데이터를 사용하여 데이터 소스를 생성합니다.

참고

Amazon ML은 VPC의 MySQL 데이터베이스만 지원합니다.

Amazon ML에서 입력 데이터를 읽으려면 먼저 해당 데이터를 Amazon Simple Storage Service(Amazon S3)로 내보내야 합니다. API를 사용하여 자동으로 내보내기를 수행하도록 Amazon ML을 설정할 수 있습니다. RDS는 API에서만 사용할 수 있으며 콘솔에서는 사용할 수 없습니다.

Amazon ML이 Amazon RDS의 MySQL 데이터베이스에 연결되고 사용자를 대신하여 데이터를 읽도록 하려면 다음을 제공해야 합니다.

  • RDS DB 인스턴스 식별자

  • MySQL 데이터베이스 이름

  • 데이터 파이프라인을 생성, 활성화, 실행하는 데 사용되는 AWS Identity and Access Management(IAM) 역할

  • 데이터베이스 사용자 자격 증명:

    • 사용자 이름

    • 암호

  • AWS Data Pipeline 보안 정보:

    • IAM 리소스 역할

    • IAM 서비스 역할

  • Amazon RDS 보안 정보:

    • 서브넷 ID

    • 보안 그룹 ID

  • 데이터 소스를 생성하는 데 사용하려는 데이터를 지정하는 SQL 쿼리

  • 쿼리 결과를 저장하는 데 사용되는 S3 출력 위치(버킷)

  • (선택 사항) 데이터 스키마의 위치

또한 CreateDataSourceFromRDS 작업을 사용하여 Amazon RDS 데이터 소스를 생성하는 IAM 사용자 또는 역할에 iam:PassRole 권한이 있는지 확인해야 합니다. 자세한 내용은 Amazon ML 리소스에 대한 액세스 제어 - IAM 사용 섹션을 참조하세요.

RDS 데이터베이스 인스턴스 식별자

RDS DB 인스턴스 식별자는 Amazon ML이 Amazon RDS와 상호작용할 때 사용해야 하는 데이터베이스 인스턴스를 식별하기 위해 사용자가 제공하는 고유한 이름입니다. RDS DB 인스턴스 식별자는 Amazon RDS 콘솔 내에서 찾을 수 있습니다.

MySQL 데이터베이스 이름

MySQL 데이터베이스 이름은 RDS DB 인스턴스의 MySQL 데이터베이스 이름을 지정합니다.

데이터베이스 사용자 자격 증명

RDS DB 인스턴스에 연결하려면 제공한 SQL 쿼리를 실행할 수 있는 충분한 권한을 가진 데이터베이스 사용자의 사용자 이름과 암호를 제공해야 합니다.

AWS Data Pipeline 보안 정보

안전한 AWS Data Pipeline 액세스를 가능하게 하려면 IAM 리소스 역할과 IAM 서비스 역할의 이름을 제공해야 합니다.

EC2 인스턴스는 Amazon RDS에서 Amazon S3로 데이터를 복사하는 리소스 역할을 맡고 있습니다. 이 리소스 역할을 생성하는 가장 쉬운 방법은 DataPipelineDefaultResourceRole 템플릿을 사용하여 machinelearning.aws.com를 신뢰할 수 있는 서비스로 등록하는 것입니다. 템플릿에 대한 자세한 내용은 AWS Data Pipeline 개발자 안내서IAM 역할 설정 단원을 참조하세요.

역할을 직접 생성하는 경우 다음과 같은 내용이 포함되어야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "machinelearning.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:machinelearning:us-east-1:123456789012:datasource/*" } } }] }

AWS Data Pipeline은 Amazon RDS에서 Amazon S3로 데이터를 복사하는 과정을 모니터링하는 서비스 역할을 맡고 있습니다. 이 리소스 역할을 생성하는 가장 쉬운 방법은 DataPipelineDefaultRole 템플릿을 사용하여 machinelearning.aws.com를 신뢰할 수 있는 서비스로 등록하는 것입니다. 템플릿에 대한 자세한 내용은 AWS Data Pipeline 개발자 안내서IAM 역할 설정 단원을 참조하세요.

Amazon RDS 보안 정보

안전한 Amazon RDS 액세스를 가능하게 하려면 VPC Subnet IDRDS Security Group IDs를 제공해야 합니다. 또한 Subnet ID 파라미터가 가리키는 VPC 서브넷에 대해 적절한 수신 규칙을 설정하고 이러한 권한이 있는 보안 그룹의 ID를 제공해야 합니다.

MySQL 쿼리

MySQL SQL Query 파라미터는 MySQL 데이터베이스에서 실행하려는 SQL SELECT 쿼리를 지정합니다. 쿼리 결과는 지정한 S3 출력 위치(버킷)로 복사됩니다.

참고

기계 학습 기술은 입력 레코드가 임의 순서(셔플링됨)로 표시될 때 가장 잘 작동합니다. rand() 함수를 사용하면 MySQL 쿼리 결과를 쉽게 셔플링할 수 있습니다. 예를 들어 원본 쿼리가 다음과 같다고 가정해 보겠습니다.

"SELECT col1, col2, … FROM training_table"

다음과 같이 쿼리를 업데이트하면 임의 셔플링을 추가할 수 있습니다.

"SELECT col1, col2, … FROM training_table ORDER BY rand()"

S3 출력 위치

S3 Output Location 파라미터는 MySQL 쿼리 결과가 출력되는 “스테이징” Amazon S3 위치의 이름을 지정합니다.

참고

Amazon RDS에서 데이터를 내보낸 후에는 Amazon ML에 이 위치에서 데이터를 읽을 권한이 있는지 확인해야 합니다. 이러한 권한을 설정하는 방법에 대한 자세한 내용은 “Amazon S3에서 데이터를 읽을 수 있도록 Amazon ML에 권한 부여” 단원을 참조하세요.