如何解决在 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": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "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 存储桶写入数据的权限。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?