【发布时间】:2020-07-28 06:37:17
【问题描述】:
我是aws的新手。有一周我尝试将数据从 Nifi 流式传输到 Redshift 作为测试,以了解它是如何工作的。我所做的是使用 Nifi 生成一个简单的记录“aa,12,2020”,将其发送到 kinesis firehose,然后将 kinesis 发送到 s3 存储桶,然后从那里发送到 redshiftcluster 中的表。 我一直有这个错误
Redshift.ConnectionFailed
我在没有 nifi 的情况下使用 kinesis 的测试数据进行了尝试,但结果是一样的。 到目前为止,我为解决该问题所做的事情是此链接中所写的内容: AWS Kinesis Firehose not inserting data in Redshift 与 aws 帮助相比,它更详细一些。 在这个列表中,一切似乎都很好,直到
此时,您应该能够在 Redshift 日志中看到连接尝试: `select * from stl_connection_log where remotehost like '52%' order by recordtime desc;
我的 redshift 数据库中有任何记录。
我红了多少,都说是关于安全和卷的。我想我错过了一些东西,我找不到它。 我有 3 次删除所有进程并重新创建,但没有帮助。 这是我使用 kinesistestdata 进行测试的设置: Kinesisfirehose:
- IAM 角色:firehose_delivery_role
- 策略:oneClick_firehose_delivery_role_1586881780618、AmazonRedshiftFullAccess、AmazonS3FullAccess
- 监测结果:Monitoring shows Redshift success is zero
S3 存储桶: 桶中数据文件内容:
{"ticker_symbol":"AAPL","sector":"TECHNOLOGY","change":0.26,"price":90.78}{"ticker_symbol":"WMT","sector":"RETAIL","change":1.84,"price":95.82}{"ticker_symbol":"CVB","sector":"TECHNOLOGY","change":-0.07,"price":57.51}{"ticker_symbol":"DFT","sector":"RETAIL","change":-0.06,"price":131.62}
存储桶中的对象 URL-xml 文件:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>11111</RequestId>
<HostId>
1111111111111 </HostId>
</Error>
Redshift 集群:
- 附加的 IAM 角色 AWSServiceRoleForRedshift firehose_delivery_role(在 kinesis 中的角色相同)
- 网络和安全: 虚拟私有云 (VPC) 信息
- CIDR 和入站规则: 172.31.0.0/16 13.58.135.96/27
- 可用区:us-east-2a
- VPC 安全组:默认
- 可公开访问:是
我还阅读了 Jason pollicies 文件,例如: https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3 但目前尚不清楚我该怎么做。另一方面,策略是通过 GUI 添加的,所以它应该可以工作。
你能帮我一下,我应该怎么走? 非常感谢!
--------几天后------------
在发现复制命令错误后,我试图在此页面的帮助下找到问题: s3 access denied 403 我找不到具体问题,但 kinesis:redshift 日志中没有错误,Redshift 数据库中没有错误,这 3 个查询:
select * from STL_LOAD_ERRORS;
select * from STL_FILE_SCAN;
select * from STL_S3CLIENT_ERROR order by recordtime desc;
但仍然没有数据处理 redshift。(在 kinesis 监控选项卡中,“DeliveryToRedshift Success”仍然为零) 如果有人有想法,我将不胜感激。
【问题讨论】:
-
我尝试使用如下复制命令测试我的 redshift: COPY firehose_test_table FROM 's3://...file' CREDENTIALS 'aws_iam_role=arn:aws:iam::....' MANIFEST JSON'自动';但它也很奇怪。复制命令响应成功,但选择命令显示已插入数据库。
标签: amazon-web-services amazon-redshift amazon-kinesis-firehose