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

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

对 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 的原定设置密钥。

    Encryption settings panel with server-side encryption enabled and customer master key selection.

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

    Encryption settings for Amazon SQS showing CMK alias and 数据密钥 reuse period.
注意

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

同时对 SQS 和 Amazon S3 启用加密

为 SQS 启用服务器端加密 (SSE)
  1. 仅对 SQS 启用加密 中的步骤操作。

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

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

    "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" } ]
为 Amazon S3 存储桶启用服务器端加密(SSE)
  1. 仅对 SQS 启用加密 中的步骤操作。

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

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

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

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

      Amazon S3 interface showing Objects section with Actions dropdown menu expanded.

常见问题解答

为什么我发布到 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。如下所示:

Subscriptions table showing two confirmed entries with ID, Endpoint, Status, and Protocol columns.
对我的 SQS 队列启用服务器端加密后,我添加的文件夹中只有一些显示在我的表中。为什么我缺少了一些 parquet?

如果对 SQS 队列启用 SSE 之前进行了 Amazon S3 存储桶更改,爬网程序可能无法获取这些更改。要确保已网络爬取 S3 存储桶的所有更新,请在列表模式下再次运行爬网程序(“Crawl All Folders”(网络爬取所有文件夹))。另一个选项是创建启用了 S3 事件的新爬网程序重新开启。