Amazon S3 통합 - Amazon Relational Database Service

Amazon S3 통합

RDS for Oracle DB 인스턴스와 Amazon S3 버킷 사이에서 파일을 전송할 수 있습니다. Oracle Data Pump와 같은 Oracle Database 기능과의 Amazon S3 통합을 사용할 수 있습니다. 예를 들어 Amazon S3의 Data Pump 파일을 DB 인스턴스로 다운로드할 수 있습니다. 자세한 내용은 Amazon RDS의 Oracle로 데이터 가져오기을 참조하세요.

참고

DB 인스턴스와 Amazon S3 버킷은 같은 AWS 리전에 있어야 합니다.

Amazon S3와 RDS for Oracle 통합을 위한 IAM 권한 구성

RDS for Oracle이 Amazon S3와 통합되게 하려면 DB 인스턴스에 Amazon S3 버킷에 대한 액세스 권한이 있어야 합니다. DB 인스턴스가 사용하는 Amazon VPC가 Amazon S3 엔드포인트에 대한 액세스 권한을 제공할 필요가 없습니다.

RDS for Oracle은 한 계정의 DB 인스턴스에서 다른 계정의 Amazon S3 버킷으로 파일을 업로드할 수 있습니다. 추가 단계가 필요한 경우 다음 섹션에 설명되어 있습니다.

1단계: Amazon RDS 역할에 대한 IAM 정책 생성

이 단계에서는 Amazon S3 버킷에서 RDS DB 인스턴스로 파일을 전송하는 데 필요한 권한을 가진 AWS Identity and Access Management(IAM) 정책을 생성합니다. 이 단계에서는 이미 S3 버킷을 생성한 것으로 가정합니다.

정책을 생성하기 전에 다음 정보를 기록해 둡니다.

  • 버킷의 Amazon 리소스 이름(ARN)

  • 버킷에서 SSE-KMS 또는 SSE-S3 암호화를 사용하는 경우 AWS KMS 키에 대한 ARN

    참고

    RDS for Oracle DB 인스턴스는 SSE-C로 암호화된 Amazon S3 버킷에 액세스할 수 없습니다.

자세한 내용은 Amazon Simple Storage Service 사용 설명서의 서버 측 암호화를 사용하여 데이터 보호를 참조하세요.

Amazon S3 버킷에 Amazon RDS 액세스를 허용하는 IAM 정책을 생성하려면
  1. IAM 관리 콘솔을 엽니다.

  2. 액세스 관리에서 정책을 선택합니다.

  3. 정책 생성(Create Policy)을 선택합니다.

  4. [Visual editor] 탭에서 [Choose a service]를 선택한 다음 [S3]을 선택합니다.

  5. 작업에서 모두 확장을 선택한 후 Amazon S3 버킷에서 Amazon RDS(으)로 파일을 전송하는 데 필요한 버킷 권한 및 객체 권한을 선택합니다. 예를 들어, 다음을 수행합니다.

    • 목록을 확장한 후 ListBucket을 선택합니다.

    • 읽기를 확장한 후 GetObject를 선택합니다.

    • 쓰기(Write)를 확장한 다음 PutObjectDeleteObject를 선택합니다.

    • 권한 관리(Permissions management)를 확장한 다음 PutObjectAcl을 선택합니다. 이 권한은 다른 계정에서 소유한 버킷에 파일을 업로드할 계획이고 이 계정이 버킷 콘텐츠를 완전히 제어해야 하는 경우에 필요합니다.

    객체 권한(Object permissions)은 Amazon S3 객체 작업에 대한 권한입니다. 이 권한은 버킷 자체가 아닌 버킷의 객체에 부여해야 합니다. 자세한 내용은 객체 작업에 대한 권한을 참조하세요.

  6. 리소스를 선택하고 다음을 수행합니다.

    1. 특정 항목을 선택합니다.

    2. bucket의 경우 ARN 추가를 선택합니다. 버킷 ARN을 입력합니다. 버킷 이름은 자동으로 입력됩니다. 그런 다음 추가를 선택합니다.

    3. object 리소스가 표시되면 ARN 추가를 선택하여 리소스를 수동으로 추가하거나 임의를 선택합니다.

      참고

      Amazon Resource Name(ARN)(Amazon 리소스 이름(ARN))을 더 구체적인 ARN 값으로 설정하여 Amazon RDS에서 Amazon S3 버킷의 특정 파일 또는 폴더에만 액세스하도록 허용할 수 있습니다. Amazon S3에 대한 액세스 정책을 정의하는 방법에 대한 자세한 내용은 Amazon S3 리소스에 대한 액세스 권한 관리 단원을 참조하십시오.

  7. (선택 사항) 추가 권한 추가를 선택하여 정책에 리소스를 추가합니다. 예를 들어, 다음을 수행합니다.

    1. 버킷이 사용자 지정 KMS 키로 암호화되면 서비스에 대해 KMS를 선택합니다.

    2. 수동 작업의 경우 다음을 선택합니다.

      • 암호화

      • ReEncrypt 시작 지점ReEncrypt 종료 지점

      • Decrypt

      • DescribeKey

      • GenerateDataKey

    3. 리소스에서 특정 항목을 선택합니다.

    4. key의 경우 ARN 추가를 선택합니다. 사용자 지정 키의 ARN을 리소스로 입력한 다음, 추가를 선택합니다.

      자세한 내용은 Amazon Simple Storage Service 사용 설명서AWS Key Management Service(SSE-KMS)에 저장된 KMS 키로 서버 측 암호화를 사용하여 데이터 보호를 참조하세요.

    5. Amazon RDS가 다른 버킷에 액세스하게 하려면 이러한 버킷에 대한 ARN을 추가합니다. 또는 Amazon S3의 모든 버킷 및 객체에 대한 액세스 권한을 부여할 수도 있습니다.

  8. Next: Tags(다음: 태그)를 선택한 후 Next: Review(다음: 검토)를 선택합니다.

  9. 이름에서 IAM 정책의 이름을 입력합니다(예: rds-s3-integration-policy). IAM 역할을 만들어 DB 인스턴스와 연결할 때 이 이름을 사용합니다. Description 값(선택 사항)을 추가할 수도 있습니다.

  10. 정책 생성을 선택합니다.

