AWS IoT
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Lambda 操作

lambda 操作会调用 Lambda 函数,并传入触发规则的 MQTT 消息。为了让 AWS IoT 调用 Lambda 函数,您必须配置一个策略以向 AWS IoT 授予 lambda:InvokeFunction 权限。Lambda 函数使用基于资源的策略,因此您必须将该策略附加至 Lambda 函数本身。使用以下 CLI 命令附加授予 lambda:InvokeFunction 权限的策略:

aws lambda add-permission --function-name "function_name" --region "region" --principal iot.amazonaws.com --source-arn arn:aws:iot:us-east-2:account_id:rule/rule_name --source-account "account_id" --statement-id "unique_id" --action "lambda:InvokeFunction"

add-permission 命令的参数如下:

--function-name

Lambda 函数的名称,您正在通过添加新的权限来更新其资源策略。

--region

您的账户所处的 AWS 区域。

--principal

获取权限的委托人。这应该是 iot.amazonaws.com,以授予 AWS IoT 调用 Lambda 函数的权限。

--source-arn

规则的 ARN。您可以使用 get-topic-rule CLI 命令来获取规则的 ARN。

--source-account

定义规则的 AWS 账户。

--statement-id

唯一的语句标识符。

--action

要在此语句中允许的 Lambda 操作。在本示例中,我们要允许 AWS IoT 调用 Lambda 函数,因此我们指定 lambda:InvokeFunction

注意

如果您在不提供源 ARN 的情况下为 AWS IoT 委托人添加权限,则所有通过 Lambda 操作创建规则的 AWS 账户都可以触发从 AWS IoT 调用 Lambda 函数的规则。

有关更多信息,请参阅 Lambda 权限模型

在使用 lambda 操作创建规则时,您必须指定在触发规则后调用的 Lambda 函数。

下面的 JSON 示例介绍了调用 Lambda 函数的规则:

{ "rule": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "actions": [{ "lambda": { "functionArn": "arn:aws:lambda:us-east-2:123456789012:function:myLambdaFunction" } }] } }

有关更多信息,请参阅 AWS Lambda 开发人员指南