Apache NiFi写入加密的SQS队列

时间:2018-10-05 22:46:34

标签: encryption amazon-sqs apache-nifi

我们在使用Apache NiFi和SQS时遇到了非常奇怪的情况。我们正在使用AWSCredentialsProviderControllerService管理我们的身份验证。如果我们使用未加密的队列,则工作正常,但是,如果使用加密的队列,则不会失败,但不会写入任何内容。在NiFi或云端跟踪日志中似乎也没有生成任何内容。只是想知道是否有什么特别的事情需要完成以支持这种情况。如果失败,我们将无法确定发生在哪里。任何建议或想法将不胜感激。

1 个答案:

答案 0 :(得分:1)

在以下情况下,我能够使用PutSQS重现静默故障:

  • 使用自定义KMS客户主密钥而不是默认AWS密钥配置了服务器端加密的SQS队列
  • NiFi使用的AWS凭证具有发送消息的权限,但没有使用自定义KMS密钥的权限

解决方案是向NiFi的AWS凭证提供使用SQS和KMS的权限。我在What AWS KMS Permissions Do I Need to Use SSE for Amazon SQS?中找到了以下示例策略:

{
   "Version": "2012-10-17",
      "Statement": [{
         "Effect": "Allow",
         "Action": [
            "kms:GenerateDataKey",
            "kms:Decrypt"
         ],
         "Resource": "arn:aws:kms:us-east-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
         }, {
         "Effect": "Allow",
         "Action": [
            "sqs:SendMessage",
            "sqs:SendMessageBatch"
         ],
         "Resource": "arn:aws:sqs:*:123456789012:MyQueue"
      }]
}