Lambda
Lambda(lambda) 작업은 AWS Lambda 함수를 사용하여 MQTT 메시지를 전달합니다. AWS IoT는 Lambda 함수를 비동기적으로 호출합니다.
Lambda 작업을 사용하여 규칙을 생성하고 테스트하는 방법을 보여주는 자습서를 따라할 수 있습니다. 자세한 내용은 자습서: AWS Lambda 함수를 사용하여 알림 형식 지정 섹션을 참조하세요.
요구 사항
이 규칙 작업은 다음 요구 사항을 충족해야 합니다.
-
AWS IoT가 Lambda 함수를 호출하려면 AWS IoT에
lambda:InvokeFunction권한을 부여하는 정책을 구성해야 합니다. Lambda 정책이 있는 동일한 AWS 리전에 정의된 Lambda 함수만 호출할 수 있습니다. Lambda 함수는 리소스 기반 정책을 사용합니다. 이때 정책은 Lambda 함수 자체에 직접 연결되어야 합니다.lambda:InvokeFunction권한을 부여하는 정책을 연결하려면 다음 AWS CLI 명령을 사용합니다. 이 명령에서 다음과 같이 바꿉니다.-
function_name을 Lambda 함수의 이름으로 대체합니다. 함수의 리소스 정책을 업데이트하려면 새 권한을 추가 합니다. -
region을 함수의 AWS 리전으로 대체합니다. -
account-id를 규칙이 정의된 AWS 계정 번호로 대체합니다. -
rule-name을 Lambda 작업을 정의하는 AWS IoT 규칙의 이름으로 대체합니다. -
unique_id를 고유 문 식별자로 대체합니다.
중요
source-arn또는source-account을 제공하지 않고 AWS IoT 보안 주체의 권한을 추가할 경우 Lambda 작업을 포함한 규칙을 생성하는 모든 AWS 계정은 AWS IoT로부터 Lambda 함수를 호출하는 규칙을 활성화할 수 있습니다.자세한 내용은 AWS Lambda 권한을 참조하세요.
aws lambda add-permission \ --function-namefunction_name\ --regionregion\ --principal iot.amazonaws.com \ --source-arn arn:aws:iot:region:account-id:rule/rule_name\ --source-accountaccount-id--statement-idunique_id--action "lambda:InvokeFunction" -
-
AWS IoT 콘솔을 사용하여 Lambda 규칙 작업에 대한 규칙을 생성하면, Lambda 함수가 자동으로 트리거됩니다. 대신해서 AWS CloudFormation를
AWS::IoT::TopicRule LambdaAction과 함께 사용하는 경우,AWS::lambda::Permission리소스를 추가해야 합니다. 그런 다음 추가된 리소스는 사용자에게 Lambda 함수를 트리거할 수 있는 권한을 부여합니다.다음 코드는 이 리소스를 추가하는 방법을 보여주는 예제입니다. 대체 예시:
-
function_name을 Lambda 함수의 이름으로 대체합니다. -
region을 함수의 AWS 리전으로 대체합니다. -
account-id를 규칙이 정의된 AWS 계정 번호로 대체합니다. -
rule-name을 Lambda 작업을 정의하는 AWS IoT 규칙의 이름으로 대체합니다.
Type: AWS::Lambda::Permission Properties: Action: lambda:InvokeFunction FunctionName: !Reffunction_namePrincipal: "iot.amazonaws.com" SourceAccount:account-idSourceArn: arn:aws:iot:region:account-id:rule/rule_name -
-
AWS KMS 고객 관리형 AWS KMS key를 사용하여 Lambda에서 저장 데이터를 암호화하는 경우 호출자를 대신하여 AWS KMS key를 사용할 수 있는 권한이 서비스에 있어야 합니다. 자세한 내용은 AWS Lambda 개발자 안내서의 저장 시 암호화를 참조하세요.
파라미터
이 작업을 포함한 AWS IoT 규칙을 생성할 때 다음 정보를 지정해야 합니다.
functionArn-
호출할 Lambda 함수의 ARN 입니다. AWS IoT는 함수를 호출할 권한이 있어야 합니다. 자세한 내용은 요구 사항 섹션을 참조하세요.
Lambda 함수의 버전 또는 별칭을 지정하지 않은 경우, 가장 최신 버전의 함수가 종료됩니다. 특정 버전의 Lambda 함수를 종료하고자 하는 경우 버전 또는 별칭을 지정하면 됩니다. 버전 또는 별칭을 지정하려면 Lambda 함수의 ARN에 버전 또는 별칭을 추가합니다.
arn:aws:lambda:us-east-2:123456789012:function:myLambdaFunction:someAlias버전 관리 및 별칭에 대한 자세한 내용은 AWS Lambda 함수 버전 관리 및 별칭을 참조하세요.
대체 템플릿 지원: API 및 AWS CLI만
예시
다음 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()}" } } ] } }
다음 사항도 참조하세요.
-
AWS Lambda 개발자 가이드의 AWS Lambda란 무엇인가요?