AWS IoT Core 与 Google Cloud Function 的 HTTP 规则操作集成

0

【以下的问题经过翻译处理】 我已经使用 HTTP 触发器创建了一个简单的 Google Cloud Function,并授予了必要的权限来监听外部请求。

我正在使用 MQTT 测试客户端在特定主题名称下发布主题(截至目前我还没有在 IoT Core 中注册设备)。我在这里想要实现的是在规则引擎的帮助下重新发布此消息。

因此,我首先创建一个带有 HTTP 端点的规则作为 IoT 规则的操作,并附加所有策略并为此规则提供所需的权限。 HTTP 端点是上面提到的 Google Cloud Function 的 URL。我已经使用 AWS 发送到 GCFunction 的令牌确认并激活了端点。

我已经从 AWS 访问资源所需的 GCFunction 生成了一个身份验证令牌,并将其保存在标头下的 IoT 规则中,作为“授权:Bearer [$token]”。

预期结果:当我从测试客户端发布一条消息时,它应该在 GCFunction 的日志中显示该消息。

实际结果:我看到 403 和 401 错误。说明请求无权调用此服务。

我认为 GCFunction 端的一切都很好,因为我用 Postman 对其进行了测试并获得了预期的结果。但不适用于 AWS IoT 规则。是这种集成是不可能的,还是目前 AWS 没有提供。或者我错过了什么。

有人可以帮我理解这个吗? 谢谢!AWS IoT Core 与 Google Cloud Function 的 HTTP 规则操作集成

profile picture
EXPERTE
gefragt vor 5 Monaten25 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 基于您提供的Postman示例(如上所述-感谢!):

"https://xxxxx-test-function-invoked-b-xxxxx-xx.x.run.app"(x =模糊数据)-这是我需要触发的Google Cloud函数的URL。

除此之外,我还使用Bearer令牌进行授权;Body = {"Hello": "from postman"}; 自动生成的7个标头,包括Content-Type;Content-Length;Host;User-Agent;Accept;Acceept-Encoding;Connection。

最有可能是Bear令牌用于授权引起了问题。AWS IoT Core规则HTTP操作将需要将Bearer令牌包含在规则的一部分中。这是有问题的,因为访问令牌将有一个生命周期,并需要更新。 HTTP Action可以从消息有效载荷中提取值,但我认为设备不会拥有它。

下面的评论中的详细信息可以解决这个问题

static_header_keysubstitutable_header_key是占位符。例如,Authorization:Bearer token_contents在规则中会像这样显示:

        "actions": [
            { 
                "http": { 
                    "url": "https://www.example.com/subpath",
                    "headers": [
                        { 
                            "key": "Authorization", 
                            "value": "Bearer token_contents" 
                        }
                    ] 
                } 
            }
        ]
profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen