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 函数,则您必须配置一个策略,以便向 Amazon IoT 授予 lambda:InvokeFunction的权限。您只能调用在与您的 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

    重要

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

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

  • 如果您使用 Amazon Key Management Service (Amazon KMS) 客户托管的 Amazon KMS key (KMS 密钥)对 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 示例定义了 Amazon IoT 规则中的 Lambda 函数。

{ "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 示例定义了 Amazon IoT 规则中一个带有替代模板的 Lambda 操作。

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

另请参阅