

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Lambda
<a name="lambda-rule-action"></a>

Lambda (`lambda`) アクションは AWS Lambda 関数を呼び出し、MQTT メッセージを渡します。 は Lambda 関数を非同期的に AWS IoT 呼び出します。

Lambda アクションを使用してルールを作成およびテストする方法を示すチュートリアルに従うことができます。詳細については、「[チュートリアル: AWS Lambda 関数を使用して通知をフォーマットする](iot-lambda-rule.md)」を参照してください。

## 要件
<a name="lambda-rule-action-requirements"></a>

このルールアクションには、以下の要件があります。
+  AWS IoT が Lambda 関数を呼び出すには、 アクセス`lambda:InvokeFunction`許可を付与するポリシーを設定する必要があります AWS IoT。Lambda ポリシーが存在する AWS リージョン のと同じ で定義された Lambda 関数のみを呼び出すことができます。Lambda 関数はリソースベースのポリシーを使用するため、ポリシーを Lambda 関数自体にアタッチする必要があります。

  次の AWS CLI コマンドを使用して、 アクセス`lambda:InvokeFunction`許可を付与するポリシーをアタッチします。このコマンドを、以下のように置き換えます。
  + *function\$1name* を Lambda 関数の名前に置き換えます。関数のリソースポリシーを更新するための新しいアクセス許可を追加します。
  + *region* と 関数 AWS リージョン の 。
  + *account-id* は、ルールが定義されている AWS アカウント 番号です。
  + *rule-name* は、Lambda アクションを定義する AWS IoT ルールの名前です。
  + *unique\$1id* を一意のステートメント識別子で置き換えます。
**重要**  
`source-arn` または を指定せずにプリン AWS IoT シパルのアクセス許可を追加すると`source-account`、Lambda アクションを使用してルールを作成する AWS アカウント は、Lambda 関数を呼び出すルールをアクティブ化できます AWS IoT。

  詳細については、「[AWS Lambda のアクセス許可](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html)」を参照してください。

  ```
  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"
  ```
+  AWS IoT コンソールを使用して Lambda ルールアクションのルールを作成すると、Lambda 関数が自動的にトリガーされます。 AWS CloudFormation の代わりに を使用する場合は[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-lambdaaction.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-lambdaaction.html)、 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html)リソースを追加する必要があります。このリソースにより、Lambda 関数をトリガーするアクセス許可が付与されます。

  次のコードは、このリソースを追加する方法を示しています。この例では、次のように置き換えます。
  + *function\$1name* を Lambda 関数の名前に置き換えます。
  + 関数 AWS リージョン の を持つ *リージョン*。
  + *account-id* は、ルールが定義されている AWS アカウント 番号です。
  + *rule-name* は、Lambda アクションを定義する AWS IoT ルールの名前です。

  ```
  Type: AWS::Lambda::Permission
  Properties:
    Action: lambda:InvokeFunction
    FunctionName: !Ref function_name
    Principal: "iot.amazonaws.com"
    SourceAccount: account-id
    SourceArn: arn:aws:iot:region:account-id:rule/rule_name
  ```
+  AWS KMS カスタマーマネージドを使用して Lambda AWS KMS key に保管中のデータを暗号化する場合、サービスには AWS KMS key 発信者に代わって を使用するアクセス許可が必要です。詳しくは、[AWS Lambda Developer Guide]( デベロッパーガイド)の[[Encryption at rest](https://docs.aws.amazon.com/lambda/latest/dg/security-dataprotection.html#security-privacy-atrest)](保管時の暗号化)を参照してください。

## パラメータ
<a name="lambda-rule-action-parameters"></a>

このアクションを使用して AWS IoT ルールを作成するときは、次の情報を指定する必要があります。

`functionArn`  
呼び出す Lambda 関数の ARN。 には、関数を呼び出すアクセス許可 AWS IoT が必要です。詳細については、「[要件](#lambda-rule-action-requirements)」を参照してください。  
Lambda 関数のバージョンまたはエイリアスを指定しない場合、関数の最新バージョンがシャットダウンされます。Lambda 関数の特定のバージョンをシャットダウンする場合は、バージョンまたはエイリアスを指定できます。バージョンまたはエイリアスを指定するには、Lambda 関数の ARN にバージョンまたはエイリアスを追加します。  

```
arn:aws:lambda:us-east-2:123456789012:function:myLambdaFunction:someAlias
```
バージョニングとエイリアスの詳細については、「[AWS Lambda 関数のバージョン](https://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html)」を参照してください。  
[置換テンプレート](iot-substitution-templates.md)をサポート: API および AWS CLI のみ

## 例
<a name="lambda-rule-action-examples"></a>

次の JSON の例では、 AWS 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 の例では、 AWS 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()}"
                }
            }
        ]
    }
}
```

## 関連情報
<a name="lambda-rule-action-see-also"></a>
+ デ*AWS Lambda ベロッパーガイド*の[「 AWS Lambdaとは](https://docs.aws.amazon.com/lambda/latest/dg/)」
+ [チュートリアル: AWS Lambda 関数を使用して通知をフォーマットする](iot-lambda-rule.md)