AWS Neptune连接失败 - 使用CURL命令从S3 Bucket加载数据到Neptune集群

3
我正在尝试将存储在S3桶中的RDF N-triples数据批量加载到Neptune加载程序中。我已按照以下链接https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-data.html创建了S3桶、IAM角色、端点和Neptune集群。
我正在尝试使用命令提示符在Windows本地执行CURL命令以加载数据。
curl -X POST -H "Content-Type: application/json" https://<clusterEndpoint>:<clusterPort>/loader -d "{\"source\":\"s3://<bucketName>\",\"format\":\"ntriples\",\"iamRoleArn\":\"arn:aws:iam::<account-id>:role/<role-name>\",\"region\":\""<region>\",\"failOnError\":\"FALSE\",\"parallelism\":\"MEDIUM\",\"updateSingleCardinalityProperties\":\"FALSE\",\"queueRequest\":\"TRUE\"}"

执行上述Curl命令时,我遇到以下错误:
Failed to connect to <neptuneClusterEndoint> port <portNumber>: Timed out

此外,当我尝试使用命令curl http://<neptuneCluster>:<portNumber>/status检查集群状态时,我得到了相同的超时错误。

我正在尝试使用Curl命令创建一个Neptune负载,而不需要创建EC2实例。请问为什么会出现连接失败的错误?是否有办法使用curl命令成功创建一个Neptune负载?

1个回答

2
curl命令需要访问到Neptune VPC。例如,可以通过EC2堡垒主机上的SSH隧道进行访问。由于您尝试避免使用EC2,因此您需要设置替代方法来访问Neptune,例如负载平衡器。您还可以使用Lambda函数,只要Lambda函数能够访问VPC即可。您可以决定许多其他连接方式,但是由于Neptune不公开IP地址,因此您需要配置一种方式让curl命令访问该VPC。还要注意,如果在Neptune集群上启用了IAM身份验证,则请求必须使用SigV4凭证进行签名。
如果您配置了Neptune Notebook,则可以直接使用%load命令,并且它也可以处理任何SigV4需求。

谢谢。我试图创建一个Lambda函数,提供对VPC、安全组、子网等的访问。我创建了一个用于检查集群状态的函数,但是我收到了错误消息 "errorMessage": "2021-07-27T08:03:11.866Z <requestid> Task timed out after 3.00 seconds"。我可以知道为什么会出现这个错误吗? - undefined
另外,我如何在本地连接到我的内部应用负载均衡器,以便可以使用curl命令批量加载Neptune?如果有的话,你能否分享一些步骤? - undefined
Lambda函数的默认超时时间为3秒。您可以将其增加到最多15分钟。在下面的链接中,有关于使用负载均衡器的很好的讨论。对于简单的开发和测试,您不必实现所有讨论中提到的内容。https://github.com/aws-samples/aws-dbs-refarch-graph/tree/master/src/connecting-using-a-load-balancer - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接