

# Amazon RDS for Db2 DB 인스턴스와 Amazon S3 통합
<a name="db2-s3-integration"></a>

Amazon RDS 저장 프로시저를 사용하는 Amazon Simple Storage Service(S3) 버킷과 Amazon RDS for Db2 DB 인스턴스 간에 파일을 전송할 수 있습니다. 자세한 내용은 [Amazon RDS for Db2 저장 프로시저 참조](db2-stored-procedures.md) 섹션을 참조하세요.

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

RDS for Db2를 Amazon S3와 통합하려면 DB 인스턴스가 RDS for Db2가 있는 Amazon S3 버킷에 액세스할 수 있어야 합니다. 현재 S3 버킷이 없는 경우에는 [버킷을 생성하세요](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket-overview.html).

**Topics**
+ [1단계: IAM 정책 생성](#db2-creating-iam-policy)
+ [2단계: IAM 역할 생성 및 IAM 정책 연결](#db2-creating-iam-role)
+ [3단계: RDS for Db2 DB 인스턴스에 IAM 역할 추가](#db2-adding-iam-role)

## 1단계: IAM 정책 생성
<a name="db2-creating-iam-policy"></a>

이 단계에서는 Amazon S3 버킷에서 RDS DB 인스턴스로 파일을 전송하는 데 필요한 권한을 가진 AWS Identity and Access Management(IAM) 정책을 생성합니다. 이 단계에서는 이미 S3 버킷을 생성한 것으로 가정합니다. 자세한 내용은 *Amazon S3 사용자 안내서*의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)을 참조하세요.

정책을 생성하기 전에 다음 정보를 기록해 둡니다.
+ 버킷의 Amazon 리소스 이름(ARN)
+ 버킷에서 SSE-KMS 또는 SSE-S3 암호화를 사용하는 경우 AWS Key Management Service(AWS KMS) 키에 대한 ARN.

생성하는 IAM 정책에는 다음 정보가 포함되어야 합니다. *\$1amzn-s3-demo-bucket\$1*을 S3 버킷 이름으로 바꿉니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3BucketAccess",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt",
                "s3:PutObject",
                "s3:GetObject",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:GetObjectVersion",
                "s3:ListMultipartUploadParts",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::${amzn-s3-demo-bucket}/*",
                "arn:aws:s3:::${amzn-s3-demo-bucket}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

AWS Management Console 또는 AWS Command Line Interface(AWS CLI)를 사용하여 IAM 정책을 생성할 수 있습니다.

### 콘솔
<a name="creating-iam-policy-console"></a>

**Amazon S3 버킷에 Amazon RDS 액세스를 허용하는 IAM 정책을 생성하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **정책**을 선택합니다.

1. **정책 생성**을 선택한 다음 **JSON**을 선택합니다.

1. 서비스별 작업을 추가합니다. Amazon S3 버킷에서 Amazon RDS로 파일을 전송하려면 버킷 권한 및 객체 권한을 선택해야 합니다.

1. **리소스(Resources)**를 확장합니다. 버킷과 객체 리소스를 지정해야 합니다.

1. **다음**을 선택합니다.

1. **정책 이름**에 이 정책의 이름을 입력합니다.

1. (선택 사항) **설명**에 이 정책에 대한 설명을 입력합니다.

1. **정책 생성**을 선택합니다.

### AWS CLI
<a name="creating-iam-policy-cli"></a>

**Amazon S3 버킷에 Amazon RDS 액세스를 허용하는 IAM 정책을 생성하려면**

1.  다음 JSON 정책 문서가 포함된 JSON 파일을 생성합니다. *\$1amzn-s3-demo-bucket\$1*을 S3 버킷 이름으로 바꿉니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowS3BucketAccess",
               "Effect": "Allow",
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt",
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:AbortMultipartUpload",
                   "s3:ListBucket",
                   "s3:GetObjectVersion",
                   "s3:ListMultipartUploadParts",
                   "s3:GetBucketAcl",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::${amzn-s3-demo-bucket}/*",
                   "arn:aws:s3:::${amzn-s3-demo-bucket}"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListAllMyBuckets"
               ],
               "Resource": [
                   "*"
               ]
           }
       ]
   }
   ```

------

1. [https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html) 명령을 실행합니다. 다음 예제에서 *iam\$1policy\$1name* 및 *iam\$1policy\$1file\$1name*을 IAM 정책의 이름과 1단계에서 생성한 JSON 파일의 이름으로 바꿉니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws iam create-policy \
       --policy-name iam_policy_name \
       --policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
             "Action": [
               "kms:GenerateDataKey",
               "kms:Decrypt",
               "s3:PutObject",
               "s3:GetObject",
               "s3:AbortMultipartUpload",
               "s3:ListBucket",
               "s3:DeleteObject",
               "s3:GetObjectVersion",
               "s3:ListMultipartUploadParts"
             ],
             "Resource": [
               "arn:aws:s3:::s3_bucket_name/*",
               "arn:aws:s3:::s3_bucket_name"
             ]
           }
         ]
       }'
   ```

   Windows의 경우:

   ```
   aws iam create-policy ^
       --policy-name iam_policy_name ^
       --policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
               "Action": [
                 "s3:PutObject",
                 "s3:GetObject",
                 "s3:AbortMultipartUpload",
                 "s3:ListBucket",
                 "s3:DeleteObject",
                 "s3:GetObjectVersion",
                 "s3:ListMultipartUploadParts"
               ],
               "Resource": [
                 "arn:aws:s3:::s3_bucket_name/*",
                 "arn:aws:s3:::s3_bucket_name"
               ]
           }
         ]
       }'
   ```

1. 정책이 생성되면 정책의 ARN을 기록해 둡니다. [2단계: IAM 역할 생성 및 IAM 정책 연결](#db2-creating-iam-role)에 대한 ARN이 필요합니다.

IAM 정책 생성에 대한 자세한 내용은 IAM 사용 설명서의 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.

## 2단계: IAM 역할 생성 및 IAM 정책 연결
<a name="db2-creating-iam-role"></a>

이 단계에서는 [1단계: IAM 정책 생성](#db2-creating-iam-policy)에서 IAM 정책을 생성했다고 가정합니다. 이 단계에서는 RDS for Db2 DB 인스턴스에 대한 IAM 역할을 만든 다음 역할에 IAM 정책을 연결합니다.

AWS Management Console 또는 AWS CLI를 사용하여 DB 인스턴스에 대한 IAM 역할을 만들 수 있습니다.

### 콘솔
<a name="creating-iam-role-console"></a>

**IAM 역할을 생성하여 여기에 IAM 정책을 연결하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

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

1. **역할 생성(Create role)**을 선택합니다.

1. **신뢰할 수 있는 엔터티 유형**에 **AWS 서비스**를 선택합니다.

1. **서비스 또는 사용 사례**의 경우 **RDS**를 선택한 다음 **RDS ****– ****데이터베이스에 역할 추가**를 선택합니다.

1. **다음**을 선택합니다.

1. **권한 정책**의 경우 생성한 IAM 정책의 이름을 검색하여 선택합니다.

1. **다음**을 선택합니다.

1. **역할 이름(Role name)**에 역할 이름을 입력합니다.

1. (선택 사항)**설명**에 새 역할에 대한 설명을 입력합니다.

1. **역할 생성**을 선택합니다.

### AWS CLI
<a name="creating-iam-role-cli"></a>

**IAM 역할을 생성하여 여기에 IAM 정책을 연결하려면**

1. 다음 JSON 정책 문서가 포함된 JSON 파일을 생성합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rds.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 명령을 실행합니다. 다음 예제에서 *iam\$1role\$1name* 및 *iam\$1assume\$1role\$1policy\$1file\$1name*을 IAM 역할의 이름과 1단계에서 생성한 JSON 파일의 이름으로 바꿉니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws iam create-role \
       --role-name iam_role_name \
       --assume-role-policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": "rds.amazonaws.com"
             },
             "Action": "sts:AssumeRole"
           }
         ]
       }'
   ```

   Windows의 경우:

   ```
   aws iam create-role ^
       --role-name iam_role_name ^
       --assume-role-policy-document '{
         "Version": "2012-10-17"		 	 	 		 	 	 		 	 	 ,
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": "rds.amazonaws.com"
             },
             "Action": "sts:AssumeRole"
           }
         ]
       }'
   ```

1. 역할이 생성되면 역할의 ARN을 기록하십시오. [3단계: RDS for Db2 DB 인스턴스에 IAM 역할 추가](#db2-adding-iam-role)에 대한 ARN이 필요합니다.

1. [https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html) 명령을 실행합니다. 다음 예제에서 *iam\$1policy\$1arn*을 [1단계: IAM 정책 생성](#db2-creating-iam-policy)에서 생성한 IAM 정책의 ARN으로 대체합니다. *iam\$1role\$1name*을 방금 생성한 IAM 역할 이름으로 바꿉니다.

   대상 LinuxmacOS, 또는Unix:

   ```
   aws iam attach-role-policy \
      --policy-arn iam_policy_arn \
      --role-name iam_role_name
   ```

   Windows의 경우:

   ```
   aws iam attach-role-policy ^
      --policy-arn iam_policy_arn ^
      --role-name iam_role_name
   ```

자세한 내용은 *IAM 사용 설명서*의 [IAM 사용자에게 권한을 위임하기 위한 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)을 참조하십시오.

## 3단계: RDS for Db2 DB 인스턴스에 IAM 역할 추가
<a name="db2-adding-iam-role"></a>

이 단계에서는 IAM 역할을 RDS for Db2 DB 인스턴스에 추가합니다. 다음과 같은 요구 사항을 확인합니다.
+ 필수 Amazon S3 권한 정책이 연결된 IAM 역할에 대한 액세스 권한이 있어야 합니다.
+ 한 번에 하나의 IAM 역할만 RDS for Db2 DB 인스턴스에 연결할 수 있습니다.
+ RDS for Db2 DB 인스턴스는 **사용 가능** 상태여야 합니다.

AWS Management Console 또는 AWS CLI를 사용하여 DB 인스턴스에 IAM 역할을 추가할 수 있습니다.

### 콘솔
<a name="db2-adding-iam-role-console"></a>

**IAM 역할을 RDS for Db2 DB 인스턴스에 추가하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1. RDS for Db2 DB 인스턴스 이름을 선택합니다.

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

1. **IAM 역할을 이 인스턴스에 추가**에는 [2단계: IAM 역할 생성 및 IAM 정책 연결](#db2-creating-iam-role)에서 생성한 역할을 선택합니다.

1. **기능**에서 **S3\$1INTEGRATION**을 선택하십시오.

1. [**Add role**]을 선택합니다.  
![\[S3_INTEGRATION 기능이 DB 인스턴스의 IAM 역할에 추가되었습니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/db2-s3-integration-role.png)

### AWS CLI
<a name="db2-adding-iam-role-cli"></a>

RDS for Db2 DB 인스턴스에 IAM 역할을 추가하려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/add-role-to-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/add-role-to-db-instance.html) 명령을 실행합니다. 다음 예제에서 *region*, *db\$1instance\$1name*, *iam\$1role\$1arn*을 DB 인스턴스가 있는 AWS 리전의 이름, DB 인스턴스 이름, [2단계: IAM 역할 생성 및 IAM 정책 연결](#db2-creating-iam-role)에서 생성한 IAM 역할의 ARN으로 바꿉니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds add-role-to-db-instance \
    --region $region \
    --db-instance-identifier $db_instance_name \
    --feature-name S3_INTEGRATION \
    --role-arn $iam_role_arn \
```

Windows의 경우:

```
aws rds add-role-to-db-instance ^
    --region $region \
    --db-instance-identifier db_instance_name ^
    --feature-name S3_INTEGRATION ^
    --role-arn iam_role_arn ^
```

RDS for Db2 DB 인스턴스에 역할이 성공적으로 추가되었는지 확인하려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령을 실행합니다. 다음 예제에서 *db\$1instance\$1name*을 DB 인스턴스 이름으로 바꿉니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds describe-db-instances \
    --filters "Name=db-instance-id,Values=db_instance_name" \
    --query 'DBInstances[].AssociatedRoles'
```

Windows의 경우:

```
aws rds describe-db-instances ^
    --filters "Name=db-instance-id,Values=db_instance_name" ^
    --query 'DBInstances[].AssociatedRoles'
```

다음 예제와 비슷한 출력이 생성됩니다.

```
[
    [
        {
            "RoleArn": "arn:aws:iam::0123456789012:role/rds-db2-s3-role",
            "FeatureName": "S3_INTEGRATION",
            "Status": "ACTIVE"
        }
    ]
]
```