Amazon web services 用于IOT设备阴影的AWS Appsync Http解析器
我试图(徒劳地)通过appsync Http解析程序获取设备阴影Amazon web services 用于IOT设备阴影的AWS Appsync Http解析器,amazon-web-services,graphql,aws-iot,aws-appsync,Amazon Web Services,Graphql,Aws Iot,Aws Appsync,我试图(徒劳地)通过appsync Http解析程序获取设备阴影 { "version": "2018-05-29", "method": "GET", "resourcePath": "/things/${ctx.args.id}/shadow", "params":{ "headers": $utils.toJson($utils.http.copyHeaders($ctx.request.headers)) }
{
"version": "2018-05-29",
"method": "GET",
"resourcePath": "/things/${ctx.args.id}/shadow",
"params":{
"headers":
$utils.toJson($utils.http.copyHeaders($ctx.request.headers))
}
}
所有im作为响应都是“凭证的作用域应为正确的服务”
我可以看到呼叫的授权标头包含
“凭证=-/-/eu-west-1/appsync/aws4\u请求”
当我在今天的应用程序中调用GET“deviceShadow”作为REST时(它可以工作),相同的值是
“凭证=-/-/eu-west-1/物联网数据/aws4\U请求”
因此,它似乎是appsync被设置为服务,这是混乱的通话?
有什么建议可以让它工作吗 我认为您需要向数据源添加角色和IAM签名配置。使用AWS CLI执行以下步骤
iot:GetThingShadow
{
“端点”:“https://”,
“授权配置”:{
“授权类型”:“AWS_IAM”,
“awsIamConfig”:{
“签约地区”:“eu-west-1”,
“signingServiceName”:“物联网”
}
}
}
当AWS AppSync调用您的解析器时,它将使用附加的角色生成SigV4签名,并调用AWS IoT设备影子服务。试试看。您的数据源配置是什么?类型是HTTP,资源是物联网设备的基本url。我认为这一切都是正确的,因为我使用同一个url成功地对影子上的get和post进行REST调用。看起来非常有希望。我目前正在控制台中执行所有设置(因为我只执行POC)。不知道如何添加到那里。但我会想办法的。我们发布了关于这一能力的官方文件:@Rohandeshande Hi Rohan,你能在这里帮忙吗?:
{
"endpoint": "https://<iot-endpoint>",
"authorizationConfig": {
"authorizationType": "AWS_IAM",
"awsIamConfig": {
"signingRegion": "eu-west-1",
"signingServiceName": "iot"
}
}
}