Amazon RDS에 Amazon S3 버킷에 대한 액세스 권한을 부여하는 AWS Identity and Access Management(IAM) 정책을 생성합니다. 정책을 생성한 후 정책의 ARN을 기록해 둡니다. 이후 단계에 이 ARN이 필요합니다.

필요한 액세스 유형에 따라 정책에 적절한 조치를 포함합니다.

  • GetObject – Amazon S3 버킷에서 Amazon RDS로 파일을 전송하는 데 필요합니다.

  • ListBucket – Amazon S3 버킷에서 Amazon RDS로 파일을 전송하는 데 필요합니다.

  • PutObject – Amazon RDS에서 Amazon S3 버킷으로 파일을 전송하는 데 필요합니다.

다음 AWS CLI 명령은 이 옵션으로 rds-s3-integration-policy라는 IAM 정책을 만듭니다. your-s3-bucket-arn이라는 버킷에 대한 액세스 권한을 부여합니다.

대상 LinuxmacOS, 또는Unix:

aws iam create-policy \ --policy-name rds-s3-integration-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket-arn", "arn:aws:s3:::your-s3-bucket-arn/*" ] } ] }'

다음 예제에는 사용자 지정 KMS 키에 대한 사용 권한이 포함되어 있습니다.

aws iam create-policy \ --policy-name rds-s3-integration-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject", "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey", "kms:DescribeKey", ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket-arn", "arn:aws:s3:::your-s3-bucket-arn/*", "arn:aws:kms:::your-kms-arn" ] } ] }'

Windows의 경우:

aws iam create-policy ^ --policy-name rds-s3-integration-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket-arn", "arn:aws:s3:::your-s3-bucket-arn/*" ] } ] }'

다음 예제에는 사용자 지정 KMS 키에 대한 사용 권한이 포함되어 있습니다.

aws iam create-policy ^ --policy-name rds-s3-integration-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject", "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt", "kms:GenerateDataKey", "kms:DescribeKey", ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket-arn", "arn:aws:s3:::your-s3-bucket-arn/*", "arn:aws:kms:::your-kms-arn" ] } ] }'

2단계: (선택 사항) Amazon S3 버킷에 대한 IAM 정책 생성

이 단계는 다음 조건에서만 필요합니다.

  • 한 계정(계정 A)에서 Amazon S3 버킷에 파일을 업로드하고 다른 계정(계정 B)에서 액세스할 계획입니다.

  • 계정 B가 버킷을 소유하고 있습니다.

  • 계정 B는 버킷에 로드된 객체를 완전히 제어해야 합니다.

앞서 나온 조건에 해당하지 않는 경우 3단계: DB 인스턴스에 대한 IAM 역할 생성 및 정책 연결으로 건너뜁니다.

버킷 정책을 생성하려면 다음이 있어야 합니다.

  • 계정 A의 계정 ID

  • 계정 A의 사용자 이름

  • 계정 B의 Amazon S3 버킷에 대한 ARN 값

버킷 정책 생성 또는 편집
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 버킷 목록에서 버킷 정책을 만들 버킷 이름 또는 버킷 정책을 편집할 버킷 이름을 선택합니다.

  3. Permissions를 선택합니다.

  4. 버킷 정책에서 편집을 선택합니다. 버킷 정책 편집(Edit bucket policy) 페이지가 열립니다.

  5. 버킷 정책 편집 페이지에서 Amazon S3 사용 설명서정책 예제를 탐색하거나 정책 생성기를 선택하여 정책을 자동으로 생성하거나 정책 섹션에서 JSON을 편집합니다.

    정책 생성기(Policy generator)를 선택하면 새 창에서 AWS 정책 생성기가 열립니다.

    1. AWS 정책 생성기 페이지의 정책 유형 선택에서 S3 버킷 정책을 선택합니다.

    2. 제공된 필드에 정보를 입력하여 명령문을 추가한 다음 명령문 추가(Add Statement)를 선택합니다. 명령문을 추가하려는 만큼 반복합니다. 이러한 필드에 대한 자세한 내용은 IAM 사용 설명서IAM JSON 정책 요소 참조를 참조하세요.

      참고

      편의상 버킷 정책 편집(Edit bucket policy) 페이지는 정책(Policy) 텍스트 필드 위에 현재 버킷의 버킷 ARN(Bucket ARN)(Amazon 리소스 이름)을 표시합니다. AWS 정책 생성기 페이지의 명령문에 사용하기 위해 이 ARN을 복사할 수 있습니다.

    3. 명령문 추가를 마친 후 정책 생성(Generate Policy)을 선택합니다.

    4. 생성된 정책 텍스트를 복사하고 닫기(Close)를 선택하고 Amazon S3 콘솔의 버킷 정책 편집(Edit bucket policy) 페이지로 돌아갑니다.

  6. 정책(Policy) 상자에서 기존 정책을 편집하거나 정책 생성기에서 버킷 정책을 붙여 넣습니다. 정책을 저장하기 전에 보안 경고, 오류, 일반 경고 및 제안 사항을 해결해야 합니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-A-ID:account-A-user" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::account-B-bucket-arn", "arn:aws:s3:::account-B-bucket-arn/*" ] } ] }
  7. 변경 사항 저장을 선택하면 버킷 권한 페이지로 돌아갑니다.

3단계: DB 인스턴스에 대한 IAM 역할 생성 및 정책 연결

이 단계에서는 1단계: Amazon RDS 역할에 대한 IAM 정책 생성에서 IAM 정책을 생성했다고 가정합니다. 그리고 RDS for Oracle DB 인스턴스에 대한 역할을 생성한 다음 해당 역할에 정책을 연결합니다.

Amazon S3 버킷에 Amazon RDS 액세스를 허용하는 IAM 역할을 생성하려면
  1. IAM 관리 콘솔을 엽니다.

  2. 탐색 창에서 역할을 선택합니다.

  3. 역할 생성을 선택합니다.

  4. AWS 서비스를 선택합니다.

  5. 기타 AWS 서비스 사용 사례에서 RDS를 선택한 다음 RDS - 데이터베이스에 역할 추가를 선택합니다. 이후 다음을 선택합니다.

  6. 권한 정책검색1단계: Amazon RDS 역할에 대한 IAM 정책 생성에서 생성한 IAM 정책의 이름을 입력하고, 목록에 표시된 정책을 선택합니다. 다음을 선택합니다.

  7. 역할 이름에 IAM 역할의 이름을 입력합니다(예: rds-s3-integration-role). 설명 값(선택 사항)을 추가할 수도 있습니다.

  8. 역할 생성을 선택합니다.

역할을 생성하고 역할에 정책을 연결하는 방법
  1. Amazon RDS가 Amazon S3 버킷에 액세스하기 위해 사용자 대신 가정할 수 있는 IAM 역할을 만듭니다.

    서비스 권한을 특정 리소스로 제한하는 리소스 기반 신뢰 관계의 aws:SourceArnaws:SourceAccount 전역 조건 컨텍스트 키를 사용하는 것이 좋습니다. 이는 혼동된 대리자 문제를 방지하는 가장 효과적인 방법입니다.

    전역 조건 컨텍스트 키를 모두 사용하고 aws:SourceArn 값에 계정 ID가 포함되도록 할 수 있습니다. 이 경우 aws:SourceAccount 값과 aws:SourceArn 값의 계정이 동일한 문에서 사용될 때 동일한 계정 ID를 사용해야 합니다.

    • 단일 리소스에 대한 교차 서비스 액세스를 원하는 경우 aws:SourceArn을 사용하세요.

    • 해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우 aws:SourceAccount를 사용하세요.

    신뢰 정책에서는 역할에 액세스하는 리소스의 전체 Amazon 리소스 이름(ARN)이 포함된 aws:SourceArn 전역 조건 컨텍스트 키를 사용해야 합니다.

    다음 AWS CLI 명령은 이 목적으로 rds-s3-integration-role이라는 역할을 생성합니다.

    대상 LinuxmacOS, 또는Unix:

    aws iam create-role \ --role-name rds-s3-integration-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": my_account_ID, "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname" } } } ] }'

    Windows의 경우:

    aws iam create-role ^ --role-name rds-s3-integration-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": my_account_ID, "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname" } } } ] }'

    자세한 내용은 IAM 사용 설명서IAM 사용자에게 권한을 위임하기 위한 역할 생성을 참조하십시오.

  2. 역할이 생성되면 역할의 ARN을 기록하십시오. 이후 단계에 이 ARN이 필요합니다.

  3. 생성한 정책을 생성한 역할에 연결하십시오.

    다음 AWS CLI 명령은 정책을 rds-s3-integration-role이라는 역할에 연결합니다.

    대상 LinuxmacOS, 또는Unix:

    aws iam attach-role-policy \ --policy-arn your-policy-arn \ --role-name rds-s3-integration-role

    Windows의 경우:

    aws iam attach-role-policy ^ --policy-arn your-policy-arn ^ --role-name rds-s3-integration-role

    your-policy-arn을 이전 단계에서 기록한 정책 ARN으로 바꾸세요.

4단계: IAM 역할을 RDS for Oracle DB 인스턴스와 연결하는 방법

Amazon S3 통합 권한을 구성하는 마지막 단계는 IAM 역할을 DB 인스턴스와 연결하는 것입니다. 다음과 같은 요구 사항을 확인합니다.

  • 필수 Amazon S3 권한 정책이 연결된 IAM 역할에 대한 액세스 권한이 있어야 합니다.

  • 한 번에 하나의 IAM 역할만 RDS for Oracle DB 인스턴스에 연결할 수 있습니다.

  • DB 인스턴스는 사용 가능 상태여야 합니다.

IAM 역할을 RDS for Oracle DB 인스턴스와 연결하는 방법
  1. https://console.aws.amazon.com/rds/에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택합니다.

  3. 세부 정보를 표시하고자 하는 RDS for Oracle DB 인스턴스 이름을 선택합니다.

  4. 연결성 및 보안(Connectivity & security) 탭에서 페이지 하단의 IAM 역할 관리(Manage IAM roles) 섹션이 나올 때까지 아래로 스크롤합니다.

  5. IAM 역할을 이 인스턴스에 추가에는 3단계: DB 인스턴스에 대한 IAM 역할 생성 및 정책 연결에서 생성한 역할을 선택합니다.

  6. 기능에서 S3_INTEGRATION을 선택하십시오.

    S3_INTEGRATION 역할 추가
  7. [Add role]을 선택합니다.

다음 AWS CLI 명령은 mydbinstance라는 Oracle DB 인스턴스에 역할을 추가합니다.

대상 LinuxmacOS, 또는Unix:

aws rds add-role-to-db-instance \ --db-instance-identifier mydbinstance \ --feature-name S3_INTEGRATION \ --role-arn your-role-arn

Windows의 경우:

aws rds add-role-to-db-instance ^ --db-instance-identifier mydbinstance ^ --feature-name S3_INTEGRATION ^ --role-arn your-role-arn

your-role-arn을 이전 단계에서 기록한 역할 ARN으로 바꿉니다. S3_INTEGRATION 옵션에 대해 --feature-name을 지정해야 합니다.

Amazon S3 통합 옵션 추가

Amazon RDS for Oracle을 Amazon S3와 통합하려면 DB 인스턴스가 S3_INTEGRATION 옵션을 포함하는 옵션 그룹과 연결되어 있어야 합니다.

Amazon S3 통합을 위한 옵션 그룹을 구성하려면
  1. 새 옵션 그룹을 만들거나 S3_INTEGRATION 옵션을 추가할 수 있는 기존 옵션 그룹을 식별하십시오.

    옵션 그룹의 생성에 대한 자세한 내용은 옵션 그룹 생성 단원을 참조하십시오.

  2. [S3_INTEGRATION] 옵션을 옵션 그룹에 추가합니다.

    옵션 그룹에 옵션을 추가하는 방법에 대한 자세한 내용은 옵션 그룹에 옵션 추가 단원을 참조하십시오.

  3. 새 RDS for Oracle DB 인스턴스를 생성하고 옵션 그룹을 연결하거나, RDS for Oracle DB 인스턴스를 수정하여 옵션 그룹을 연결합니다.

    DB 인스턴스 생성에 대한 자세한 내용은 Amazon RDS DB 인스턴스 생성 단원을 참조하십시오.

    DB 인스턴스 수정에 대한 자세한 내용은 [g70][/g70][g69][/g69] 섹션을 참조하세요.

Amazon S3 통합을 위한 옵션 그룹을 구성하려면
  1. 새 옵션 그룹을 만들거나 S3_INTEGRATION 옵션을 추가할 수 있는 기존 옵션 그룹을 식별하십시오.

    옵션 그룹의 생성에 대한 자세한 내용은 옵션 그룹 생성 단원을 참조하십시오.

  2. [S3_INTEGRATION] 옵션을 옵션 그룹에 추가합니다.

    예를 들어 다음 AWS CLI 명령은 S3_INTEGRATION 옵션을 myoptiongroup이라는 옵션 그룹에 추가합니다.

    대상 LinuxmacOS, 또는Unix:

    aws rds add-option-to-option-group \ --option-group-name myoptiongroup \ --options OptionName=S3_INTEGRATION,OptionVersion=1.0

    Windows의 경우:

    aws rds add-option-to-option-group ^ --option-group-name myoptiongroup ^ --options OptionName=S3_INTEGRATION,OptionVersion=1.0
  3. 새 RDS for Oracle DB 인스턴스를 생성하고 옵션 그룹을 연결하거나, RDS for Oracle DB 인스턴스를 수정하여 옵션 그룹을 연결합니다.

    DB 인스턴스 생성에 대한 자세한 내용은 Amazon RDS DB 인스턴스 생성 섹션을 참조하세요.

    RDS for Oracle DB 인스턴스 수정에 대한 자세한 내용은 Amazon RDS DB 인스턴스 수정 섹션을 참조하세요.

Amazon RDS for Oracle와 Amazon S3 버킷 사이의 파일 전송

RDS for Oracle DB 인스턴스와 Amazon S3 버킷 간에 파일을 전송하려면 Amazon RDS 패키지 rdsadmin_s3_tasks를 사용하면 됩니다. 파일을 업로드할 때 GZIP으로 파일을 압축하고 다운로드 시 압축을 풀 수 있습니다.

파일 전송 요구 사항 및 제한 사항

DB 인스턴스와 Amazon S3 버킷 사이에서 파일을 전송하기 전에 다음에 유의하세요.

  • rdsadmin_s3_tasks 패키지는 단일 디렉터리에서 파일을 전송합니다. 전송에 하위 디렉터리를 포함시킬 수 없습니다.

  • Amazon S3 버킷의 최대 객체 크기는 5TB입니다.

  • rdsadmin_s3_tasks에서 생성한 작업은 비동기적으로 실행됩니다.

  • Data Pump 디렉터리(예: DATA_PUMP_DIR 또는 사용자 생성 디렉터리)에서 파일을 업로드할 수 있습니다. Oracle 백그라운드 프로세스에서 사용하는 디렉터리(예: adump, bdump, 또는 trace 디렉터리)에서는 파일을 업로드할 수 없습니다.

  • 다운로드 제한은 download_from_s3의 프로시저 직접 호출당 파일 2,000개입니다. Amazon S3에서 2,000개 이상의 파일을 다운로드해야 하는 경우 프로시저 호출당 2,000개 이하의 파일로 다운로드를 개별 작업으로 분할하세요.

  • 다운로드 폴더에 파일이 있고 같은 이름의 파일을 다운로드하려고 하면 download_from_s3를 통해 다운로드를 건너뜁니다. 다운로드 디렉터리에서 파일을 제거하려면 PL/SQL 프로시저 UTL_FILE.FREMOVE를 사용하세요.

RDS for Oracle DB 인스턴스에서 Amazon S3 버킷으로 파일 업로드

DB 인스턴스에서 Amazon S3 버킷으로 파일을 업로드하려면 절차 rdsadmin.rdsadmin_s3_tasks.upload_to_s3를 참조하면 됩니다. 예를 들어 Oracle Recovery Manager(RMAN) 백업 파일 또는 Oracle Data Pump 파일을 업로드할 수 있습니다. 객체 작업에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서를 참조하세요. RMAN 백업 수행에 대한 자세한 내용은 Oracle DB 인스턴스에 대한 공통 RMAN 작업 수행 단원을 참조하세요.

rdsadmin.rdsadmin_s3_tasks.upload_to_s3 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

p_bucket_name

VARCHAR2

필수

파일을 업로드할 Amazon S3 버킷의 이름입니다.

p_directory_name

VARCHAR2

필수

파일을 업로드할 Oracle 디렉터리 객체의 이름입니다. 이 디렉터리는 사용자가 생성한 디렉터리 객체 또는 Data Pump 디렉터리(예: DATA_PUMP_DIR)일 수 있습니다. 백그라운드 프로세스에서 사용하는 디렉터리(예: adump, bdump, 또는 trace 디렉터리)에서는 파일을 업로드할 수 없습니다.

참고

지정된 디렉터리의 파일만 업로드할 수 있습니다. 지정된 디렉터리의 하위 디렉터리에서는 파일을 업로드할 수 없습니다.

p_s3_prefix

VARCHAR2

필수

파일이 업로드되는 Amazon S3 파일 이름 접두사입니다. 빈 접두사는 모든 파일을 지정된 Amazon S3 버킷의 최상위 레벨에 업로드하며, 접두사를 파일 이름에 추가하지 않습니다.

예를 들어 접두사가 folder_1/oradb이면 파일이 folder_1에 업로드됩니다. 이 경우 oradb 접두사가 각 파일에 추가됩니다.

p_prefix

VARCHAR2

필수

업로드되기 위해 파일 이름과 일치해야 하는 파일 이름 접두사입니다. 빈 접두사는 지정된 디렉터리의 모든 파일을 업로드합니다.

p_compression_level

NUMBER

0

선택 사항

GZIP 압축 수준입니다. 사용할 수 있는 값은 0~9입니다.

  • 0 - 압축 없음

  • 1 - 가장 빠른 압축

  • 9 - 최고 수준의 압축

p_bucket_owner_full_control

VARCHAR2

선택 사항

버킷에 대한 액세스 제어 설정입니다. 유일하게 유효한 값은 null과 FULL_CONTROL입니다. 이 설정은 한 계정(계정 A)의 파일을 다른 계정(계정 B)에서 소유한 버킷으로 업로드하고 계정 B가 해당 파일을 완전히 제어해야 하는 경우에만 필요합니다.

rdsadmin.rdsadmin_s3_tasks.upload_to_s3 프로시저의 반환 값이 작업 ID입니다.

다음 예제에서는 DATA_PUMP_DIR 디렉터리에 있는 모든 파일을 mys3bucket이라는 이름의 Amazon S3 버킷에 업로드합니다. 파일이 압축되지 않습니다.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'mys3bucket', p_prefix => '', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

다음 예제에서는 db 디렉터리에 있는 DATA_PUMP_DIR 접두사의 모든 파일을 mys3bucket이라는 이름의 Amazon S3 버킷에 업로드합니다. Amazon RDS는 파일에 최고 수준의 GZIP 압축을 적용합니다.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'mys3bucket', p_prefix => 'db', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR', p_compression_level => 9) AS TASK_ID FROM DUAL;

다음 예제에서는 DATA_PUMP_DIR 디렉터리에 있는 모든 파일을 mys3bucket이라는 이름의 Amazon S3 버킷에 업로드합니다. 파일은 dbfiles 폴더에 업로드됩니다. 이 예제에서 GZIP 압축 수준은 가장 빠른 압축 수준인 1입니다.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'mys3bucket', p_prefix => '', p_s3_prefix => 'dbfiles/', p_directory_name => 'DATA_PUMP_DIR', p_compression_level => 1) AS TASK_ID FROM DUAL;

다음 예제에서는 DATA_PUMP_DIR 디렉터리에 있는 모든 파일을 mys3bucket이라는 이름의 Amazon S3 버킷에 업로드합니다. 파일은 dbfiles 폴더에 업로드되고 ora는 각 파일 이름의 시작 부분에 추가됩니다. 압축이 적용되지 않습니다.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'mys3bucket', p_prefix => '', p_s3_prefix => 'dbfiles/ora', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

다음 예제에서는 명령이 계정 A에서 실행되지만, 계정 B에서 버킷 콘텐츠를 완전히 제어해야 한다고 가정합니다. 명령 rdsadmin_s3_tasks.upload_to_s3DATA_PUMP_DIR 디렉터리의 모든 파일을 s3bucketOwnedByAccountB라는 이름의 버킷으로 전송합니다. 액세스 제어가 FULL_CONTROL로 설정되어 계정 B가 버킷의 파일에 액세스할 수 있습니다. GZIP 압축 수준은 속도 및 파일 크기가 균형을 이루는 6입니다.

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 's3bucketOwnedByAccountB', p_prefix => '', p_s3_prefix => '', p_directory_name => 'DATA_PUMP_DIR', p_bucket_owner_full_control => 'FULL_CONTROL', p_compression_level => 6) AS TASK_ID FROM DUAL;

각 예에서, SELECT 문은 VARCHAR2 데이터 형식으로 작업 ID를 반환합니다.

작업의 출력 파일을 표시하여 결과를 볼 수 있습니다.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));

task-id를 절차에서 반환된 작업 ID로 대체합니다.

참고

작업은 비동기식으로 실행됩니다.

Amazon S3 버킷의 파일을 Oracle DB 인스턴스로 다운로드

RDS for Oracle 인스턴스로 Amazon S3 버킷의 파일을 다운로드하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_s3_tasks.download_from_s3를 사용하십시오.

download_from_s3 프로시저에는 다음과 같은 파라미터가 있습니다.

파라미터 이름 데이터 형식 기본값 필수 설명

p_bucket_name

VARCHAR2

필수

파일을 다운로드할 수 있는 Amazon S3 버킷의 이름입니다.

p_directory_name

VARCHAR2

필수

파일을 다운로드할 Oracle 디렉터리 객체의 이름입니다. 이 디렉터리는 사용자가 생성한 디렉터리 객체 또는 Data Pump 디렉터리(예: DATA_PUMP_DIR)일 수 있습니다.

p_error_on_zero_downloads

VARCHAR2

FALSE

선택 사항

Amazon S3 버킷에 접두사와 일치하는 객체가 없을 때 작업에서 오류가 발생하는지 여부를 결정하는 플래그입니다. 이 파라미터가 설정되지 않았거나 FALSE(기본값)로 설정된 경우 작업은 객체를 찾을 수 없다는 메시지를 인쇄하지만 예외를 발생시키거나 실패하지는 않습니다. 이 파라미터가 TRUE이면 작업에서 예외가 발생하고 실패합니다.

일치 테스트에 실패할 수 있는 접두사 사양의 예로는 ' import/test9.log'와 같은 접두사의 공백과 test9.logtest9.LOG와 같은 대/소문자 불일치가 있습니다.

p_s3_prefix

VARCHAR2

필수

다운로드되기 위해 파일 이름과 일치해야 하는 파일 이름 접두사입니다. 빈 접두사는 지정된 Amazon S3 버킷에 모든 상위 수준 파일을 다운로드하고, 버킷의 폴더에는 파일을 다운로드하지 않습니다.

이 프로시저는 접두사와 일치하는 첫 레벨 폴더에서만 Amazon S3개 객체를 다운로드합니다. 지정된 접두사와 일치하는 중첩된 디렉터리 구조는 다운로드되지 않습니다.

예를 들어 Amazon S3 버킷에 folder_1/folder_2/folder_3 폴더 구조가 있다고 가정합니다. 'folder_1/folder_2/' 접두사를 지정합니다. 이 경우 folder_2의 파일만 다운로드되고 folder_1 또는 folder_3의 파일은 다운로드되지 않습니다.

대신에 'folder_1/folder_2' 접두사를 지정하는 경우에는 folder_1 접두사와 일치하는 'folder_2'의 모든 파일들이 다운로드되고, folder_2의 파일들은 다운로드되지 않습니다.

p_decompression_format

VARCHAR2

선택 사항

압축 형식입니다. 유효 값은 압축 해제 미적용 시 NONE, 압축 해제 적용 시 GZIP입니다.

rdsadmin.rdsadmin_s3_tasks.download_from_s3 프로시저의 반환 값이 작업 ID입니다.

다음 예에서는 mys3bucket라는 Amazon S3 버킷의 모든 파일을 DATA_PUMP_DIR 디렉터리로 다운로드합니다. 파일은 압축되지 않으므로 압축 해제가 적용되지 않습니다.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'mys3bucket', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

다음 예제에서는 db이라는 Amazon S3 버킷에서 접두사가 mys3bucket인 모든 파일을 DATA_PUMP_DIR 디렉터리로 다운로드합니다. 파일이 GZIP으로 압축되므로 압축 해제가 적용됩니다. 파라미터 p_error_on_zero_downloads는 접두사 오류 검사를 켜므로 접두사가 버킷의 파일과 일치하지 않으면 작업이 예외를 발생시키고 실패합니다.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'mys3bucket', p_s3_prefix => 'db', p_directory_name => 'DATA_PUMP_DIR', p_decompression_format => 'GZIP', p_error_on_zero_downloads => 'TRUE') AS TASK_ID FROM DUAL;

다음 예제에서는 myfolder/이라는 Amazon S3 버킷의 mys3bucket 폴더에 있는 모든 파일을 DATA_PUMP_DIR 디렉터리로 다운로드합니다. p_s3_prefix 파라미터를 사용하여 Amazon S3 폴더를 지정합니다. 업로드된 파일은 GZIP으로 압축되지만, 다운로드 중에는 압축이 풀리지 않습니다.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'mys3bucket', p_s3_prefix => 'myfolder/', p_directory_name => 'DATA_PUMP_DIR', p_decompression_format => 'NONE') AS TASK_ID FROM DUAL;

다음 예에서는 mys3bucket이라는 Amazon S3 버킷의 mydumpfile.dmp 파일을 DATA_PUMP_DIR 디렉터리로 다운로드합니다. 압축 해제가 적용되지 않습니다.

SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3( p_bucket_name => 'mys3bucket', p_s3_prefix => 'mydumpfile.dmp', p_directory_name => 'DATA_PUMP_DIR') AS TASK_ID FROM DUAL;

각 예에서, SELECT 문은 VARCHAR2 데이터 형식으로 작업 ID를 반환합니다.

작업의 출력 파일을 표시하여 결과를 볼 수 있습니다.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));

task-id를 절차에서 반환된 작업 ID로 대체합니다.

참고

작업은 비동기식으로 실행됩니다.

UTL_FILE.FREMOVE Oracle 프로시저를 사용하여 디렉터리에서 파일을 제거할 수 있습니다. 자세한 내용은 Oracle 설명서의 FREMOVE 프로시저를 참조하십시오.

파일 전송 상태 모니터링

파일 전송 작업은 Amazon RDS 이벤트가 시작되고 완료될 때 이벤트를 게시합니다. 이벤트 메시지에 파일 전송을 위한 작업 ID가 포함됩니다. 이벤트 보기에 대한 자세한 내용은 Amazon RDS 이벤트 보기 단원을 참조하십시오.

진행 중인 작업의 상태를 bdump 파일에서 볼 수 있습니다. 이 bdump 파일은 /rdsdbdata/log/trace 디렉터리에 위치합니다. 각 bdump 파일 이름은 다음 형식으로 되어 있습니다.

dbtask-task-id.log

task-id를 모니터링하고자 하는 작업의 ID로 바꾸십시오.

참고

작업은 비동기식으로 실행됩니다.

rdsadmin.rds_file_util.read_text_file 저장 프로시저를 사용하여 bdump 파일의 내용을 볼 수 있습니다. 예를 들어, 다음 쿼리는 dbtask-1234567890123-1234.log bdump 파일의 내용을 반환합니다.

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1234567890123-1234.log'));

다음 샘플에서는 전송 실패에 대한 로그 파일을 보여줍니다.

TASK_ID -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1234567890123-1234 TEXT -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2023-04-17 18:21:33.993 UTC [INFO ] File #1: Uploading the file /rdsdbdata/datapump/A123B4CDEF567890G1234567890H1234/sample.dmp to Amazon S3 with bucket name mys3bucket and key sample.dmp. 2023-04-17 18:21:34.188 UTC [ERROR] RDS doesn't have permission to write to Amazon S3 bucket name mys3bucket and key sample.dmp. 2023-04-17 18:21:34.189 UTC [INFO ] The task failed.

Amazon S3 통합 문제 해결

문제 해결 팁을 보려면 AWS re:Post 문서인 Amazon RDS for Oracle을 Amazon S3와 통합할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?를 참조하세요.

Amazon S3 통합 옵션 제거

DB 인스턴스에서 Amazon S3 통합 옵션을 제거할 수 있습니다.

DB 인스턴스에서 Amazon S3 통합 옵션을 제거하려면 다음 중 하나를 수행합니다.

  • 여러 DB 인스턴스에서 Amazon S3 통합 옵션을 제거하려면 DB 인스턴스가 속한 옵션 그룹에서 해당 S3_INTEGRATION 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 자세한 내용은 옵션 그룹에서 옵션 제거을 참조하세요.

  • 단일 DB 인스턴스에서 Amazon S3 통합 옵션을 제거하려면 인스턴스를 수정하고 S3_INTEGRATION 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 기본(비어 있음) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 자세한 내용은 Amazon RDS DB 인스턴스 수정을 참조하세요.