

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Permissões do IAM necessárias para aplicativos de consumo da KCL
<a name="kcl-iam-permissions"></a>

 É necessário adicionar as permissões a seguir para o perfil do IAM ou o usuário associado à aplicação de consumo da KCL. 

 Práticas recomendadas de segurança para AWS ditar o uso de permissões refinadas para controlar o acesso a diferentes recursos. AWS Identity and Access Management (IAM) permite gerenciar usuários e permissões de usuários no AWS. Uma Política do IAM lista explicitamente as ações permitidas e os recursos aos quais as ações são aplicáveis.

A tabela a seguir mostra as permissões mínimas do IAM geralmente necessárias para aplicações de consumo da KCL:


**Permissões do IAM mínimas para aplicações de consumo da KCL**  

| Serviço | Ações | Recursos (ARNs) | Finalidade | 
| --- | --- | --- | --- | 
| Amazon Kinesis Data Streams | `DescribeStream`<br />`DescribeStreamSummary`<br />`RegisterStreamConsumer` | O fluxo de dados do Kinesis a partir do qual sua aplicação da KCL processará os dados.<br />`arn:aws:kinesis:region:account:stream/StreamName` | Antes de tentar ler registros, o consumidor verifica se o fluxo de dados existe, se está ativo e se os fragmentos estão contidos no fluxo de dados.<br />Registra os consumidores em um fragmento. | 
| Amazon Kinesis Data Streams | `GetRecords`<br />`GetShardIterator`<br />`ListShards` | Fluxo de dados do Kinesis a partir do qual sua aplicação da KCL processará os dados.<br />`arn:aws:kinesis:region:account:stream/StreamName` | Lê registros de um fragmento. | 
| Amazon Kinesis Data Streams | `SubscribeToShard`<br />`DescribeStreamConsumer` | Fluxo de dados do Kinesis a partir do qual sua aplicação da KCL processará os dados. Adicione essa ação somente se você usar consumidores de distribuição avançada (EFO).<br />`arn:aws:kinesis:region:account:stream/StreamName/consumer/*` | Assina um fragmento para consumidores de distribuição avançada (EFO). | 
| Amazon DynamoDB | `CreateTable`<br />`DescribeTable`<br />`UpdateTable`<br />`Scan`<br />`GetItem`<br />`PutItem`<br />`UpdateItem`<br />`DeleteItem` | Tabela de concessão (tabela de metadados no DynamoDB criada pela KCL).<br />`arn:aws:dynamodb:region:account:table/KCLApplicationName` | Essas ações são necessárias para que a KCL gerencie a tabela de concessões criada no DynamoDB. | 
| Amazon DynamoDB | `CreateTable`<br />`DescribeTable`<br />`Scan`<br />`GetItem`<br />`PutItem`<br />`UpdateItem`<br />`DeleteItem`<br />`DeleteTable` | Métricas do operador e tabela de estados do coordenador (tabelas de metadados no DynamoDB) criada pela KCL.<br />`arn:aws:dynamodb:region:account:table/KCLApplicationName-WorkerMetricStats`<br />`arn:aws:dynamodb:region:account:table/KCLApplicationName-CoordinatorState` | Essas ações são necessárias para que a KCL gerencie as métricas do operador e as tabelas de metadados do estado do coordenador no DynamoDB. | 
| Amazon DynamoDB | `Query` | Índice secundário global na tabela de concessões.<br />`arn:aws:dynamodb:region:account:table/KCLApplicationName/index/*` | Essa ação é necessária para que a KCL leia o índice secundário global da tabela de concessão criada no DynamoDB. | 
| Amazon CloudWatch | `PutMetricData` | \* | Faça upload de métricas CloudWatch que sejam úteis para monitorar o aplicativo. O asterisco (\*) é usado porque não há nenhum recurso específico CloudWatch no qual a `PutMetricData` ação seja invocada.  | 

**nota**  
Substitua “região”, “conta”StreamName, "” e "KCLApplicationName" nos ARNs por seu próprio Conta da AWS número Região da AWS, nome do stream de dados Kinesis e nome do aplicativo KCL, respectivamente. A KCL 3.x cria mais duas tabelas de metadados no DynamoDB. Para obter detalhes sobre as tabelas de metadados do DynamoDB criadas pela KCL, consulte [Tabelas de metadados do DynamoDB e balanceamento de carga na KCL](kcl-dynamoDB.md). Se você usar as configurações para personalizar os nomes das tabelas de metadados criadas pela KCL, use esses nomes de tabela especificados em vez do nome da aplicação da KCL. 

**nota**  
A `DeleteTable` permissão para as métricas do trabalhador e as tabelas de estado do coordenador é necessária somente se você usar o formato de tabela única. Depois que a migração for concluída, você deverá excluir manualmente as tabelas antigas. A `DeleteTable` permissão permite que você execute essa limpeza. Para obter mais informações, consulte [Formato de tabela única para KCL](kcl-single-table-format.md).

Um exemplo de documento de política para um aplicação de consumo da KCL é mostrado a seguir. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:DescribeStream",
                "kinesis:DescribeStreamSummary",
                "kinesis:RegisterStreamConsumer",
                "kinesis:GetRecords",
                "kinesis:GetShardIterator",
                "kinesis:ListShards"
            ],
            "Resource": "arn:aws:kinesis:{{us-east-1}}:{{123456789012}}:stream/{{STREAM_NAME}}"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kinesis:SubscribeToShard",
                "kinesis:DescribeStreamConsumer"
            ],
            "Resource": "arn:aws:kinesis:{{us-east-1}}:{{123456789012}}:stream/{{STREAM_NAME}}/consumer/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:CreateTable",
                "dynamodb:DescribeTable",
                "dynamodb:UpdateTable",
                "dynamodb:GetItem",
                "dynamodb:UpdateItem",
                "dynamodb:PutItem",
                "dynamodb:DeleteItem",
                "dynamodb:Scan"
            ],
            "Resource": [
            "arn:aws:dynamodb:{{us-east-1}}:{{123456789012}}:table/{{KCL_APPLICATION_NAME}}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:CreateTable",
                "dynamodb:DescribeTable",
                "dynamodb:GetItem",
                "dynamodb:UpdateItem",
                "dynamodb:PutItem",
                "dynamodb:DeleteItem",
                "dynamodb:Scan"
            ],
            "Resource": [
            "arn:aws:dynamodb:{{us-east-1}}:{{123456789012}}:table/{{KCL_APPLICATION_NAME-WorkerMetricStats}}",
    "arn:aws:dynamodb:{{us-east-1}}:{{123456789012}}:table/{{KCL_APPLICATION_NAME-CoordinatorState}}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:Query"
            ],
            "Resource": [
            "arn:aws:dynamodb:{{us-east-1}}:{{123456789012}}:table/{{KCL_APPLICATION_NAME}}/index/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Antes de usar esta política de exemplo, verifique os seguintes itens:
+ Substitua REGION pela sua Região da AWS (por exemplo, us-east-1).
+ Substitua ACCOUNT\_ID pelo seu Conta da AWS ID.
+ Substitua STREAM\_NAME pelo nome do seu fluxo de dados do Kinesis.
+ Substitua CONSUMER\_NAME pelo nome do seu consumidor, normalmente o nome da sua aplicação ao usar a KCL.
+ Substitua KCL\_APPLICATION\_NAME pelo nome da aplicação da KCL.