如何配置AWS Kinesis Firehose以便能够复制到Redshift?

Modified on: Thu, 22 Aug 2019 18:20:02 +0800

问题

我已经设置了一个Firehose和选定的选项,它们似乎会导致流式数据最终出现在Redshift中。我在Redshift中有一个Firehose和一个目标表。数据在中间S3存储桶中正确显示,但未进入Redshift。

我允许Firehose区域CIDR [1]通过Redshift安全组访问群集。我已将Firehose的凭据提供给Redshift群集并测试了凭据。该群集可公开访问。

STL_LOAD_ERRORS表是空的,我希望看到任何尝试和失败的复制语句产生的错误。 CloudWatch中也没有DeliveryToRedshift事件。这让我相信甚至没有尝试过Redshift。

我正在使用 Redshift COPY选项为副本指定jsonpath文件。我目前有:json "s3://app-event-data/_jsonpaths/_bigtable.jsonpath.json"。该文件存在于该位置的s3中,看起来像jsonpath文件[3]。我也试过在那个盒子里添加凭据,但我没有必要这样做。

更新1

我启用了Redshift中的日志记录,这表明我已经成功通过Firehose进行身份验证。然后,我创建了一个新的参数组,启用了用户活动日志记录并重新启动了集群。现在等待下一个日志批处理。

参考

  1. http://docs.aws.amazon.com /firehose/latest/dev/firehose-dg.pdf
  2. https://aws.amazon.com/kinesis/firehose/
  3. http:// docs .aws.amazon.com /红移/最新/分克/复制usage_notes - 复制 - 从-json.html
  4. 醇>

    为何选择ServerFault? 询问有关Amazon AWS的最佳StackExchange网站

    我会标记这个问题:amazon-kinesis amazon-firehose amazon-redshift

最佳答案

以下是我最初错误配置并最终调整以使Firehose正确将数据复制到Redshift中的所有内容:

  1. 确保您选择的存储桶与红移群集位于同一区域。您可以指定区域如果由于某种原因你想产生额外费用创建后,您无法更改存储桶的区域。< / LI>
    醇>

    这首先有点令人困惑,因为桶控制台中的区域选择器显示“全局”。


    1. Firehose不会为您引用标识符,因此如果您在表单中提供的表名需要引号,则需要自行添加。列名也一样。
    2. 醇>

      1. 仅在复制选项中使用单引号。

      2. 通过从Redshift安全选项卡授权正确的CIDR / IP,为Firehose提供对Redshift群集的访问权限。您可以在这里。您无需创建新的Cluster Security组即可执行此操作。您只需将其添加到默认值即可。如果添加新安全组,则需要从仪表板重新配置群集以使用新安全组,它不能具有2。

      3. Redshift COPY不接受时区以外的时区。如果您使用的是RFC3339等格式,则需要先将时间设置为UTC,然后在复制选项中指定TIMEFORMAT 'auto'

      4. 为了知道在事情不起作用时会发生什么,您需要在Redshift中启用用户活动记录


        • 启用日志记录(显然)
      5. 醇>

    • 创建新参数组


    • user_activity_logging 设置为true


    • 修改群集以使用新参数组


    • roboot your cluster


      

    Enable user activity logging成就解锁

作者:,ogc-nick

相关问答

添加新评论