对 Amazon S3 事件爬网程序使用加密 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

对 Amazon S3 事件爬网程序使用加密

本节介绍仅对 SQS 或同时对 SQS 和 Amazon S3 使用加密。

仅对 SQS 启用加密

预设情况下,Amazon SQS 会在传输过程中提供加密。要向队列中添加可选的服务器端加密 (SSE),可以在编辑面板中附上客户主密钥 (CMK)。这意味着 SQS 会加密 SQS 服务器上所有客户静态数据。

创建客户主密钥 (CMK)

  1. 选择 Key Management Service (KMS)(密钥管理服务 (KMS))> Customer Managed Keys(客户管理的密钥)> Create key(创建密钥)。

  2. 按照以下步骤添加您自己的别名和说明。

  3. 添加您希望能够使用此密钥的相应 IAM 用户/角色。

  4. 在密钥策略中,为“语句”列表添加另一条语句,以便自定义密钥策略可以为 Amazon SNS 提供足够的密钥使用权限。

    "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" } ]

为队列启用服务器端加密 (SSE)

  1. 选择 Amazon SQS > Queues(队列)> sqs_queue_name > Encryption(加密)选项卡。

  2. 选择 Edit(编辑),然后向下滚动至 Encryption(加密)下拉列表。

  3. 选择 Enabled(已启用)以添加 SSE。

  4. 选择先前创建的 CMK,而不是名称为 alias/aws/sqs 的原定设置密钥。

    添加此密钥后,加密选项卡更新为添加的密钥。

注意

Amazon SQS 会自动删除在队列中已过了最大消息保存期的消息。默认的消息保存期为 4 天。为避免事件丢失,请将 SQS MessageRetentionPeriod 更改为最大值 14 天。

同时对 SQS 和 S3 启用加密

为 SQS 启用服务器端加密 (SSE)

  1. 仅对 SQS 启用加密 中的步骤操作。

  2. 在 CMK 设置的最后一个步骤中,为 Amazon S3 提供足够的密钥使用权限。

    将以下内容粘贴到“语句”列表中:

    "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" } ]

为 S3 存储桶启用服务器端加密 (SSE)

  1. 仅对 SQS 启用加密 中的步骤操作。

  2. 请执行下列操作之一:

    • 要为整个 S3 存储桶启用 SSE,请导航到目标存储桶中的 Properties(属性)选项卡。

      在这里,您可以启用 SSE 并选择要使用的加密类型。Amazon S3 提供了 Amazon S3 为您创建、管理和使用的加密密钥,您也可以从 KMS 中选择密钥。

    • 要对特定文件夹启用 SSE,请单击目标文件夹旁边的复选框,然后在 Actions(操作)下拉列表下选择 Edit server-side encryption(编辑服务器端加密)。

FAQ

为什么我发布到 Amazon SNS 主题的消息没有传递到我订阅的启用了服务器端加密 (SSE) 的 Amazon SQS 队列中?

仔细检查您的 Amazon SQS 队列是否正在使用:

  1. 由客户管理的客户主密钥 (CMK)。不是 SQS 提供的原定设置密钥。

  2. (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 事件的新爬网程序重新开启。