本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
对 Amazon S3 事件爬网程序使用加密
本节介绍仅对 SQS 或同时对 SQS 和 Amazon S3 使用加密。
仅对 SQS 启用加密
预设情况下,Amazon SQS 会在传输过程中提供加密。要向队列中添加可选的服务器端加密 (SSE),可以在编辑面板中附上客户主密钥 (CMK)。这意味着 SQS 会加密 SQS 服务器上所有客户静态数据。
创建客户主密钥 (CMK)
选择 Key Management Service (KMS)(密钥管理服务 (KMS))> Customer Managed Keys(客户管理的密钥)> Create key(创建密钥)。
按照以下步骤添加您自己的别名和说明。
添加您希望能够使用此密钥的相应 IAM 角色。
在密钥策略中,为“语句”列表添加另一条语句,以便自定义密钥策略可以为 Amazon SNS 提供足够的密钥使用权限。
"Statement": [ { "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" } ]
为队列启用服务器端加密 (SSE)
选择 Amazon SQS > Queues(队列)> sqs_queue_name > Encryption(加密)选项卡。
选择 Edit(编辑),然后向下滚动至 Encryption(加密)下拉列表。
选择 Enabled(已启用)以添加 SSE。
选择先前创建的 CMK,而不是名称为
alias/aws/sqs
的原定设置密钥。添加此密钥后,加密选项卡更新为添加的密钥。
注意
Amazon SQS 会自动删除在队列中已过了最大消息保存期的消息。默认的消息保存期为 4 天。为避免错过事件,请将 SQS 更改MessageRetentionPeriod为最长 14 天。
同时对 SQS 和 Amazon S3 启用加密
为 SQS 启用服务器端加密 (SSE)
按 仅对 SQS 启用加密 中的步骤操作。
在 CMK 设置的最后一个步骤中,为 Amazon S3 提供足够的密钥使用权限。
将以下内容粘贴到“语句”列表中:
"Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" } ]
为 Amazon S3 存储桶启用服务器端加密(SSE)
按 仅对 SQS 启用加密 中的步骤操作。
-
请执行下列操作之一:
-
要为整个 S3 存储桶启用 SSE,请导航到目标存储桶中的 Properties(属性)选项卡。
在这里,您可以启用 SSE 并选择要使用的加密类型。Amazon S3 提供了 Amazon S3 为您创建、管理和使用的加密密钥,您也可以从 KMS 中选择密钥。
-
要对特定文件夹启用 SSE,请单击目标文件夹旁边的复选框,然后在 Actions(操作)下拉列表下选择 Edit server-side encryption(编辑服务器端加密)。
-
常见问题
为什么我发布到 Amazon SNS 主题的消息没有传递到我订阅的启用了服务器端加密 (SSE) 的 Amazon SQS 队列中?
仔细检查您的 Amazon SQS 队列是否正在使用:
由客户管理的客户主密钥 (CMK)。不是 SQS 提供的原定设置密钥。
(1) 中的 CMK 包括一个自定义密钥策略,为 Amazon SNS 提供足够的密钥使用权限。
有关更多信息,请参阅知识中心中的 此文章
我已经订阅了电子邮件通知,但在编辑 Amazon S3 存储桶时,我没有收到任何电子邮件更新。
单击电子邮件中的“Confirm Subscription”(确认订阅)链接,确保您已确认您的电子邮件地址。您可以检查 SNS 主题下的 Subscriptions(订阅)表来验证确认的状态。
选择 Amazon SNS > Topics(主题)> sns_topic_name
> Subscriptions table(订阅表)。
如果您遵循了我们的先决条件脚本,您将发现 sns_topic_name
等于 sqs_queue_name
。如下所示:

对我的 SQS 队列启用服务器端加密后,我添加的文件夹中只有一些显示在我的表中。为什么我缺少了一些 parquet?
如果对 SQS 队列启用 SSE 之前进行了 Amazon S3 存储桶更改,爬网程序可能无法获取这些更改。要确保已网络爬取 S3 存储桶的所有更新,请在列表模式下再次运行爬网程序(“Crawl All Folders”(网络爬取所有文件夹))。另一个选项是创建启用了 S3 事件的新爬网程序重新开启。