aws(学习笔记第三十九课) iot-core
文章目录
- aws(学习笔记第三十九课) iotcore(Internet Of Thing)
- 学习内容:
- 1. 整体架构
- 1.1 代码链接
- 1.2 整体架构(概要)
- 1.3 整体架构(详细 )
- 2. 代码解析
- 2.1 创建`IOT thing`
- 2.2 创建`AWS IOT certificate`证书
- 2.2.1 创建`lambda`需要的`role`
- 2.2.2 创建`lambda`
- 2.2.3 `lambda`的函数处理
- 2.2.4 创建`customResource`
- 2.2.5 创建证书权限(`policy`)
- 2.2.6 将`policy`赋予到证书`certificate`
- 2.2.7 将`certificate`设定到`IOT thing`上
- 2.3 创建`cloudwatch`相关设定
- 2.3.1 创建`IOT`重定向`rule`的权限(`role`)
- 2.3.2 创建`cloudwatch`的`log group`
- 2.3.2 创建`iot_topic_rule`
- 3 开始执行`cdk`
- 3.1 执行`CDK`
- 3.2 准备证书`certificate`和`private key`
- 3.2.1 为什么要准备`certificate`和`private key`
- 3.2.2 保存`certificate`证书和`private key`
- 3.3 确认`AWS IOT`的`endpoint`
- 3.4 `client(device)`端的模拟程序
- 3.5 执行`client(device)`端的模拟程序
- 3.6 删除测试`stack`
aws(学习笔记第三十九课) iotcore(Internet Of Thing)
- 使用
iotcore
学习内容:
- 使用
iotcore
- 学会使用
CA
证书
1. 整体架构
1.1 代码链接
- 代码链接(cdk_iot_thing)
1.2 整体架构(概要)
1.3 整体架构(详细 )
- 创建
AWS IOT things
。 - 定义
customResource
,用来执行lambda
,创建AWS IOT
的certificate
和private key
。 lambda
里面,同时将创建的certificate
和private key
存储到AWS Secret Manager
。- 定义
CdkIOTCloudWatchAccessRole
,用于赋予权限给topicRule
,能够将收到的IOT Message
转发到CloudWatch
。 - 创建
topicRule
,可以将AWS things
接受的message
发送到CloudWatch
。
2. 代码解析
2.1 创建IOT thing
# Environment variablesaccount=Aws.ACCOUNT_IDregion=Aws.REGIONiot_thing_name="CdkThing001"# Create an IoT Thingcfn_thing=iot.CfnThing(self, "MyCdkThing",thing_name=iot_thing_name)
这里,创建IOT thing
,但是topic
不需要特别创建。
2.2 创建AWS IOT certificate
证书
2.2.1 创建lambda
需要的role
这里采用customResource
->lambda
的方式,所以提前创建lambda
执行需要的role
。
# Lambda role for creating certs and keyslambda_role = iam.Role(self, f"{iot_thing_name}LambdaRole", assumed_by=iam.ServicePrincipal("lambda.amazonaws.com"))lambda_role.add_to_policy(iam.PolicyStatement(actions=["secretsmanager:CreateSecret","secretsmanager:DeleteSecret"],resources=["arn:aws:secretsmanager:*:*:secret:*"]))lambda_role.add_to_policy(iam.PolicyStatement(actions=["iot:CreateKeysAndCertificate", "iot:UpdateCertificate"],resources=["*"]))
可以,看出,ServicePrincipal
是lambda.amazonaws.com
,policy
都是和创建iot certificate
证书相关的设定。
2.2.2 创建lambda
# Custom Lambda to create IoT certificate and storing in secrets managercert_lambda = _lambda.Function(self,"CertHandler",function_name="CertHandlerFunction",runtime=_lambda.Runtime.PYTHON_3_11,code=_lambda.Code.from_asset("lambda"),handler="cert_handler.lambda_handler",role=lambda_role,log_retention=logs.RetentionDays.ONE_DAY,timeout=Duration.seconds(60))
2.2.3 lambda
的函数处理
def on_create(event):response = iot.create_keys_and_certificate(setAsActive=True)certificate_id = response['certificateId']certificate_pem = response['certificatePem']key_pair = response['keyPair']if not certificate_id or not certificate_pem or not key_pair:raise ValueError('Faile