Lambda - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Lambda

Lambda (lambda) 操作会调用一个 Amazon Lambda 函数,传入 MQTT 消息。 Amazon IoT 异步调用 Lambda 函数。

您可以按照教程执行操作,该教程向您说明如何使用 Lambda 操作创建并测试规则。有关更多信息,请参阅教程:使用 Amazon Lambda 函数格式化通知

要求

此规则操作具有以下要求:

  • Amazon IoT 要调用 Lambda 函数,必须配置授予lambda:InvokeFunction权限的策略。 Amazon IoT您只能调用 Lambda 策略 Amazon Web Services 区域 所在位置定义的 Lambda 函数。Lambda 函数使用基于资源的策略,因此您必须将该策略附加到 Lambda 函数本身。

    使用以下 Amazon CLI 命令附加授予lambda:InvokeFunction权限的策略。

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

    add-permission 命令需要以下参数:

    --function-name

    Lambda 函数的名称 添加新的权限来更新函数的资源策略。

    --region

    函数 Amazon Web Services 区域 的。

    --principal

    获取权限的委托人。这应该是iot.amazonaws.com为了 Amazon IoT 允许调用 Lambda 函数。

    --source-arn

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

    --source-account

    定义规则 Amazon Web Services 账户 的地方。

    --statement-id

    唯一的语句标识符。

    --action

    要在此声明中允许的 Lambda 操作。 Amazon IoT 要允许调用 Lambda 函数,请指定。lambda:InvokeFunction

    重要

    如果您在不提供source-arn或的情况下为 Amazon IoT 委托人添加权限source-account,则任何 Amazon Web Services 账户 使用您的 Lambda 操作创建规则的人都可以激活规则,从中调用您的 Lambda 函数。 Amazon IoT

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

  • 如果您使用 Amazon KMS 客户托管 Amazon KMS key 对 Lambda 中的静态数据进行加密,则该服务必须有权代表调用者使用这些数据。 Amazon KMS key 有关更多信息,请参阅 Amazon Lambda 开发人员指南中的静态加密

参数

使用此操作创建 Amazon IoT 规则时,必须指定以下信息:

functionArn

要调用的 Lambda 函数的 ARN。 Amazon IoT 必须具有调用该函数的权限。有关更多信息,请参阅要求

如果您未指定 Lambda 函数的版本或别名,则将关闭该函数的最新版本。如果要关闭 Lambda 函数的特定版本,则可指定版本或别名。要指定一个版本或别名,请将该版本或别名附加到 Lambda 函数的 ARN。

arn:aws:lambda:us-east-2:123456789012:function:myLambdaFunction:someAlias

有关版本控制和别名的更多信息,请参阅 Amazon Lambda 函数版本控制和别名

仅支持替换模板:API 且 Amazon CLI 仅支持

示例

以下 JSON 示例在规则中定义了 Lambda 操作。 Amazon IoT

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

以下 JSON 示例定义了在规则中使用替换模板的 Lambda 操作。 Amazon IoT

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "lambda": { "functionArn": "arn:aws:lambda:us-east-1:123456789012:function:${topic()}" } } ] } }

另请参阅