我对runny redshiftcopyactivity有问题,无法将数据从s3加载到redshift集群(redshift/s3/dp都在同一个aws帐户中)。我让它在我们的测试版帐户中工作,但在prod中无法做到这一点。
在dp中创建ec2resource时,我使用了datapipelineDefaultResourceRole和datapipelineDefaultRole角色。
这是我的redshift集群属性。
我收到的错误是:
2018年12月19日04:28:14773[错误]
(taskrunnerservice资源:df-0791222351vtjttkg0gpl3_@resourceid_lvkhp_2018-12-19t00:48:11-0)
amazonaws.datapipeline.database.connectionfactory:无法建立
连接到
jdbc:postgresql://vse rs dw.1221345.us-east-1.redshift.amazonaws.com:8192/vse
连接被拒绝。检查主机名和端口是否正确,以及
邮局主管正在接受TCP/IP连接。
我发现了一些关于堆栈溢出的话题,这些话题讨论了同样的问题,我发现我需要在用于redshift的同一个vpc中启动ec2实例。我关注这个维基(
https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-resources-vpc.html
)
我创建了新的vpc安全组并将其添加到redshift集群
(AWS-DataPipeline-EC2-S3-Redshift)。
然后,我在与redshift相同的vpc中为ec2实例创建了另一个vpc安全组(称为
AWS-DP-EC2-组
)。对于这个组,我没有指定任何入站规则,默认情况下存在出站规则。
在红移安全组中(
AWS-DataPipeline-EC2-S3-红移
),我添加了入站规则以接受来自ec2安全组的所有端口的所有流量。
然后,在启动数据管道时,我指定了securitygroupid:
AWS-DP-EC2-组
(我的EC2安全组)和
子网
:subnet-12345(这是我在vpc中找到的4个子网标识之一,我用于redshift和ec2安全组)
请帮助我理解我做错了什么。