如何使用 powershell 从 S3 向 Neptune 实例发送 json 数据?

How to send json data using powershell from S3 to Neptune instance?

我有一个 turtle 文件,我希望将其从 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 : Cannot send a content-body with this verb-type.

我做了细微的更改,但似乎没有任何效果。感谢您的帮助!

当您的 REQUEST VERB 不允许时,您说您正在尝试发送 BODY 时出错。

基本上你正在执行 GET 并试图发送一个正文。当不允许 GET 动词发送正文部分时。 可能您需要使用 POST 方法(查看特定的网络服务文档)

为此,我向您推荐下一种格式:

$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

如果您希望输出 (json) 具有 field1、field2、field3 作为字段