如何解决在 Kinesis Data Firehose 中写入 Amazon S3 存储桶时的“访问被拒绝”错误?

上次更新时间:2020 年 10 月 15 日

我尝试将 Amazon Kinesis Data Firehose 中的数据写入通过 AWS Key Management Service (AWS KMS) 加密的 Amazon Simple Storage Service (Amazon S3) 存储桶中。但是,我收到“访问被拒绝”错误消息。如何解决此问题?

解决方法

重要提示:请确保 Kinesis Data Firehose 的 AWS Identity and Access Management (IAM) 角色拥有相关的 Amazon S3 权限。有关 S3 权限的更多信息,请参阅授予 Kinesis Data Firehose 访问 Amazon S3 目标的权限。

要解决 Kinesis Data Firehose 中的“访问被拒绝”错误消息,请执行以下步骤:

1.打开 AWS KMS 控制台。

2.选择当前被用于加密您的 S3 存储桶的 KMS 密钥。

3.选择 Switch to policy view(切换到策略视图)。

4.检查并确认您在 KMS 密钥策略中拥有必要的权限。通过适当访问,您可以对写入 S3 存储桶的数据进行加密。

注意:有关 AWS KMS 密钥策略的更多信息,请参阅使用 AWS Key Management Service (SSE-KMS) 中存储的 CMK 进行服务器端加密以保护数据。

5.更新您的策略,授予 Kinesis Data Firehose 对 KMS 密钥的访问权:

{
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<account-ID>:role/<FirehoseRole>"
            },
            "Action": ,
            "Resource": "<ARN of the KMS key>"
}

请务必指定加密 S3 存储桶的 KMS 密钥的 Amazon 资源名称 (ARN)。

6.选择保存

您还可以在不修改策略的情况下解决“访问被拒绝”错误消息。要解决此错误消息,请执行以下步骤:

1.打开 AWS KMS 控制台。

2.选择当前被用于加密您的 S3 存储桶的 KMS 密钥。

3.在 Key users(关键用户)部分,选择 Add(添加)

4.选择您的 Kinesis Data Firehose 角色。

5.选择 Add(添加)。您现在已拥有从 Kinesis Data Firehose 向加密的 S3 存储桶写入数据的权限。