0

场景是这样的

我有一个微服务,它调用一个LAMBDA函数,其作用是从AWS IOT中删除东西。

有没有办法可以使用 lambda 函数在 AWS IOT 中执行操作?

任何关于此的文章、博客都会有很大的帮助,因为我无法在网络上找到任何集成文档。

4

1 回答 1

0

我找到了一种通过 API 使用 lambda 函数在 AWS IOT 中执行多项操作的方法。

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iot.html#IoT.Client.delete_thing_group

上面的链接有关于 API 的描述,这将在这种情况下有所帮助。从 IOT 中删除事物的示例 lambda 函数脚本是

import json
import boto3


def lambda_handler(event, context):
    thing_name = event['thing_name']
    delete_thing(thing_name=thing_name)

def delete_thing(thing_name):
    c_iot = boto3.client('iot')
    print("  DELETING {}".format(thing_name))
    try:
        r_principals = c_iot.list_thing_principals(thingName=thing_name)
    except Exception as e:
        print("ERROR listing thing principals: {}".format(e))
        r_principals = {'principals': []}
    print("r_principals: {}".format(r_principals))
    
    for arn in r_principals['principals']:
        cert_id = arn.split('/')[1]
        print("  arn: {} cert_id: {}".format(arn, cert_id))
        r_detach_thing = c_iot.detach_thing_principal(thingName=thing_name, principal=arn)
        print("DETACH THING: {}".format(r_detach_thing))
        
        r_upd_cert = c_iot.update_certificate(certificateId=cert_id, newStatus='INACTIVE')
        print("INACTIVE: {}".format(r_upd_cert))
        
        
        r_del_cert = c_iot.delete_certificate(certificateId=cert_id, forceDelete=True)
        print("  DEL CERT: {}".format(r_del_cert))
    r_del_thing = c_iot.delete_thing(thingName=thing_name)
    print("  DELETE THING: {}\n".format(r_del_thing))
    

这个 lambda 函数的输入将是

{
  "thing_name": "MyIotThing"
}
于 2021-02-05T09:06:51.543 回答