Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Amazon Aurora와 Amazon S3 사이에서 데이터를 로드할 때 오류를 해결하려면 어떻게 해야 합니까?
Amazon Aurora와 Amazon Simple Storage Service(Amazon S3) 사이에서 데이터를 로드할 때 발생하는 오류를 수정하려고 합니다.
간략한 설명
Amazon Aurora와 Amazon S3 사이에서 데이터를 텍스트 파일로 로드하려면 SELECT INTO OUTFILE S3 명령 또는 LOAD DATA FROM S3 명령을 사용합니다. 두 명령 중 하나를 실행하면 다음과 같은 오류가 표시될 수 있습니다.
- Error Code: 1871. Missing Credentials
- Incorrect Command: missing file/prefix/manifest keyword
- Error code: 1045. Access denied error
- Error code: 1815. Internal error: Unable to initialize
- Error Code: 1871. S3 API returned error: Access Denied
해결 방법
SELECT INTO OUTFILE S3 또는 LOAD DATA FROM S3 명령 실행
다음 단계를 완료합니다.
-
S3 버킷을 생성하고 ARN을 복사합니다.
-
권한이 있는 S3 버킷에 대한 AWS Identity and Access Management(IAM) 정책을 생성합니다. 버킷 ARN을 지정한 다음, 버킷 ARN 내의 객체에 권한을 부여합니다. FullS3Access 정책을 사용하지 않는 경우 다음과 유사한 사용자 지정 정책을 실행합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::<your_bucket_name>", "arn:aws:s3:::<your_bucket_name>/*" ] } ] }
-
Amazon Relational Database Service(RDS) 서비스에 대한 IAM 역할을 생성합니다. 이후 생성한 IAM 정책을 연결합니다. 신뢰 관계는 다음과 유사합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Amazon Aurora에 대한 사용자 지정 DB 클러스터 파라미터 그룹을 생성합니다. Amazon Aurora MySQL 호환 버전 1 또는 2의 경우 aurora_select_into_s3_role 또는 aws_default_s3_role을 IAM 역할 ARN 값으로 편집합니다. Aurora MySQL-Compatible 호환 버전 3의 경우 aws_default_s3_role을 IAM 역할 ARN의 값으로 편집합니다.
-
생성한 DB 클러스터에 IAM 역할을 연결합니다. 자세한 내용은 Amazon Aurora MySQL DB 클러스터에 IAM 역할 연결을 참조하십시오.
-
새 사용자를 생성하려면 다음 명령을 실행합니다.
CREATE USER 'testsaveload'@'%' IDENTIFIED BY 'somepassword';show grants for 'testsaveload'@'%';
-
사용자에게 권한을 부여하려면 다음 명령을 실행합니다.
GRANT SELECT, CREATE, INSERT, DROP ON *.* TO 'testsaveload'@'%';
-
Aurora MySQL 버전 1 또는 2의 경우 다음 문을 사용합니다.
GRANT SELECT INTO S3 ON *.* TO 'testsaveload'@'%';GRANT LOAD FROM S3 ON *.* TO 'testsaveload'@'%';
-
Aurora MySQL 버전 3의 경우 다음 문을 사용합니다.
GRANT AWS_SELECT_S3_ACCESS TO 'testsaveload'@'%'GRANT AWS_LOAD_S3_ACCESS TO 'testsaveload'@'%';
참고: Aurora MySQL 버전 3에서 DB 클러스터 파라미터를 사용하여 activate_all_roles_on_login을 켭니다. 사용자가 DB 인스턴스에 연결하면 모든 역할이 자동으로 활성화됩니다. 자세한 내용은 Amazon Aurora MySQL에서 데이터를 로드할 수 있는 권한 부여를 참조하십시오. SELECT INTO OUTFILE S3 또는 LOAD DATA INTO S3 명령을 실행합니다.
SELECT * from test1.test2034 INTO OUTFILE S3 's3://tests3saveloadaurora/testfile1prefix.part_00000';LOAD DATA FROM S3 PREFIX 's3-us-east-1://tests3saveloadaurora/testfile1prefix.part_00000' INTO TABLE test3001; LOAD DATA FROM S3 's3-us-east-1://tests3saveloadaurora/prefix3.part_00000' INTO TABLE test3000;
Error Code: 1871. Missing Credentials
DB 클러스터에 대한 IAM 역할 연결이 누락된 경우 "SELECT INTO OUTFILE S3 또는 LOAD DATA FROM S3 명령 실행” 섹션의 5단계를 참조하십시오. 역할 ARN이 지정되지 않았고 파라미터 그룹에 역할 이름만 나열되어 있는 경우 2단계를 참조하십시오.
Incorrect Command: missing file/prefix/manifest keyword
이 오류가 표시되면 명령 키워드가 올바른지 확인하십시오.
Error code: 1045. Access denied error
잘못된 명령을 입력하면 "1045: Access denied for user ''testsaveload'@'%';"와 같은 오류 메시지가 표시될 수 있습니다. 예를 들어, 다음 명령은 올바르지 않습니다.
SELECT * from test1.test2034 INTO OUTFILE 's3://tests3saveloadaurora/testfile1prefix.part_00000';
다음 명령과 같이 쿼리에 키워드 S3가 입력되었는지 확인하십시오.
SELECT * from test1.test2034 INTO OUTFILE S3 's3://tests3saveloadaurora/testfile1prefix.part_00000';
Error code: 1815. Internal error: Unable to initialize
이 오류가 표시되면 다음 단계를 완료하십시오.
- 파일이 S3 버킷에 존재하는지 확인하고, 스크립트에 지정한 이름이 파일 이름과 일치하는지 확인하십시오. S3 버킷, 폴더 및 객체 이름이 load 명령과 일치하는지 확인하십시오.
- “SELECT INTO OUTFILE S3 또는 LOAD DATA FROM S3 명령 실행”의 2단계를 검토하여 올바른 권한을 설정했는지 확인합니다.
- LOAD 스크립트에 구문 오류가 있는 경우 LOAD 스크립트를 검토한 다음 명령을 다시 실행하십시오.
- S3 버킷과 DB 클러스터가 서로 다른 리전에 있고 S3 버킷의 경로에 Region 값이 없는 경우 Amazon Simple Storage Service 엔드포인트 및 할당량에서 자세한 내용을 참조하십시오.
- 리더 인스턴스와 라이터 인스턴스의 네트워크 구성이 다른 경우 Amazon Aurora 엔드포인트 연결에서 자세한 내용을 참조하십시오.
Error Code: 1871. S3 API returned error: Access Denied
S3 버킷이 암호화되어 있거나 S3 버킷 내에 암호화된 파일이 있는 경우 이 오류가 발생할 수 있습니다. ServerSideEncryptionConfigurationExists가 거짓이 아닌 경우, LOAD 작업을 수행하는 데 사용된 IAM 역할에 첨부한 정책에 kms:*를 추가하십시오.
예를 들어, FULLS3Access 정책을 사용하지 않는 경우 다음 사용자 지정 정책 예시를 사용하십시오.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:*", "kms:*" ], "Resource": [ "arn:aws:s3:::<your_bucket_name>", "arn:aws:s3:::<your_bucket_name>/*" ] } ] }
Error: S3 API returned error: Resource Not Found: No response body.
이 오류를 해결하려면 ARN과 버킷 이름이 올바른지 확인하십시오.
관련 정보
관련 콘텐츠
- 질문됨 8년 전lg...
- 질문됨 2년 전lg...
- 질문됨 2년 전lg...
- 질문됨 4달 전lg...
- 질문됨 2달 전lg...
- AWS 공식업데이트됨 2년 전