你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
Azure Arc 启用的 Azure IoT 操作预览版目前处于预览状态。 不应在生产环境中使用此预览版软件。
在正式版推出后,你需要部署新的 Azure IoT 操作安装。 无法升级预览版安装。
有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款。
要在 Azure IoT 操作预览版中将数据发送到 Azure Data Lake Storage Gen2,可以配置数据流终结点。 借助此配置,可以指定目标终结点、身份验证方法、表和其他设置。
先决条件
创建 Azure Data Lake Storage Gen2 数据流终结点
要为 Azure Data Lake Storage Gen2 配置数据流终结点,建议使用已启用 Azure Arc 的 Kubernetes 群集的托管标识。 此方法是安全的,并且无需进行机密管理。 也可以使用访问令牌向存储帐户进行身份验证。 如果使用访问令牌,需要创建包含 SAS 令牌的 Kubernetes 机密。
在 IoT 操作门户中,选择“数据流终结点”选项卡。
在“创建新的数据流终结点”下,选择“Azure Data Lake Storage (第二代)”>“新建”。
输入以下用于终结点的设置:
设置 |
说明 |
Name |
数据流终结点的名称。 |
主机 |
Azure Data Lake Storage Gen2 终结点的主机名,格式为 <account>.blob.core.windows.net 。 将帐户占位符替换为终结点帐户名称。 |
身份验证方法 |
用于身份验证的方法。 选择“系统分配的托管标识”、“用户分配的托管标识”或“访问令牌”。 |
客户端 ID |
用户分配的托管标识的客户端 ID。 如果使用的是“用户分配的托管标识”,则为必需。 |
租户 ID |
用户分配的托管标识的租户 ID。 如果使用的是“用户分配的托管标识”,则为必需。 |
访问令牌机密名称 |
包含 SAS 令牌的 Kubernetes 机密的名称。 如果使用的是访问令牌,则是必需的。 |
选择“应用”来预配终结点。
创建包含以下内容的 Bicep .bicep
文件。
param aioInstanceName string = '<AIO_INSTANCE_NAME>'
param customLocationName string = '<CUSTOM_LOCATION_NAME>'
param endpointName string = '<ENDPOINT_NAME>'
param host string = 'https://<ACCOUNT>.blob.core.windows.net'
resource aioInstance 'Microsoft.IoTOperations/instances@2024-09-15-preview' existing = {
name: aioInstanceName
}
resource customLocation 'Microsoft.ExtendedLocation/customLocations@2021-08-31-preview' existing = {
name: customLocationName
}
resource adlsGen2Endpoint 'Microsoft.IoTOperations/instances/dataflowEndpoints@2024-09-15-preview' = {
parent: aioInstance
name: endpointName
extendedLocation: {
name: customLocation.id
type: 'CustomLocation'
}
properties: {
endpointType: 'DataLakeStorage'
dataLakeStorageSettings: {
host: host
authentication: {
method: 'SystemAssignedManagedIdentity'
systemAssignedManagedIdentitySettings: {}
}
}
}
}
然后,通过 Azure CLI 进行部署。
az deployment group create --resource-group <RESOURCE_GROUP> --template-file <FILE>.bicep
创建具有以下内容的 Kubernetes 清单 .yaml
文件。
apiVersion: connectivity.iotoperations.azure.com/v1beta1
kind: DataflowEndpoint
metadata:
name: <ENDPOINT_NAME>
namespace: azure-iot-operations
spec:
endpointType: DataLakeStorage
dataLakeStorageSettings:
host: https://<ACCOUNT>.blob.core.windows.net
authentication:
method: SystemAssignedManagedIdentity
systemAssignedManagedIdentitySettings: {}
然后,将清单文件应用到 Kubernetes 群集。
kubectl apply -f <FILE>.yaml
如果需要替代系统分配的托管标识受众,请参阅“系统分配的托管标识”部分。
使用访问令牌身份验证
按照“访问令牌”部分中的步骤获取存储帐户的 SAS 令牌,并将其存储在 Kubernetes 机密中。
然后,创建 DataflowEndpoint 资源并指定访问令牌身份验证方法。 在这里,请将 <SAS_SECRET_NAME>
替换为包含 SAS 令牌的机密的名称,以及其他占位符值。
在 IoT 操作门户中,选择“数据流终结点”选项卡。
在“创建新的数据流终结点”下,选择“Azure Data Lake Storage (第二代)”>“新建”。
输入以下用于终结点的设置:
设置 |
说明 |
Name |
数据流终结点的名称。 |
主机 |
Azure Data Lake Storage Gen2 终结点的主机名,格式为 <account>.blob.core.windows.net 。 将帐户占位符替换为终结点帐户名称。 |
身份验证方法 |
用于身份验证的方法。 选择“访问令牌”。 |
同步的机密名称 |
与 ADLSv2 终结点同步的 Kubernetes 机密的名称。 |
访问令牌机密名称 |
包含 SAS 令牌的 Kubernetes 机密的名称。 |
选择“应用”来预配终结点。
创建包含以下内容的 Bicep .bicep
文件。
param aioInstanceName string = '<AIO_INSTANCE_NAME>'
param customLocationName string = '<CUSTOM_LOCATION_NAME>'
param endpointName string = '<ENDPOINT_NAME>'
param host string = 'https://<ACCOUNT>.blob.core.windows.net'
resource aioInstance 'Microsoft.IoTOperations/instances@2024-09-15-preview' existing = {
name: aioInstanceName
}
resource customLocation 'Microsoft.ExtendedLocation/customLocations@2021-08-31-preview' existing = {
name: customLocationName
}
resource adlsGen2Endpoint 'Microsoft.IoTOperations/instances/dataflowEndpoints@2024-09-15-preview' = {
parent: aioInstance
name: endpointName
extendedLocation: {
name: customLocation.id
type: 'CustomLocation'
}
properties: {
endpointType: 'DataLakeStorage'
dataLakeStorageSettings: {
host: host
authentication: {
method: 'AccessToken'
accessTokenSettings: {
secretRef: '<SAS_SECRET_NAME>'
}
}
}
}
}
然后,通过 Azure CLI 进行部署。
az deployment group create --resource-group <RESOURCE_GROUP> --template-file <FILE>.bicep
创建具有以下内容的 Kubernetes 清单 .yaml
文件。
apiVersion: connectivity.iotoperations.azure.com/v1beta1
kind: DataflowEndpoint
metadata:
name: <ENDPOINT_NAME>
namespace: azure-iot-operations
spec:
endpointType: DataLakeStorage
dataLakeStorageSettings:
host: https://<ACCOUNT>.blob.core.windows.net
authentication:
method: AccessToken
accessTokenSettings:
secretRef: <SAS_SECRET_NAME>
然后,将清单文件应用到 Kubernetes 群集。
kubectl apply -f <FILE>.yaml
可用身份验证方法
以下身份验证方法适用于 Azure Data Lake Storage Gen2 终结点。
有关通过配置 Azure 密钥保管库和启用工作负载标识来启用安全设置的详细信息,请参阅在 Azure IoT 操作预览版部署中启用安全设置。
系统分配的托管标识
对于 Azure IoT 操作,建议的身份验证方法是使用系统分配的托管标识。 Azure IoT 操作会自动创建托管标识,并将其分配给已启用 Azure Arc 的 Kubernetes 群集。 它无需进行机密管理,并允许进行无缝身份验证。
在创建数据流终结点之前,请将对存储帐户具有写入权限的角色分配给托管标识。 例如,可以分配存储 Blob 数据参与者角色。 要详细了解如何向 Blob 分配角色,请参阅使用 Microsoft Entra ID 授予对 blob 的访问权限。
- 在 Azure 门户中,转到 Azure IoT 操作实例并选择“概述”。
- 复制“Azure IoT 操作 Arc 扩展”后列出的扩展的名称。 例如 azure-iot-operations-xxxx7。
- 使用扩展的名称在 Azure 门户中搜索托管标识。 例如,搜索 azure-iot-operations-xxxx7。
- 将角色分配给 Azure IoT Operations Arc 扩展托管标识,以授予写入存储帐户的权限,例如“存储 Blob 数据参与者”。 要了解详细信息,请参阅使用 Microsoft Entra ID 授予对 blob 的访问权限。
- 创建 DataflowEndpoint 资源并指定托管标识身份验证方法。
在操作体验数据流终结点设置页中,选择“基本”选项卡,然后选择“身份验证方法”>“系统分配的托管标识”。
大多数情况下,无需指定服务受众。 不指定受众将会创建一个托管标识,其默认受众范围限定为存储帐户。
dataLakeStorageSettings: {
authentication: {
method: 'SystemAssignedManagedIdentity'
systemAssignedManagedIdentitySettings: {}
}
}
dataLakeStorageSettings:
authentication:
method: SystemAssignedManagedIdentity
systemAssignedManagedIdentitySettings: {}
如果需要替代系统分配的托管标识受众,则可以指定 audience
设置。
大多数情况下,无需指定服务受众。 不指定受众将会创建一个托管标识,其默认受众范围限定为存储帐户。
dataLakeStorageSettings: {
authentication: {
method: 'SystemAssignedManagedIdentity'
systemAssignedManagedIdentitySettings: {
audience: 'https://<ACCOUNT>.blob.core.windows.net'
}
}
}
dataLakeStorageSettings:
authentication:
method: SystemAssignedManagedIdentity
systemAssignedManagedIdentitySettings:
audience: https://<ACCOUNT>.blob.core.windows.net
访问令牌
使用访问令牌是替代性身份验证方法。 此方法要求使用 SAS 令牌创建 Kubernetes 机密,并在 DataflowEndpoint 资源中引用该机密。
获取 Azure Data Lake Storage Gen2 (ADLSv2) 帐户的 SAS 令牌。 例如,使用 Azure 门户浏览到存储帐户。 在左侧菜单中,选择“安全性 + 网络”>“共享访问签名”。 使用下表设置所需的权限。
参数 |
启用的设置 |
允许的服务 |
Blob |
允许的资源类型 |
对象, 容器 |
允许的权限 |
读取, 写入, 删除, 列出, 创建 |
要增强安全性并遵循最低特权原则,可以为特定容器生成 SAS 令牌。 要防止身份验证错误,请确保 SAS 令牌中指定的容器与配置中的数据流目标设置匹配。
dataLakeStorageSettings: {
authentication: {
method: 'AccessToken'
accessTokenSettings: {
secretRef: '<SAS_SECRET_NAME>'
}
}
}
使用 SAS 令牌创建 Kubernetes 机密。
kubectl create secret generic <SAS_SECRET_NAME> -n azure-iot-operations \
--from-literal=accessToken='sv=2022-11-02&ss=b&srt=c&sp=rwdlax&se=2023-07-22T05:47:40Z&st=2023-07-21T21:47:40Z&spr=https&sig=<signature>'
dataLakeStorageSettings:
authentication:
method: AccessToken
accessTokenSettings:
secretRef: <SAS_SECRET_NAME>
用户分配的托管标识
若要使用用户托管的标识进行身份验证,必须先部署已启用安全设置的 Azure IoT 操作。 若要了解详细信息,请参阅在 Azure IoT 操作预览版部署中启用安全设置。
然后,指定用户分配的托管标识身份验证方法以及托管标识的客户端 ID、租户 ID 和范围。
在操作体验数据流终结点设置页中,选择“基本”选项卡,然后选择“身份验证方法”>“用户分配的托管标识”。
在相应的字段中输入用户分配的托管标识客户端 ID 和租户 ID。
dataLakeStorageSettings: {
authentication: {
method: 'UserAssignedManagedIdentity'
userAssignedManagedIdentitySettings: {
cliendId: '<ID>'
tenantId: '<ID>'
// Optional, defaults to 'https://storage.azure.com/.default'
// scope: 'https://<SCOPE_URL>'
}
}
}
dataLakeStorageSettings:
authentication:
method: UserAssignedManagedIdentity
userAssignedManagedIdentitySettings:
clientId: <ID>
tenantId: <ID>
# Optional, defaults to 'https://storage.azure.com/.default'
# scope: https://<SCOPE_URL>
在这里,范围是可选的,默认为 https://storage.azure.com/.default
。 如果需要替代默认范围,请通过 Bicep 或 Kubernetes 清单指定 scope
设置。
高级设置
可以为 Azure Data Lake Storage Gen2 终结点设置高级设置,例如批处理延迟和消息计数。
使用 batching
设置配置消息的最大数量和消息发送到目标之前的最大延迟。 如果要优化网络带宽并减少对目标的请求数,此设置会非常有用。
字段 |
说明 |
必须 |
latencySeconds |
将消息发送到目标之前要等待的最大秒数。 默认值为 60 秒。 |
否 |
maxMessages |
要发送到目标的最大消息数。 默认值为 100000 条消息。 |
否 |
例如,要将最大消息数配置为 1000,并将最大延迟配置为 100 秒,请使用以下设置:
在操作体验中,选择数据流终结点的“高级”选项卡。
dataLakeStorageSettings: {
batching: {
latencySeconds: 100
maxMessages: 1000
}
}
dataLakeStorageSettings:
batching:
latencySeconds: 100
maxMessages: 1000
后续步骤
要了解有关数据流的详细信息,请参阅创建数据流。