适用于IOT设备影子的AWS Appsync Http解析器

时间:2019-03-20 13:02:25

标签: 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))
    }
  }

所有获得回应的即时消息都是“凭据的范围应为正确的服务” 我可以看到该呼叫的Authorization标头包含 “凭据= --- / --- / eu-west-1 / appsync / aws4_request”

当我在今天的应用程序中调用GET“ deviceShadow”作为REST(有效)时,它们的值相同 “凭据= --- / --- / eu-west-1 / iotdata / aws4_request”

因此,它看起来像是将appsync设置为服务,并且搞砸了通话吗? 任何提示如何使其正常工作?

1 个答案:

答案 0 :(得分:2)

我认为您需要向数据源添加角色和IAM签名配置。使用AWS CLI执行以下步骤。

  1. 将IAM角色附加到数据源,该数据源授予适当的权限来调用IoT设备影子操作。我认为此示例为{ "endpoint": "https://<iot-endpoint>", "authorizationConfig": { "authorizationType": "AWS_IAM", "awsIamConfig": { "signingRegion": "eu-west-1", "signingServiceName": "iot" } } }
  2. 将IAM配置部分添加到AWS AppSync数据源。这不是解析器模板。
emmeans

当AWS AppSync调用您的解析器时,它将使用附加的角色生成SigV4签名并调用AWS IoT设备影子服务。试试看。