

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á.

# Usar criptografia do lado do servidor com filas do Amazon SQS
<a name="sqs-java-configure-sse"></a>

Use o AWS SDK para Java para adicionar criptografia do lado do servidor (SSE) a uma fila do Amazon SQS. Cada fila usa uma chave do KMS AWS Key Management Service (AWS KMS) para gerar as chaves de criptografia dos dados. Este exemplo usa a chave do KMS gerenciada pela AWS para o Amazon SQS.

Para obter mais informações sobre como usar a SSE e a função da chave do KMS, consulte [Criptografia em repouso no Amazon SQS](sqs-server-side-encryption.md). 

## Adicionar SSE a uma fila existente
<a name="sqs-java-configure-sse-existing-queue"></a>

Para habilitar a criptografia no lado do servidor para uma fila existente, use o método `[SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)` para definir o atributo `KmsMasterKeyId`.

O exemplo de código a seguir define a AWS KMS key como a chave AWS gerenciada do KMS para o Amazon SQS. O exemplo também define o [período de reutilização de AWS KMS key](sqs-server-side-encryption.md#sqs-sse-key-terms) como 140 segundos.

 Antes de executar o código de exemplo, verifique se você definiu suas AWS credenciais. Para obter mais informações, consulte [Configurar AWS credenciais e região para desenvolvimento](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) no *Guia do AWS SDK for Java 2.x desenvolvedor*. 

```
    public static void addEncryption(String queueName, String kmsMasterKeyAlias) {
        SqsClient sqsClient = SqsClient.create();

        GetQueueUrlRequest urlRequest = GetQueueUrlRequest.builder()
                .queueName(queueName)
                .build();

        GetQueueUrlResponse getQueueUrlResponse;
        try {
            getQueueUrlResponse = sqsClient.getQueueUrl(urlRequest);
        } catch (QueueDoesNotExistException e) {
            LOGGER.error(e.getMessage(), e);
            throw new RuntimeException(e);
        }
        String queueUrl = getQueueUrlResponse.queueUrl();


        Map<QueueAttributeName, String> attributes = Map.of(
                QueueAttributeName.KMS_MASTER_KEY_ID, kmsMasterKeyAlias,
                QueueAttributeName.KMS_DATA_KEY_REUSE_PERIOD_SECONDS, "140" // Set the data key reuse period to 140 seconds.
        );                                                                  // This is how long SQS can reuse the data key before requesting a new one from KMS.

        SetQueueAttributesRequest attRequest = SetQueueAttributesRequest.builder()
                .queueUrl(queueUrl)
                .attributes(attributes)
                .build();
        try {
            sqsClient.setQueueAttributes(attRequest);
            LOGGER.info("The attributes have been applied to {}", queueName);
        } catch (InvalidAttributeNameException | InvalidAttributeValueException e) {
            LOGGER.error(e.getMessage(), e);
            throw new RuntimeException(e);
        } finally {
            sqsClient.close();
        }
    }
```

## Desabilitar a SSE para uma fila
<a name="sqs-java-disable-sse"></a>

Para desabilitar a criptografia no lado do servidor para uma fila existente, defina o atributo `KmsMasterKeyId` como uma string vazia usando o método `SetQueueAttributes`.

**Importante**  
`null` não é um valor válido para `KmsMasterKeyId`.

## Criar uma fila com SSE
<a name="sqs-java-configure-sse-create-queue"></a>

Para habilitar a SSE ao criar a fila, adicione o atributo `KmsMasterKeyId` ao método da API `[CreateQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_CreateQueue.html)`.

O exemplo a seguir cria uma fila nova com a SSE habilitada. A fila usa a chave do KMS gerenciada pela AWS para o Amazon SQS. O exemplo também define o [período de reutilização de AWS KMS key](sqs-server-side-encryption.md#sqs-sse-key-terms) como 160 segundos.

 Antes de executar o código de exemplo, verifique se você definiu suas AWS credenciais. Para obter mais informações, consulte [Configurar AWS credenciais e região para desenvolvimento](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials) no *Guia do AWS SDK for Java 2.x desenvolvedor*. 

```
// Create an SqsClient for the specified Region.
SqsClient sqsClient = SqsClient.builder().region(Region.US_WEST_1).build();

// Create a hashmap for the attributes. Add the key alias and reuse period to the hashmap.
HashMap<QueueAttributeName, String> attributes = new HashMap<QueueAttributeName, String>();
final String kmsMasterKeyAlias = "alias/aws/sqs";  // the alias of the AWS managed KMS key for Amazon SQS.
attributes.put(QueueAttributeName.KMS_MASTER_KEY_ID, kmsMasterKeyAlias);
attributes.put(QueueAttributeName.KMS_DATA_KEY_REUSE_PERIOD_SECONDS, "140");				

// Add the attributes to the CreateQueueRequest.
CreateQueueRequest createQueueRequest =
                CreateQueueRequest.builder()
                        .queueName(queueName)
                        .attributes(attributes)
                        .build();
sqsClient.createQueue(createQueueRequest);
```

## Recuperar atributos de SSE
<a name="sqs-java-get-sse-attributes"></a>

Para obter informações sobre como recuperar atributos da fila, consulte [Exemplos](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html#API_GetQueueAttributes_Examples) na *Referência da API do Amazon Simple Queue Service*.

Para recuperar o ID da chave do KMS ou o período de reutilização da chave de dados de uma fila específica, execute o método `[GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html)` e recupere os valores `KmsMasterKeyId` e `KmsDataKeyReusePeriodSeconds`.