Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
客户端设备身份验证
客户端设备身份验证组件 (aws.greengrass.clientdevices.Auth
) 对客户端设备进行身份验证并授权客户端设备操作。
客户端设备是本地IoT 设备,它们连接到 Greengrass 核心设备以发送 MQTT 消息和数据进行处理。有关更多信息,请参阅与本地 IoT 设备互动:
版本
此组件有以下版本:
客户端设备身份验证版本 2.3.0 已停产。强烈建议您升级为客户端设备身份验证版本 2.3.1。
-
2.3.x
-
2.2.x
-
2.1.1.0
-
2.0.0 x
类型
此组件是插件组件 (aws.greengrass.plugin
)。Greengrass 核心在与核心相同的 Java 虚拟机 (JVM) 中运行此组件。当你在核心设备上更改此组件的版本时,nucleus 会重新启动。
该组件使用与 Greengrass 核心相同的日志文件。有关更多信息,请参阅监控Amazon IoT Greengrass日志:
有关更多信息,请参阅组件类型:
操作系统
要求
此组件有以下要求:
-
Greengrass 服务角色必须与您关联Amazon Web Services 账户并允许该iot:DescribeCertificate
权限。
-
核心设备的Amazon IoT策略必须允许以下权限:
-
greengrass:GetConnectivityInfo
,其中资源包括运行此组件的核心设备的 ARN
-
greengrass:VerifyClientDeviceIoTCertificateAssociation
,其中资源包括各个设备的 Amazon Resource Name (ARN)。
-
greengrass:VerifyClientDeviceIdentity
-
greengrass:PutCertificateAuthorities
-
iot:Publish
,其中资源包括以下 MQTT 主题的 ARN:
-
iot:Subscribe
,其中资源包括以下 MQTT 主题筛选器的 ARN:
-
iot:Receive
,其中资源包括以下 MQTT 主题的 ARN:
有关更多信息,请参阅 数据层面操作的 Amazon IoT 策略 和 支持客户端设备的最低Amazon IoT政策。
-
(可选)要使用离线身份验证,Amazon IoT Greengrass服务使用的Amazon Identity and Access Management (IAM) 角色必须包含以下权限:
端点和端口
除了基本操作所需的端点和端口外,此组件还必须能够对以下端点和端口执行出站请求。有关更多信息,请参阅允许设备流量通过代理或防火墙:
Endpoint |
端口 |
必填 |
描述 |
iot.region .amazonaws.com
|
443 |
是 |
用于获取有关Amazon IoT事物证书的信息。
|
附属物
部署组件时,Amazon IoT Greengrass还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖项的要求才能成功部署该组件。本节列出了此组件的已发布版本的依赖关系以及为每个依赖项定义组件版本的语义版本限制。您还可以在Amazon IoT Greengrass控制台中查看组件每个版本的依赖关系。在组件详细信息页面上,查找 “依赖关系” 列表。
- 2.3.1 and 2.3.2
-
下表列出了此组件版本 2.3.1 和 2.3.2 的依赖关系。
- 2.3.0
-
下表列出了此组件版本 2.3.0 的依赖关系。
- 2.2.3
-
下表列出了此组件版本 2.2.3 的依赖关系。
- 2.2.2
-
下表列出了此组件版本 2.2.2 的依赖关系。
- 2.2.1
-
下表列出了此组件版本 2.2.1 的依赖关系。
- 2.2.0
-
下表列出了此组件版本 2.2.0 的依赖关系。
- 2.1.0
-
下表列出了此组件版本 2.1.0 的依赖关系。
- 2.0.4
-
下表列出了此组件版本 2.0.4 的依赖关系。
- 2.0.2 and 2.0.3
-
下表列出了此组件版本 2.0.2 和 2.0.3 的依赖关系。
- 2.0.1
-
下表列出了此组件版本 2.0.1 的依赖关系。
- 2.0.0
-
下表列出了此组件版本 2.0.0 的依赖关系。
有关组件依赖关系的更多信息,请参阅组件配方参考。
配置
此组件提供以下配置参数,您可以在部署组件时对其进行自定义。
- v2.3.x
-
deviceGroups
-
设备组是有权与核心设备连接和通信的客户端设备组。使用选择规则识别客户端设备组,并定义为每个设备组指定权限的客户端设备授权策略。
此包含以下信息:
formatVersion
-
此配置对象的格式版本。
从以下选项中进行选择:
definitions
-
此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为组成员的选择规则。每个定义还指定了适用于与选择规则匹配的客户端设备的权限策略。如果客户端设备是多个设备组的成员,则该设备的权限由每个组的权限策略组成。
此包含以下信息:
groupNameKey
-
此设备组的名称。groupNameKey
替换为可帮助您识别此设备组的名称。
此包含以下信息:
selectionRule
-
该查询指定哪些客户端设备是该设备组的成员。当客户端设备连接时,核心设备会评估此选择规则,以确定该客户端设备是否为该设备组的成员。如果客户端设备是成员,则核心设备使用此设备组的策略来授权客户端设备的操作。
每个选择规则至少包含一个选择规则子句,该子句是可以匹配客户端设备的单个表达式查询。选择规则使用与Amazon IoT队列索引相同的查询语法。有关选择规则语法的更多信息,请参阅Amazon IoT Core开发者指南中的Amazon IoT舰队索引查询语法。
使用*
通配符将多个客户端设备与一个选择规则子句进行匹配。可以在事物名称的末尾使用此通配符来匹配名称以您指定的字符串开头的客户端设备。您也可以使用此通配符匹配所有客户端设备。
要选择包含冒号字符 (:
) 的值,请使用反斜杠字符 (\
) 对冒号进行转义。在 JSON 等格式中,必须对反斜杠字符进行转义,因此在冒号字符之前输入两个反斜杠字符。例如,指定thingName:
MyTeam\\:ClientDevice1
选择名称为的事物MyTeam:ClientDevice1
。
您可以指定:
例 选择示例
以下选择规则与名称为MyClientDevice1
或的客户端设备相匹配MyClientDevice2
。
thingName: MyClientDevice1 OR thingName: MyClientDevice2
例 选择规则示例(使用通配符)
以下选择规则与名称以开头的客户端设备相匹配MyClientDevice
。
thingName: MyClientDevice*
例 选择规则示例(匹配所有设备)
以下选择规则匹配所有客户端设备。
thingName: *
policyName
-
适用于该设备组中的客户端设备的权限策略。指定您在policies
对象中定义的策略的名称。
policies
-
连接到核心设备的客户端设备的客户端设备授权策略。每个授权策略都指定了一组操作以及客户端设备可以在其中执行这些操作的资源。
此包含以下信息:
policyNameKey
-
该授权的名称。policyNameKey
替换为可帮助您识别此授权策略的名称。您可以使用此策略名称来定义适用于设备组的策略。
此包含以下信息:
statementNameKey
-
该策略的名称。statementNameKey
替换为有助于您识别此政策声明的名称。
此包含以下信息:
operations
-
允许使用此策略中资源的操作列表。
您可以包括以下任意操作:
-
mqtt:connect
— 授予连接到核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。
此操作支持以下资源:
-
mqtt:publish
— 授予向主题发布 MQTT 消息的权限。
此操作支持以下资源:
-
mqtt:subscribe
— 授予订阅 MQTT 主题过滤器以接收消息的权限。
此操作支持以下资源:
-
mqtt:topicfilter:mqttTopicFilter
— 根据客户端设备可以订阅消息的 MQTT 主题限制访问权限。mqttTopicFilter
替换为要使用的主题过滤器。
此资源支持+
和#
MQTT 主题通配符。有关更多信息,请参阅Amazon IoT Core开发者指南中的 MQTT 主题。
客户端设备可以订阅您允许的确切主题过滤器。例如,如果您允许客户端设备订阅mqtt:topicfilter:client/+/status
资源,则客户端设备可以订阅client/+/status
但不能client/client1/status
。
您可以指定通*
配符以允许访问所有操作。
resources
-
允许在本策略中执行操作的资源列表。指定与该策略中的操作相对应的资源。例如,您可以在指定mqtt:publish
操作的策略中指定 MQTT 主题资源列表 (mqtt:topic:mqttTopic
)。
您可以指定通*
配符以允许访问所有资源。您不能使用*
通配符匹配部分资源标识符。例如,您可以指定"resources": "*"
,但不能指定"resources": "mqtt:clientId:*"
。
statementDescription
-
(可选)此政策声明的描述。
certificates
-
(可选)此核心设备的证书配置选项。此包含以下信息:
serverCertificateValiditySeconds
-
(可选)本地 MQTT 服务器证书过期的时间长度(以秒为单位)。您可以配置此选项来自定义客户端设备断开连接和重新连接到核心设备的频率。
此组件会在本地 MQTT 服务器证书过期前 24 小时轮换该证书。MQTT 代理,例如 M oquette MQTT 代理组件,会生成新证书并重新启动。发生这种情况时,所有连接到该核心设备的客户端设备都将断开连接。客户端设备可以在短时间后重新连接到核心设备。
原定设置:604800
(7 天)
最小值:172800
(2 天)
最大值:864000
(10 天)
performance
-
(可选)此核心设备的性能配置选项。此包含以下信息:
maxActiveAuthTokens
-
(可选)活动客户端设备授权令牌的最大数量。您可以增加此数字,使更多的客户端设备无需重新进行身份验证即可连接到单个核心设备。
默认值:2500
cloudRequestQueueSize
-
(可选)在此组件拒绝Amazon Web Services 云请求之前排队的最大请求数。
默认值:100
maxConcurrentCloudRequests
-
(可选)要发送到的最大并发请求数Amazon Web Services 云。在连接大量客户端设备的核心设备上,您可以增加此数字以提高身份验证性能。
默认值:1
certificateAuthority
-
(可选)证书颁发机构配置选项,用您自己的中间证书颁发机构替换核心设备中间颁发机构。此包含以下信息。
- 证书 URI
-
证书的位置。它可以是文件系统 URI,也可以是指向存储在硬件安全模块中的证书的 URI。
certificateChainUri
-
核心设备 CA 的证书链的位置。这应该是返回到您的根 CA 的完整证书链。它可以是文件系统 URI,也可以是指向存储在硬件安全模块中的证书链的 URI。
privateKeyUri
-
核心设备的私钥的位置。这可以是文件系统 URI 或指向存储在硬件安全模块中的证书私钥的 URI。
security
-
(可选)此核心设备的安全配置选项。此包含以下信息。
clientDeviceTrustDurationMinutes
-
在要求对核心设备重新进行身份验证之前,客户端设备的身份验证信息可信的持续时间(以分钟为单位)。默认值为 1。
例 示例:配置合并更新(使用限制性策略)
以下示例配置指定允许名称以开头的MyClientDevice
客户端设备连接和发布/订阅所有主题。
{
"deviceGroups": {
"formatVersion": "2021-03-05",
"definitions": {
"MyDeviceGroup": {
"selectionRule": "thingName: MyClientDevice*",
"policyName": "MyRestrictivePolicy"
}
},
"policies": {
"MyRestrictivePolicy": {
"AllowConnect": {
"statementDescription": "Allow client devices to connect.",
"operations": [
"mqtt:connect"
],
"resources": [
"*"
]
},
"AllowPublish": {
"statementDescription": "Allow client devices to publish on test/topic.",
"operations": [
"mqtt:publish"
],
"resources": [
"mqtt:topic:test/topic"
]
},
"AllowSubscribe": {
"statementDescription": "Allow client devices to subscribe to test/topic/response.",
"operations": [
"mqtt:subscribe"
],
"resources": [
"mqtt:topicfilter:test/topic/response"
]
}
}
}
}
}
例 示例:配置合并更新(使用许可策略)
以下示例配置指定允许所有客户端设备连接和发布/订阅所有主题。
{
"deviceGroups": {
"formatVersion": "2021-03-05",
"definitions": {
"MyPermissiveDeviceGroup": {
"selectionRule": "thingName: *",
"policyName": "MyPermissivePolicy"
}
},
"policies": {
"MyPermissivePolicy": {
"AllowAll": {
"statementDescription": "Allow client devices to perform all actions.",
"operations": [
"*"
],
"resources": [
"*"
]
}
}
}
}
}
- v2.2.x
-
deviceGroups
-
设备组是有权与核心设备连接和通信的客户端设备组。使用选择规则识别客户端设备组,并定义为每个设备组指定权限的客户端设备授权策略。
此包含以下信息:
formatVersion
-
此配置对象的格式版本。
从以下选项中进行选择:
definitions
-
此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为组成员的选择规则。每个定义还指定了适用于与选择规则匹配的客户端设备的权限策略。如果客户端设备是多个设备组的成员,则该设备的权限由每个组的权限策略组成。
此包含以下信息:
groupNameKey
-
此设备组的名称。groupNameKey
替换为可帮助您识别此设备组的名称。
此包含以下信息:
selectionRule
-
该查询指定哪些客户端设备是该设备组的成员。当客户端设备连接时,核心设备会评估此选择规则,以确定该客户端设备是否为该设备组的成员。如果客户端设备是成员,则核心设备使用此设备组的策略来授权客户端设备的操作。
每个选择规则至少包含一个选择规则子句,该子句是可以匹配客户端设备的单个表达式查询。选择规则使用与Amazon IoT队列索引相同的查询语法。有关选择规则语法的更多信息,请参阅Amazon IoT Core开发者指南中的Amazon IoT舰队索引查询语法。
使用*
通配符将多个客户端设备与一个选择规则子句进行匹配。可以在事物名称的末尾使用此通配符来匹配名称以您指定的字符串开头的客户端设备。您也可以使用此通配符匹配所有客户端设备。
要选择包含冒号字符 (:
) 的值,请使用反斜杠字符 (\
) 对冒号进行转义。在 JSON 等格式中,必须对反斜杠字符进行转义,因此在冒号字符之前输入两个反斜杠字符。例如,指定thingName:
MyTeam\\:ClientDevice1
选择名称为的事物MyTeam:ClientDevice1
。
您可以指定:
例 选择示例
以下选择规则与名称为MyClientDevice1
或的客户端设备相匹配MyClientDevice2
。
thingName: MyClientDevice1 OR thingName: MyClientDevice2
例 选择规则示例(使用通配符)
以下选择规则与名称以开头的客户端设备相匹配MyClientDevice
。
thingName: MyClientDevice*
例 选择规则示例(匹配所有设备)
以下选择规则匹配所有客户端设备。
thingName: *
policyName
-
适用于该设备组中的客户端设备的权限策略。指定您在policies
对象中定义的策略的名称。
policies
-
连接到核心设备的客户端设备的客户端设备授权策略。每个授权策略都指定了一组操作以及客户端设备可以在其中执行这些操作的资源。
此包含以下信息:
policyNameKey
-
该授权的名称。policyNameKey
替换为可帮助您识别此授权策略的名称。您可以使用此策略名称来定义适用于设备组的策略。
此包含以下信息:
statementNameKey
-
该策略的名称。statementNameKey
替换为有助于您识别此政策声明的名称。
此包含以下信息:
operations
-
允许使用此策略中资源的操作列表。
您可以包括以下任意操作:
-
mqtt:connect
— 授予连接到核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。
此操作支持以下资源:
-
mqtt:publish
— 授予向主题发布 MQTT 消息的权限。
此操作支持以下资源:
-
mqtt:subscribe
— 授予订阅 MQTT 主题过滤器以接收消息的权限。
此操作支持以下资源:
-
mqtt:topicfilter:mqttTopicFilter
— 根据客户端设备可以订阅消息的 MQTT 主题限制访问权限。mqttTopicFilter
替换为要使用的主题过滤器。
此资源支持+
和#
MQTT 主题通配符。有关更多信息,请参阅Amazon IoT Core开发者指南中的 MQTT 主题。
客户端设备可以订阅您允许的确切主题过滤器。例如,如果您允许客户端设备订阅mqtt:topicfilter:client/+/status
资源,则客户端设备可以订阅client/+/status
但不能client/client1/status
。
您可以指定通*
配符以允许访问所有操作。
resources
-
允许在本策略中执行操作的资源列表。指定与该策略中的操作相对应的资源。例如,您可以在指定mqtt:publish
操作的策略中指定 MQTT 主题资源列表 (mqtt:topic:mqttTopic
)。
您可以指定通*
配符以允许访问所有资源。您不能使用*
通配符匹配部分资源标识符。例如,您可以指定"resources": "*"
,但不能指定"resources": "mqtt:clientId:*"
。
statementDescription
-
(可选)此政策声明的描述。
certificates
-
(可选)此核心设备的证书配置选项。此包含以下信息:
serverCertificateValiditySeconds
-
(可选)本地 MQTT 服务器证书过期的时间长度(以秒为单位)。您可以配置此选项来自定义客户端设备断开连接和重新连接到核心设备的频率。
此组件会在本地 MQTT 服务器证书过期前 24 小时轮换该证书。MQTT 代理,例如 M oquette MQTT 代理组件,会生成新证书并重新启动。发生这种情况时,所有连接到该核心设备的客户端设备都将断开连接。客户端设备可以在短时间后重新连接到核心设备。
原定设置:604800
(7 天)
最小值:172800
(2 天)
最大值:864000
(10 天)
performance
-
(可选)此核心设备的性能配置选项。此包含以下信息:
maxActiveAuthTokens
-
(可选)活动客户端设备授权令牌的最大数量。您可以增加此数字,使更多的客户端设备无需重新进行身份验证即可连接到单个核心设备。
默认值:2500
cloudRequestQueueSize
-
(可选)在此组件拒绝Amazon Web Services 云请求之前排队的最大请求数。
默认值:100
maxConcurrentCloudRequests
-
(可选)要发送到的最大并发请求数Amazon Web Services 云。在连接大量客户端设备的核心设备上,您可以增加此数字以提高身份验证性能。
默认值:1
例 示例:配置合并更新(使用限制性策略)
以下示例配置指定允许名称以开头的MyClientDevice
客户端设备连接和发布/订阅所有主题。
{
"deviceGroups": {
"formatVersion": "2021-03-05",
"definitions": {
"MyDeviceGroup": {
"selectionRule": "thingName: MyClientDevice*",
"policyName": "MyRestrictivePolicy"
}
},
"policies": {
"MyRestrictivePolicy": {
"AllowConnect": {
"statementDescription": "Allow client devices to connect.",
"operations": [
"mqtt:connect"
],
"resources": [
"*"
]
},
"AllowPublish": {
"statementDescription": "Allow client devices to publish on test/topic.",
"operations": [
"mqtt:publish"
],
"resources": [
"mqtt:topic:test/topic"
]
},
"AllowSubscribe": {
"statementDescription": "Allow client devices to subscribe to test/topic/response.",
"operations": [
"mqtt:subscribe"
],
"resources": [
"mqtt:topicfilter:test/topic/response"
]
}
}
}
}
}
例 示例:配置合并更新(使用许可策略)
以下示例配置指定允许所有客户端设备连接和发布/订阅所有主题。
{
"deviceGroups": {
"formatVersion": "2021-03-05",
"definitions": {
"MyPermissiveDeviceGroup": {
"selectionRule": "thingName: *",
"policyName": "MyPermissivePolicy"
}
},
"policies": {
"MyPermissivePolicy": {
"AllowAll": {
"statementDescription": "Allow client devices to perform all actions.",
"operations": [
"*"
],
"resources": [
"*"
]
}
}
}
}
}
- v2.1.x
-
deviceGroups
-
设备组是有权与核心设备连接和通信的客户端设备组。使用选择规则识别客户端设备组,并定义为每个设备组指定权限的客户端设备授权策略。
此包含以下信息:
formatVersion
-
此配置对象的格式版本。
从以下选项中进行选择:
definitions
-
此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为组成员的选择规则。每个定义还指定了适用于与选择规则匹配的客户端设备的权限策略。如果客户端设备是多个设备组的成员,则该设备的权限由每个组的权限策略组成。
此包含以下信息:
groupNameKey
-
此设备组的名称。groupNameKey
替换为可帮助您识别此设备组的名称。
此包含以下信息:
selectionRule
-
该查询指定哪些客户端设备是该设备组的成员。当客户端设备连接时,核心设备会评估此选择规则,以确定该客户端设备是否为该设备组的成员。如果客户端设备是成员,则核心设备使用此设备组的策略来授权客户端设备的操作。
每个选择规则至少包含一个选择规则子句,该子句是可以匹配客户端设备的单个表达式查询。选择规则使用与Amazon IoT队列索引相同的查询语法。有关选择规则语法的更多信息,请参阅Amazon IoT Core开发者指南中的Amazon IoT舰队索引查询语法。
使用*
通配符将多个客户端设备与一个选择规则子句进行匹配。可以在事物名称的末尾使用此通配符来匹配名称以您指定的字符串开头的客户端设备。您也可以使用此通配符匹配所有客户端设备。
要选择包含冒号字符 (:
) 的值,请使用反斜杠字符 (\
) 对冒号进行转义。在 JSON 等格式中,必须对反斜杠字符进行转义,因此在冒号字符之前输入两个反斜杠字符。例如,指定thingName:
MyTeam\\:ClientDevice1
选择名称为的事物MyTeam:ClientDevice1
。
您可以指定:
例 选择示例
以下选择规则与名称为MyClientDevice1
或的客户端设备相匹配MyClientDevice2
。
thingName: MyClientDevice1 OR thingName: MyClientDevice2
例 选择规则示例(使用通配符)
以下选择规则与名称以开头的客户端设备相匹配MyClientDevice
。
thingName: MyClientDevice*
例 选择规则示例(匹配所有设备)
以下选择规则匹配所有客户端设备。
thingName: *
policyName
-
适用于该设备组中的客户端设备的权限策略。指定您在policies
对象中定义的策略的名称。
policies
-
连接到核心设备的客户端设备的客户端设备授权策略。每个授权策略都指定了一组操作以及客户端设备可以在其中执行这些操作的资源。
此包含以下信息:
policyNameKey
-
该授权的名称。policyNameKey
替换为可帮助您识别此授权策略的名称。您可以使用此策略名称来定义适用于设备组的策略。
此对象包含以下信息:
statementNameKey
-
该策略的名称。statementNameKey
替换为有助于您识别此政策声明的名称。
此对象包含以下信息:
operations
-
允许使用此策略中资源的操作列表。
您可以包括以下任意操作:
-
mqtt:connect
— 授予连接到核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。
此操作支持以下资源:
-
mqtt:publish
— 授予向主题发布 MQTT 消息的权限。
此操作支持以下资源:
-
mqtt:subscribe
— 授予订阅 MQTT 主题过滤器以接收消息的权限。
此操作支持以下资源:
-
mqtt:topicfilter:mqttTopicFilter
— 根据客户端设备可以订阅消息的 MQTT 主题限制访问权限。mqttTopicFilter
替换为要使用的主题过滤器。
此资源支持+
和#
MQTT 主题通配符。有关更多信息,请参阅Amazon IoT Core开发者指南中的 MQTT 主题。
客户端设备可以订阅您允许的确切主题过滤器。例如,如果您允许客户端设备订阅mqtt:topicfilter:client/+/status
资源,则客户端设备可以订阅client/+/status
但不能client/client1/status
。
您可以指定通*
配符以允许访问所有操作。
resources
-
允许在本策略中执行操作的资源列表。指定与该策略中的操作相对应的资源。例如,您可以在指定mqtt:publish
操作的策略中指定 MQTT 主题资源列表 (mqtt:topic:mqttTopic
)。
您可以指定通*
配符以允许访问所有资源。您不能使用*
通配符匹配部分资源标识符。例如,您可以指定"resources": "*"
,但不能指定"resources": "mqtt:clientId:*"
。
statementDescription
-
(可选)此政策声明的描述。
certificates
-
(可选)此核心设备的证书配置选项。此对象包含以下信息:
serverCertificateValiditySeconds
-
(可选)本地 MQTT 服务器证书过期的时间长度(以秒为单位)。您可以配置此选项来自定义客户端设备断开连接和重新连接到核心设备的频率。
此组件会在本地 MQTT 服务器证书过期前 24 小时轮换该证书。MQTT 代理,例如 M oquette MQTT 代理组件,会生成新证书并重新启动。发生这种情况时,所有连接到该核心设备的客户端设备都将断开连接。客户端设备可以在短时间后重新连接到核心设备。
原定设置:604800
(7 天)
最小值:172800
(2 天)
最大值:864000
(10 天)
例 示例:配置合并更新(使用限制性策略)
以下示例配置指定允许名称以开头的MyClientDevice
客户端设备连接和发布/订阅所有主题。
{
"deviceGroups": {
"formatVersion": "2021-03-05",
"definitions": {
"MyDeviceGroup": {
"selectionRule": "thingName: MyClientDevice*",
"policyName": "MyRestrictivePolicy"
}
},
"policies": {
"MyRestrictivePolicy": {
"AllowConnect": {
"statementDescription": "Allow client devices to connect.",
"operations": [
"mqtt:connect"
],
"resources": [
"*"
]
},
"AllowPublish": {
"statementDescription": "Allow client devices to publish on test/topic.",
"operations": [
"mqtt:publish"
],
"resources": [
"mqtt:topic:test/topic"
]
},
"AllowSubscribe": {
"statementDescription": "Allow client devices to subscribe to test/topic/response.",
"operations": [
"mqtt:subscribe"
],
"resources": [
"mqtt:topicfilter:test/topic/response"
]
}
}
}
}
}
例 示例:配置合并更新(使用许可策略)
以下示例配置指定允许所有客户端设备连接和发布/订阅所有主题。
{
"deviceGroups": {
"formatVersion": "2021-03-05",
"definitions": {
"MyPermissiveDeviceGroup": {
"selectionRule": "thingName: *",
"policyName": "MyPermissivePolicy"
}
},
"policies": {
"MyPermissivePolicy": {
"AllowAll": {
"statementDescription": "Allow client devices to perform all actions.",
"operations": [
"*"
],
"resources": [
"*"
]
}
}
}
}
}
- v2.0.x
-
deviceGroups
-
设备组是有权与核心设备连接和通信的客户端设备组。使用选择规则识别客户端设备组,并定义为每个设备组指定权限的客户端设备授权策略。
此对象包含以下信息:
formatVersion
-
此配置对象的格式版本。
从以下选项中进行选择:
definitions
-
此核心设备的设备组。每个定义都指定了用于评估客户端设备是否为组成员的选择规则。每个定义还指定了适用于与选择规则匹配的客户端设备的权限策略。如果客户端设备是多个设备组的成员,则该设备的权限由每个组的权限策略组成。
此对象包含以下信息:
groupNameKey
-
此设备组的名称。groupNameKey
替换为可帮助您识别此设备组的名称。
此对象包含以下信息:
selectionRule
-
该查询指定哪些客户端设备是该设备组的成员。当客户端设备连接时,核心设备会评估此选择规则,以确定该客户端设备是否为该设备组的成员。如果客户端设备是成员,则核心设备使用此设备组的策略来授权客户端设备的操作。
每个选择规则至少包含一个选择规则子句,该子句是可以匹配客户端设备的单个表达式查询。选择规则使用与Amazon IoT队列索引相同的查询语法。有关选择规则语法的更多信息,请参阅Amazon IoT Core开发者指南中的Amazon IoT舰队索引查询语法。
使用*
通配符将多个客户端设备与一个选择规则子句进行匹配。可以在事物名称的末尾使用此通配符来匹配名称以您指定的字符串开头的客户端设备。您也可以使用此通配符匹配所有客户端设备。
要选择包含冒号字符 (:
) 的值,请使用反斜杠字符 (\
) 对冒号进行转义。在 JSON 等格式中,必须对反斜杠字符进行转义,因此在冒号字符之前输入两个反斜杠字符。例如,指定thingName:
MyTeam\\:ClientDevice1
选择名称为的事物MyTeam:ClientDevice1
。
您可以指定:
例 选择示例
以下选择规则与名称为MyClientDevice1
或的客户端设备相匹配MyClientDevice2
。
thingName: MyClientDevice1 OR thingName: MyClientDevice2
例 选择规则示例(使用通配符)
以下选择规则与名称以开头的客户端设备相匹配MyClientDevice
。
thingName: MyClientDevice*
例 选择规则示例(匹配所有设备)
以下选择规则匹配所有客户端设备。
thingName: *
policyName
-
适用于该设备组中的客户端设备的权限策略。指定您在policies
对象中定义的策略的名称。
policies
-
连接到核心设备的客户端设备的客户端设备授权策略。每个授权策略都指定了一组操作以及客户端设备可以在其中执行这些操作的资源。
此对象包含以下信息:
policyNameKey
-
该授权的名称。policyNameKey
替换为可帮助您识别此授权策略的名称。您可以使用此策略名称来定义适用于设备组的策略。
此对象包含以下信息:
statementNameKey
-
该策略的名称。statementNameKey
替换为有助于您识别此政策声明的名称。
此对象包含以下信息:
operations
-
允许使用此策略中资源的操作列表。
您可以包括以下任意操作:
-
mqtt:connect
— 授予连接到核心设备的权限。客户端设备必须具有此权限才能连接到核心设备。
此操作支持以下资源:
-
mqtt:publish
— 授予向主题发布 MQTT 消息的权限。
此操作支持以下资源:
-
mqtt:subscribe
— 授予订阅 MQTT 主题过滤器以接收消息的权限。
此操作支持以下资源:
-
mqtt:topicfilter:mqttTopicFilter
— 根据客户端设备可以订阅消息的 MQTT 主题限制访问权限。mqttTopicFilter
替换为要使用的主题过滤器。
此资源支持+
和#
MQTT 主题通配符。有关更多信息,请参阅Amazon IoT Core开发者指南中的 MQTT 主题。
客户端设备可以订阅您允许的确切主题过滤器。例如,如果您允许客户端设备订阅mqtt:topicfilter:client/+/status
资源,则客户端设备可以订阅client/+/status
但不能client/client1/status
。
您可以指定通*
配符以允许访问所有操作。
resources
-
允许在本策略中执行操作的资源列表。指定与该策略中的操作相对应的资源。例如,您可以在指定mqtt:publish
操作的策略中指定 MQTT 主题资源列表 (mqtt:topic:mqttTopic
)。
您可以指定通*
配符以允许访问所有资源。您不能使用*
通配符匹配部分资源标识符。例如,您可以指定"resources": "*"
,但不能指定"resources": "mqtt:clientId:*"
。
statementDescription
-
(可选)此政策声明的描述。
例 示例:配置合并更新(使用限制性策略)
以下示例配置指定允许名称以开头的MyClientDevice
客户端设备连接和发布/订阅所有主题。
{
"deviceGroups": {
"formatVersion": "2021-03-05",
"definitions": {
"MyDeviceGroup": {
"selectionRule": "thingName: MyClientDevice*",
"policyName": "MyRestrictivePolicy"
}
},
"policies": {
"MyRestrictivePolicy": {
"AllowConnect": {
"statementDescription": "Allow client devices to connect.",
"operations": [
"mqtt:connect"
],
"resources": [
"*"
]
},
"AllowPublish": {
"statementDescription": "Allow client devices to publish on test/topic.",
"operations": [
"mqtt:publish"
],
"resources": [
"mqtt:topic:test/topic"
]
},
"AllowSubscribe": {
"statementDescription": "Allow client devices to subscribe to test/topic/response.",
"operations": [
"mqtt:subscribe"
],
"resources": [
"mqtt:topicfilter:test/topic/response"
]
}
}
}
}
}
例 示例:配置合并更新(使用许可策略)
以下示例配置指定允许所有客户端设备连接和发布/订阅所有主题。
{
"deviceGroups": {
"formatVersion": "2021-03-05",
"definitions": {
"MyPermissiveDeviceGroup": {
"selectionRule": "thingName: *",
"policyName": "MyPermissivePolicy"
}
},
"policies": {
"MyPermissivePolicy": {
"AllowAll": {
"statementDescription": "Allow client devices to perform all actions.",
"operations": [
"*"
],
"resources": [
"*"
]
}
}
}
}
}
本地日志文件
该组件使用与 Greengrass nucleus 组件相同的日志文件。
- Linux
-
/greengrass/v2
/logs/greengrass.log
- Windows
-
C:\greengrass\v2
\logs\greengrass.log
更改日志
下表说明每个版本的更改。
Version
|
变更
|
2.3.2
|
|
2.3.1
|
|
2.3.0
|
此版本不再可用。此版本的改进可在该组件的更高版本中找到。
新功能
|
2.2.3
|
Greengrass nuts 版本 2.8.0 |
2.3.0
|
新功能
|
2.2.3
|
Greengrass nuts 版本 2.8.0 |
2.2.2
|
|
2.2.1
|
Greengrass a nuts 版本 2.7.0 |
2.2.0
|
|
2.1.0
|
|
2.0.4
|
Greengrass nuts 版本 2.5.0
|
2.0.3
|
- 错误修复与改进
-
-
现在,如果您轮换核心设备的私钥,则证书会刷新。
-
更新使日志消息更加清晰。
|
2.0.2
|
Greengrass nuts 版本 2.4.0
|
2.0.1
|
Greengrass nuts 版本 2.3.0
|
2.0.0
|
初始版本。
|