在香港阿里公有云环境下的DataWorks中,UDF(用户自定义函数)默认无法向公网发送请求。这是由于DataWorks的沙箱保护机制限制了UDF的所有网络访问能力。以下是详细说明及相关解决方案:
1. 问题原因
- DataWorks对UDF实施了严格的沙箱保护机制,禁止UDF直接访问公网或内网资源。这种限制旨在保障数据安全和任务运行的稳定性。
- 如果UDF尝试访问公网(例如调用外部API或发送消息到公网服务),会触发“Network is unreachable”错误。
2. 解决方案
为了实现UDF对外部数据的访问需求,可以通过以下方式解决:
方案一:将外部数据上传为MaxCompute资源
- 将需要访问的外部数据提前下载并上传为MaxCompute资源(如文件资源或表资源)。
- UDF通过读取这些资源来间接获取数据,从而避免直接访问公网。
- 适用场景:适用于数据量较小且可以提前准备的场景。
方案二:使用Serverless资源组并配置公网访问
- 如果必须通过公网访问外部数据源,可以使用Serverless资源组,并通过配置公网NAT网关和弹性IP(EIP)来赋予资源组公网访问能力。
- 操作步骤:
- 登录DataWorks控制台,进入目标地域的资源组列表页面。
- 找到目标Serverless资源组,单击操作列的网络设置。
- 在网络设置页面中,新增绑定用于数据服务的VPC和交换机。
- 配置公网NAT网关,并绑定弹性IP(EIP),确保资源组具备公网访问能力。
- 注意:Serverless资源组默认不具备公网访问能力,需手动配置公网NAT网关和EIP。
方案三:使用独享资源组
- 独享资源组支持访问公网、阿里云VPC及IDC网络环境下的数据源。
- 如果您的业务场景需要频繁访问公网,建议使用独享资源组,并为其绑定弹性公网IP(EIP)。
- 操作步骤:
- 登录DataWorks控制台,找到目标独享资源组。
- 查看独享资源组的公网出口IP,并将其添加到目标数据源的白名单中。
- 确保独享资源组已绑定弹性公网IP(EIP),以支持公网访问。
3. 重要提醒
- 沙箱限制:即使配置了公网访问能力,UDF本身仍受沙箱保护机制限制,无法直接发起网络请求。因此,推荐优先使用方案一(上传为MaxCompute资源)。
- 资源组选择:如果必须通过公网访问,请根据实际需求选择合适的资源组类型(Serverless或独享资源组)。
- 地域限制:独享资源组目前仅支持部分地域(如华东1、华南1、华北2等),请确认香港地域是否支持独享资源组。
4. 总结
在香港阿里公有云环境下,DataWorks的UDF默认无法直接向公网发送请求。如果需要访问外部数据,建议通过以下方式解决: 1. 将外部数据上传为MaxCompute资源,供UDF间接访问。 2. 使用Serverless资源组并配置公网NAT网关和EIP。 3. 使用独享资源组并绑定弹性公网IP。
请根据具体业务需求选择合适的解决方案,并确保符合DataWorks的安全与网络连通要求。