[AWS CloudFormation] IoT 규칙 정의
4814 단어 samCloudFormationAWS
AWS::IoT::TopicRule을 사용한 IoT 규칙 정의
구문에 대해서는 공식 문서 참조
다만, 이하와 같이 기재되어 있다 YAML
예가 YAML
영어 사이트의 경우는 JSON
예는 제대로 YAML
단, bool 값의 개소가 YAML
라고 문자열로 되어 있다(대개는 'true'
그래서 다음은 실제 IoT 규칙 정의
# IoTルール
EdgeRecvMessageTopicRule:
Type: AWS::IoT::TopicRule
Properties:
TopicRulePayload:
RuleDisabled: false
Sql: SELECT * FROM '+/info'
Actions: # IoTルールに合致した場合に実行するアクション(今回はLambda)
- Lambda:
FunctionArn: !GetAtt EdgeRecvMessageHook.Arn
# IoTルールに合致した場合にフックされるLambda定義
EdgeRecvMessageHook:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub '${StackName}_EdgeRecvMessageHook'
CodeUri: Edge-Recv-Message/
Handler: function.lambda_handler
Runtime: python3.8
# IoTからLambdaを実行する権限付与定義
EdgeRecvMessageHookPermission:
Type: AWS::Lambda::Permission
Properties:
Action: lambda:InvokeFunction
FunctionName: !GetAtt EdgeRecvMessageHook.Arn
Principal: iot.amazonaws.com
IoT 규칙의 이름 정보
EdgeRecvMessageTopicRule:
Type: AWS::IoT::TopicRule
Properties:
RuleName:
!Sub '${StackName}_EdgeRecvMessage'
TopicRulePayload:
RuleDisabled: false
Sql: SELECT * FROM '+/info'
Actions:
- Lambda:
FunctionArn: !GetAtt EdgeRecvMessageHook.Arn
위와 같이 스택 이름을 prefix로 했다 true
로 하려고 생각했지만,
스택 이름에 RuleName
가 포함되어 있기 때문에 오류가 발생했습니다.
IoT 규칙의 이름에는 -
를 사용할 수 있지만 _
는 사용할 수 없습니다.
반대로 CloudFormation의 스택 이름에는 -
를 사용할 수 있지만 -
는 사용할 수 없습니다.
덧붙여서 S3 버킷명은 스택명과 같이, _
(은)는 사용할 수 있지만, -
(은)는 사용할 수 없다.
_
는 필수 항목이 아니기 때문에, 자동 생성되는 이름으로 도망치는 손은 있어.
자동 생성된 룰명에는 prefix로서 스택명으로부터 RuleName
(을)를 제외한 캐릭터 라인이 붙는다.
Reference
이 문제에 관하여([AWS CloudFormation] IoT 규칙 정의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takmot/items/043bd3be03e20d204947
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# IoTルール
EdgeRecvMessageTopicRule:
Type: AWS::IoT::TopicRule
Properties:
TopicRulePayload:
RuleDisabled: false
Sql: SELECT * FROM '+/info'
Actions: # IoTルールに合致した場合に実行するアクション(今回はLambda)
- Lambda:
FunctionArn: !GetAtt EdgeRecvMessageHook.Arn
# IoTルールに合致した場合にフックされるLambda定義
EdgeRecvMessageHook:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub '${StackName}_EdgeRecvMessageHook'
CodeUri: Edge-Recv-Message/
Handler: function.lambda_handler
Runtime: python3.8
# IoTからLambdaを実行する権限付与定義
EdgeRecvMessageHookPermission:
Type: AWS::Lambda::Permission
Properties:
Action: lambda:InvokeFunction
FunctionName: !GetAtt EdgeRecvMessageHook.Arn
Principal: iot.amazonaws.com
EdgeRecvMessageTopicRule:
Type: AWS::IoT::TopicRule
Properties:
RuleName:
!Sub '${StackName}_EdgeRecvMessage'
TopicRulePayload:
RuleDisabled: false
Sql: SELECT * FROM '+/info'
Actions:
- Lambda:
FunctionArn: !GetAtt EdgeRecvMessageHook.Arn
Reference
이 문제에 관하여([AWS CloudFormation] IoT 규칙 정의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takmot/items/043bd3be03e20d204947텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)