如何使用Powershell将S3中的json数据发送到Neptune实例?

时间:2019-01-18 07:06:11

标签: amazon-web-services powershell turtle-rdf amazon-neptune

我有一个乌龟文件,希望从S3服务器发送到powershell上的Neptune实例。下面是我正在使用的命令

Invoke-RestMethod -Uri http://edwardspoc.civwhymjvz19.us-east-1.neptune.amazonaws.com:8182 -ContentType application/json  -body '
{ 
  "source" : "s3://cedwardsneptune/ATC.ttl", 
  "format" : "turtle",  
  "iamRoleArn" : "arn:aws:s3:::cedwardsneptune", 
  "region" : "us-east-1", 
  "failOnError" : "FALSE",
  "parserConfiguration" : {
  "namedGraphUri" : "http://purl.bioontology.org/ontology/ATC"
  }
}'

这给了我以下错误

  

Invoke-RestMethod:无法发送具有这种动词类型的内容主体。

我做了细微的更改,但似乎没有任何效果。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

当您说您的REQUEST VERB不允许发送BODY时,您说的错误。

基本上,您正在执行GET并尝试发送正文。当GET动词不允许发送身体部位时。 可能您需要使用POST方法(请查看特定的Web服务文档)

为此,我建议您使用下一种格式:

$Cred = Get-Credential (If you could have)
$Url = "http://edwardspoc.civwhymjvz19.us-east-1.neptune.amazonaws.com:8182"
$Body = '{ 
 "source" : "s3://cedwardsneptune/ATC.ttl", 
  "format" : "turtle",  
  "iamRoleArn" : "arn:aws:s3:::cedwardsneptune", 
  "region" : "us-east-1", 
  "failOnError" : "FALSE",
  "parserConfiguration" : {
  "namedGraphUri" : "http://purl.bioontology.org/ontology/ATC"
  }
}'



Invoke-RestMethod -Method 'Post' -Uri $url -Credential $Cred -ContentType $contentType -Body $body -ContentType 'application/json' -OutFile output.csv

(*)当然-OutFile是可选的

关于JSON有一个名为ConvertFrom-JSON的cmdlet,可以在需要解析输出(即JSON)时使用。

p.e:

Invoke-RestMethod -Method 'Post' -Uri $url -Credential $Cred -Body $body | 
ConvertFrom-JSON | Select field1, field2, field3

如果您期望将field1,field2,field3作为字段的输出(json)