

# Integrar uma instância de banco de dados do Amazon RDS para Db2 ao Amazon S3
<a name="db2-s3-integration"></a>

É possível transferir arquivos entre uma instância de banco de dados do Amazon RDS para Db2 e um bucket do Amazon Simple Storage Service (Amazon S3) com os procedimentos armazenados do Amazon RDS. Para obter mais informações, consulte [Referência de procedimentos armazenados do Amazon RDS para Db2](db2-stored-procedures.md).

**nota**  
A instância de banco de dados e o bucket do Amazon S3 devem estar na mesma Região da AWS.

Para que o RDS para Db2 se integre ao Amazon S3, a instância de banco de dados deve ter acesso a um bucket do Amazon S3 no qual se encontra o RDS para Db2. Se você não tiver um bucket do S3, [crie um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket-overview.html).

**Topics**
+ [Etapa 1: criar uma política do IAM](#db2-creating-iam-policy)
+ [Etapa 2: Criar um perfil do IAM e associar a política do IAM](#db2-creating-iam-role)
+ [Etapa 3: Adicionar o perfil do IAM à instância de banco de dados do RDS para Db2](#db2-adding-iam-role)

## Etapa 1: criar uma política do IAM
<a name="db2-creating-iam-policy"></a>

Nesta etapa, crie uma política do AWS Identity and Access Management (IAM) com as permissões necessárias para transferir arquivos do bucket do Amazon S3 para a instância de banco de dados do RDS. Esta etapa pressupõe que você já tenha criado um bucket do S3. Para obter mais informações, consulte [Como criar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) no *Guia do usuário do Amazon S3*.

Antes de criar a política, observe as seguintes informações:
+ Nome do recurso da Amazon (ARN) do bucket.
+ O ARN da chave do AWS Key Management Service (AWS KMS), se o bucket usar criptografia SSE-KMS ou SSE-S3.

A política do IAM que você criar deverá conter as informações a seguir. Substitua *\$1amzn-s3-demo-bucket\$1* pelo nome do seu bucket do 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": [
                "*"
            ]
        }
    ]
}
```

------

É possível criar uma política do IAM usando o Console de gerenciamento da AWS ou a AWS Command Line Interface (AWS CLI). 

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

**Como criar uma política do IAM para permitir acesso do Amazon RDS a um bucket do Amazon S3**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Políticas**.

1. Selecione **Criar política** e, depois, escolha a guia **JSON**.

1. Adicione ações por serviço. Para transferir arquivos de um bucket do Amazon S3 para o Amazon RDS, é necessário selecionar permissões de bucket e permissões de objeto.

1. Ampliar os **Resources (Recursos)**. É necessário especificar os recursos de bucket e objeto.

1. Escolha **Próximo**.

1. Em **Nome da política**, digite um nome para essa política. 

1. (Opcional) Em **Descrição**, digite uma descrição para essa política.

1. Escolha **Criar política**.

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

**Como criar uma política do IAM para permitir acesso do Amazon RDS a um bucket do Amazon S3**

1.  Crie um arquivo JSON que contenha o documento de política JSON abaixo. Substitua *\$1amzn-s3-demo-bucket\$1* pelo nome do seu bucket do 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. Execute o comando [https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html). No exemplo a seguir, substitua *iam\$1policy\$1name* e *iam\$1policy\$1file\$1name* por um nome para sua política do IAM e o nome do arquivo JSON que você criou na Etapa 1. 

   Para Linux, macOS ou 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"
             ]
           }
         ]
       }'
   ```

   Para 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. Depois de criar a política, anote o ARN da política. É necessário ter o ARN do [Etapa 2: Criar um perfil do IAM e associar a política do IAM](#db2-creating-iam-role).

Para ter informações sobre como criar uma política do IAM, consulte [Criação de políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) no Guia do usuário do IAM.

## Etapa 2: Criar um perfil do IAM e associar a política do IAM
<a name="db2-creating-iam-role"></a>

Esta etapa pressupõe que você tenha criado a política do IAM no [Etapa 1: criar uma política do IAM](#db2-creating-iam-policy). Nesta etapa, você vai criar um perfil do IAM para a instância de banco de dados do RDS para Db2 e associar a política ao perfil. 

É possível criar um perfil do IAM para a instância de banco de dados usando o Console de gerenciamento da AWS ou a AWS CLI.

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

**Como criar um perfil do IAM e associar a política do IAM a ele**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Perfis**.

1. Escolha **Criar Perfil**.

1. Em **Tipo de entidade confiável**, selecione **AWS service (Serviço da AWS)**.

1. Para **Serviço ou caso de uso**, selecione **RDS** e, depois, selecione **RDS****: ****Adicionar perfil ao banco de dados**.

1. Escolha **Próximo**.

1. Em **Políticas de permissões**, pesquise e selecione o nome da política do IAM que você criou.

1. Escolha **Próximo**.

1. Em **Role name** (Nome da função), insira um nome.

1. (Opcional) Em **Descrição da função**, insira uma descrição para a nova função.

1. Selecione **Criar perfil**.

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

**Como criar um perfil do IAM e associar a política do IAM a ele**

1. Crie um arquivo JSON que contenha o seguinte documento de política JSON:

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

****  

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

------

1. Execute o comando [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html). No exemplo a seguir, substitua *iam\$1role\$1name* e *iam\$1assume\$1role\$1policy\$1file\$1name* por um nome para seu perfil do IAM e o nome do arquivo JSON que você criou na Etapa 1.

   Para Linux, macOS ou 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"
           }
         ]
       }'
   ```

   Para 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. Depois que a função for criada, observe seu ARN. É necessário ter o ARN do [Etapa 3: Adicionar o perfil do IAM à instância de banco de dados do RDS para Db2](#db2-adding-iam-role).

1. Execute o comando [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). No exemplo a seguir, substitua *iam\$1policy\$1arn* pelo ARN da política do IAM que você criou em [Etapa 1: criar uma política do IAM](#db2-creating-iam-policy). Substitua *iam\$1role\$1name* pelo nome do perfil do IAM que você acabou de criar.

   Para Linux, macOS ou Unix:

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

   Para Windows:

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

Para ter mais informações, consulte [Criar um perfil para delegar permissões a um usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do IAM*.

## Etapa 3: Adicionar o perfil do IAM à instância de banco de dados do RDS para Db2
<a name="db2-adding-iam-role"></a>

Nesta etapa, você vai adicionar o perfil do IAM à instância de banco de dados do RDS para Db2. Observe os seguintes requisitos:
+ Você precisa ter acesso a um perfil do IAM com a política de permissões do Amazon S3 necessária anexada a ele. 
+ Só é possível associar um perfil do IAM à instância de banco de dados do RDS para Db2 por vez.
+ A instância de banco de dados do RDS para Db2 deve estar no estado **Disponível**.

É possível adicionar um perfil do IAM à instância de banco de dados usando o Console de gerenciamento da AWS ou a AWS CLI.

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

**Como adicionar um perfil do IAM à instância de banco de dados do RDS para Db2**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Bancos de dados**.

1. Selecione o nome da instância de banco de dados do RDS para Db2.

1. Na guia **Connectivity & security** (Conectividade e segurança), role para baixo até a seção **Manage IAM roles** (Gerenciar funções do IAM) na parte inferior da página.

1. Em **Adicionar perfis do IAM a essa instância**, selecione o perfil que você criou em [Etapa 2: Criar um perfil do IAM e associar a política do IAM](#db2-creating-iam-role).

1. Em **Feature (Recurso)**, escolha **S3\$1INTEGRATION**.

1. Escolha **Add role (adicionar função)**.  
![\[O recurso S3_INTEGRATION foi adicionado ao perfil do IAM para uma instância de banco de dados.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/db2-s3-integration-role.png)

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

Para adicionar um perfil do IAM à instância de banco de dados do RDS para Db2, execute o comando [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). No exemplo a seguir, substitua *region*, *db\$1instance\$1name* e *iam\$1role\$1arn* pelo nome da Região da AWS onde a instância de banco de dados existe, o nome de sua instância de banco de dados e o ARN do perfil do IAM criado em [Etapa 2: Criar um perfil do IAM e associar a política do IAM](#db2-creating-iam-role). 

Para Linux, macOS ou 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 \
```

Para 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 ^
```

Para confirmar que o perfil foi adicionado com êxito à instância de banco de dados do RDS para Db2, execute o comando [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). No exemplo a seguir, substitua *db\$1instance\$1name* pelo nome da instância de banco de dados. 

Para Linux, macOS ou Unix:

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

Para Windows:

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

O comando gerará uma saída semelhante ao seguinte exemplo:

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