You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BASH脚本创建AWS IoT Thing后,如何获取ThingID并存储

获取AWS IoT Thing ID并存储到BASH变量

看起来你已经搞定了证书生成的部分,但要拿到Thing ID并存进变量里,得靠AWS CLI配合JSON解析工具jq来实现,同时也得把证书和Thing关联起来,不然mosquitto连接会出问题。我给你一步步拆解:

1. 先准备好必要工具

  • 确保AWS CLI已经安装,并且配置了能操作IoT服务的权限(比如iot:CreateThing、iot:RegisterCertificate这类权限)
  • 安装jq工具(Linux发行版可以用apt install jq/yum install jq,macOS用brew install jq就能搞定)

2. 创建Thing并捕获Thing ID

在你的证书生成代码之后,加入这段命令,把Thing ID存入变量:

# 替换成你想要的Thing名称
THING_NAME="MyCustomDeviceThing"
# 创建Thing,用jq提取出纯字符串格式的thingId,存入THING_ID变量
THING_ID=$(aws iot create-thing --thing-name "$THING_NAME" | jq -r '.thingId')

# 验证变量是否正确获取
echo "成功创建Thing,ID是:$THING_ID"

这里jq -r的作用是把JSON里的thingId值以无引号的纯字符串形式提取出来,方便后续直接使用。

3. 解决mosquitto连接失败的问题

你第一次调用mosquitto_pub报错连接丢失,大概率是证书没和Thing绑定,也没有对应的IoT Policy允许连接。得补上这些关键步骤:

# 1. 把生成的证书注册到AWS IoT,获取证书ARN
CERT_ARN=$(aws iot register-certificate --certificate-pem file://deviceCert.crt --ca-certificate-pem file://rootCA.pem --set-as-active | jq -r '.certificateArn')

# 2. 将证书和刚才创建的Thing关联起来
aws iot attach-thing-principal --thing-name "$THING_NAME" --principal "$CERT_ARN"

# 3. 给证书附加IoT Policy(你得先创建好这个Policy,比如允许连接、发布到foo/bar主题)
# 假设你的Policy名叫"MyIoTPolicy",内容要包含允许iot:Connect、iot:Publish到对应主题的权限
aws iot attach-policy --policy-name "MyIoTPolicy" --target "$CERT_ARN"

另外,别忘了给私钥设置正确的权限,不然mosquitto无法读取:

chmod 600 deviceCert.key

4. 用Thing ID发布消息

现在你就可以在mosquitto的消息里直接使用$THING_ID变量了:

mosquitto_pub --cafile root.cert --cert deviceCertAndCACert.crt --key deviceCert.key -h xxxxx.iot.us-east-2.amazonaws.com -p 8883 -q 1 -t foo/bar -I anyclientID --tls-version tlsv1.2 -m "Thing $THING_ID 正在运行" -d

最后小提醒:如果不确定你的AWS IoT端点是否正确,可以用这个命令获取官方ATS端点:

aws iot describe-endpoint --endpoint-type iot:Data-ATS

内容的提问来源于stack exchange,提问作者IgorAlves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 11:12:48