使用服务器端加密 (SSE) - Amazon Simple Queue Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用服务器端加密 (SSE)

您可以使用Amazon SDK for Java将服务器端加密 (SSE) 添加到 Amazon SQS 队列。每个队列都使用Amazon Key Management Service(Amazon KMS) 客户主密钥 (CMK) 以生成数据加密密钥。此示例使用AmazonAmazon SQS 的托管 CMK。有关使用 SSE 和 CMK 角色的更多信息,请参阅静态加密.

将 SSE 添加到现有队列

要为现有队列启用服务器端加密,请使用SetQueueAttributes方法设置KmsMasterKeyId属性。

以下代码示例将主密钥设置为AmazonAmazon SQS 的托管 CMK。该示例还设置主密钥重用周期设置为 140 秒。

运行示例代码之前,请确保您已设置Amazon凭证。有关更多信息,请参阅 。设置Amazon凭证和区域促进发展中的Amazon SDK for Java 2.x开发人员指南.

// Create an SqsClient for the specified Region. SqsClient sqsClient = SqsClient.builder().region(Region.US_WEST_1).build(); // Get the URL of your queue. String myQueueName = "my queue"; GetQueueUrlResponse getQueueUrlResponse = sqsClient.getQueueUrl(GetQueueUrlRequest.builder().queueName(myQueueName).build()); String queueUrl = getQueueUrlResponse.queueUrl(); // 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 Amazon managed CMK for Amazon SQS. attributes.put(QueueAttributeName.KMS_MASTER_KEY_ID, kmsMasterKeyAlias); attributes.put(QueueAttributeName.KMS_DATA_KEY_REUSE_PERIOD_SECONDS, "140"); // Create the SetQueueAttributesRequest. SetQueueAttributesRequest set_attrs_request = SetQueueAttributesRequest.builder() .queueUrl(queueUrl) .attributes(attributes) .build(); sqsClient.setQueueAttributes(set_attrs_request);

为队列禁用 SSE

要为现有队列禁用服务器端加密,请将KmsMasterKeyId属性设置为空字符串SetQueueAttributes方法。

重要

null 对于 KmsMasterKeyId 是无效值。

使用 SSE 创建队列

要在创建队列时启用 SSE,请将KmsMasterKeyId属性设置为CreateQueueAPI 方法。

以下示例创建启用 SSE 的新队列。队列使用AmazonAmazon SQS 的托管 CMK。该示例还设置主密钥重用周期设置为 160 秒。

运行示例代码之前,请确保您已设置Amazon凭证。有关更多信息,请参阅 。设置Amazon凭证和区域促进发展中的Amazon SDK for Java 2.x开发人员指南.

// 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 Amazon managed CMK 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);

检索 SSE 属性

有关检索队列属性的信息,请参阅示例中的Amazon Simple Queue Service API 参考.

要检索特定队列的 CMK ID 或数据密钥重用期,请运行GetQueueAttributes方法并检索KmsMasterKeyIdKmsDataKeyReusePeriodSeconds有效值。