华为云用户手册

  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的云安全挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的 IaaS、PaaS 和 SaaS 类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的 IaaS、PaaS 和 SaaS 类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、虚拟主机和访客虚拟机的操作系统,虚拟防火墙、API 网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 子网 子网是虚拟私有云内的IP地址集,可以将虚拟私有云的网段分成若干块,子网划分可以帮助您合理规划IP地址资源。虚拟私有云中的所有云资源都必须部署在子网内。同一个虚拟私有云下,子网网段不可重复。 默认情况下,同一个VPC中,不同子网内的所有实例网络互通。同一个VPC内的子网可以位于不同可用区,不影响通信。比如VPC-A内有子网A01(可用区A)和子网A02(可用区B),子网A01和子网A02的网络默认互通。 子网创建成功后,不支持修改网段,请提前合理规划好子网网段。同一个虚拟私有云内的子网网段不可重复。 创建VPC的时候会创建默认子网,VPC创建完成后,如果您需要创建新的子网,请参见为虚拟私有云创建新的子网。 子网的网段必须在VPC网段范围内,子网网段的掩码长度范围是:所在VPC掩码~29,比如VPC网段为10.0.0.0/16,VPC的掩码为16,则子网的掩码可在16~29范围内选择。 比如VPC-A的网段为10.0.0.0/16,则您可以规划子网A01的网段为10.0.0.0/24,子网A02的网段为10.0.1.0/24,子网A03的网段为10.0.2.0/24。 一个用户在单个区域可创建的虚拟私有云子网数量默认为100个,如果您需要提升配额,请参见如何申请扩大配额? 图1 子网 父主题: 基本概念
  • 混合云部署 场景描述 对于自建本地数据中心(IDC)的用户,由于利旧和平滑演进的原因,并非所有的业务都能放置在云上,这个时候就可以通过如下产品构建混合云,实现云上VPC与云下IDC之间的互连。 表3 连接IDC 云产品 应用场景 描述 相关操作 虚拟专用网络VPN 使用公网低成本连接VPC与本地IDC 基于Internet使用加密隧道将VPC与本地数据中心连接起来。具备成本低、配置简单、即开即用等优点。但它的网络质量依赖Internet。 通过VPN连接VPC 通过企业交换机建立IDC和VPC之间的二层网络 云专线 铺设物理专线高质量连接VPC与本地IDC 使用物理专线将VPC与本地数据中心连接起来。具备低时延、高安全、专用等优点。适用对网络传输质量和安全等级要求较高的场景 。 通过用户专线访问多个VPC 通过企业交换机建立IDC和VPC之间的二层网络 云连接 跨区域的VPC、IDC互连 将要互通的本地IDC关联的云专线加载到已创建的云连接实例中,实现跨区域的VPC、IDC互连。 跨区域VPC互连 多数据中心与多区域VPC互通 搭配服务 弹性云服务器ECS、云专线DC、云连接CC、虚拟专用网络VPN 图5 混合云部署
  • 云上VPC连接 场景描述 对于相同或者不同区域下的VPC需要互通连接时,可通过如下云产品实现。 表2 连接VPC 云产品 应用场景 描述 相关操作 对等连接 同区域的VPC互连 对于同一区域的VPC,可以通过对等连接进行互连,同一账号与不同账号的连接方式略有差异。对等连接免费。 创建同一账户下的对等连接 创建不同账户下的对等连接 云连接 跨区域的VPC互连 对于不同区域的VPC,不区分是否同一账号,都可以互连,跨区域连接实现全球云上网络。 跨区域VPC互连 虚拟专用网络VPN 使用公网低成本连接跨区域VPC 基于Internet使用加密隧道将不同区域的VPC连接起来。具备成本低、配置简单、即开即用等优点。但它的网络质量依赖Internet。 通过VPN连接VPC 搭配服务 弹性云服务器ECS、云连接CC、虚拟专用网络VPN 图4 云上VPC连接
  • 云审计服务支持的VPN操作列表 墨西哥城一/圣保罗一Region不支持云审计服务。 表1 企业版VPN操作列表 操作名称 资源类型 事件名称 创建用户对端网关 customer-gateway createCgw 更新用户对端网关 customer-gateway updateCgw 删除用户对端网关 customer-gateway deleteCgw 创建虚拟专用网络网关 vpn-gateway createVgw 更新虚拟专用网络网关 vpn-gateway updateVgw 删除虚拟专用网络网关 vpn-gateway deleteVgw 包年/包月创建VPN网关 vpn-gateway CreatePrePaidVgw 更新VPN网关状态 vpn-gateway UpdateResourceState 创建虚拟专用网络连接 vpn-connection createVpnConnection 更新虚拟专用网络连接 vpn-connection updateVpnConnection 删除虚拟专用网络连接 vpn-connection deleteVpnConnection 上传网关证书 vgw-certificate createVgwCertificate 更换网关证书 vgw-certificate updateVgwCertificate 创建资源标签 instance createResourceTag 删除资源标签 instance deleteResourceTag 表2 经典版VPN操作列表 操作名称 资源类型 事件名称 创建vpn连接 VpnConnection createVpnConnection 更新vpn连接 VpnConnection updateVpnConnection 删除vpn连接 VpnConnection deleteVpnConnection 创建vpn网关 VpnGw createVpnGw 更新vpn网关 VpnGw updateVpnGw 删除vpn网关 VpnGw deleteVpnGw 父主题: 审计
  • 监控指标 表1 经典版VPN网关支持的监控指标 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) upstream_bandwidth 出网带宽 该指标用于统计测试对象出云平台的网络速度(原指标为上行带宽)。 单位:比特/秒 ≥ 0 bit/s 带宽或弹性公网IP 1分钟 downstream_bandwidth 入网带宽 该指标用于统计测试对象入云平台的网络速度(原指标为下行带宽)。 单位:比特/秒 ≥ 0 bit/s 带宽或弹性公网IP 1分钟 upstream_bandwidth_usage 出网带宽使用率 该指标用于统计测量对象出云平台的带宽使用率,以百分比为单位。 出网带宽使用率=出网带宽指标/购买的带宽大小 0-100% 带宽或弹性公网IP 1分钟 downstream_bandwidth_usage 入网带宽使用率 该指标用于统计测量对象入云平台的带宽使用率,以百分比为单位。 入网带宽使用率=入网带宽指标/购买的带宽大小 说明: 由于华为云在部分站点对10Mbps以下的配置带宽提供10Mbps的入网带宽上限,此时监控的入网带宽使用率会存在大于100%的情况。 EIP使用时修改带宽大小,带宽使用率的指标同步生效会有5~10min的延时。 0-100% 带宽或弹性公网IP 1分钟 up_stream 出网流量 该指标用于统计测试对象出云平台的网络流量(原指标为上行流量)。 单位:字节 ≥ 0 bytes 带宽或弹性公网IP 1分钟 down_stream 入网流量 该指标用于统计测试对象入云平台的网络流量(原指标为下行流量)。 单位:字节 ≥ 0 bytes 带宽或弹性公网IP 1分钟 表2 经典版VPN连接支持的监控指标 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) connection_status VPN连接状态 展示VPN连接的通断状态。 0:未连接状态 1:连接状态 0,1 VPN连接 5分钟
  • 约束与限制 在VPN网关状态处于“创建中”、“更新中”、“删除中”三种状态时,不能进行VPN网关删除操作。 如果VPN网关下存在VPN连接,则无法直接删除VPN网关。您需要先删除VPN网关下的所有VPN连接,然后再删除VPN网关。 如何删除VPN连接,请参见删除VPN连接。 如果VPN网关绑定的EIP计费模式为包年/包月,删除VPN网关时会同步解绑EIP。解绑后弹性公网IP继续保留,若不再使用可在网关删除后释放。 如果VPN网关绑定的EIP计费模式为按需,删除VPN网关时会同步释放EIP。 如果需要保留按需EIP,则您需要先将该EIP解绑,然后再删除VPN网关。如何解绑EIP,请参见解绑弹性公网IP。 如果VPN网关绑定了加入共享带宽的EIP,删除VPN网关时会同步释放EIP,保留共享带宽。
  • 监控指标 表1 企业版VPN网关支持的监控指标 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) gateway_send_pkt_rate 出云包速率 该指标用于统计测量对象平均每秒出云的数据包数量。 ≥ 0 pps 网关 1分钟 gateway_recv_pkt_rate 入云包速率 该指标用于统计测量对象平均每秒入云的数据包数量。 ≥ 0 pps 网关 1分钟 gateway_send_rate 出云带宽 该指标用于统计测量对象平均每秒出云流量。 0-1Gbit/s 网关 1分钟 gateway_recv_rate 入云带宽 该指标用于统计测量对象平均每秒入云流量。 0-1Gbit/s 网关 1分钟 gateway_send_rate_usage 出云带宽使用率 该指标用于统计测量对象出云带宽使用率。 0-100% 网关 1分钟 gateway_recv_rate_usage 入云带宽使用率 该指标用于统计测量对象入云带宽使用率。 0-100% 网关 1分钟 gateway_connection_num 连接数 该指标用于统计测量对象关联VPN连接数。 ≥ 0 网关 1分钟 表2 企业版VPN连接支持的监控指标 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) tunnel_average_latency 隧道往返平均时延 VPN网关与对端网关之间隧道的往返平均时延。 0~5000 ms VPN连接 1分钟 tunnel_max_latency 隧道往返最大时延 VPN网关与对端网关之间隧道的往返最大时延。 0~5000 ms VPN连接 1分钟 tunnel_packet_loss_rate 隧道丢包率 VPN网关与对端网关之间隧道的丢包率。 0~100 % VPN连接 1分钟 link_average_latency 链路往返平均时延 VPN网关与对端网关之间链路的往返平均时延。 0~5000 ms VPN连接 1分钟 link_max_latency 链路往返最大时延 VPN网关与对端网关之间链路的往返最大时延。 0~5000 ms VPN连接 1分钟 link_packet_loss_rate 链路丢包率 VPN网关与对端网关之间链路的丢包率。 0~100 % VPN连接 1分钟 connection_status VPN连接状态 展示VPN连接的通断状态。 0:未连接状态 1:连接状态 2:未知状态 0,1,2 VPN连接 1分钟 recv_pkt_rate 接收包速率 平均每秒接收的数据包数量。 ≥ 0 pps VPN连接 1分钟 send_pkt_rate 发送包速率 平均每秒发送的数据包数量。 ≥ 0 pps VPN连接 1分钟 recv_rate 接收速率 平均每秒接收流量。 0~1Gbit/s VPN连接 1分钟 send_rate 发送速率 平均每秒发送流量。 0~1Gbit/s VPN连接 1分钟 sa_send_pkt_rate SA发送包速率 平均每秒发送的数据包数量 ≥ 0 pps VPN连接SA 1分钟 sa_recv_pkt_rate SA接收包速率 平均每秒接收的数据包数量 ≥ 0 pps VPN连接SA 1分钟 sa_recv_rate SA接收速率 平均每秒接收流量 0~1Gbit/s VPN连接SA 1分钟 sa_send_rate SA发送速率 平均每秒发送流量 0~1Gbit/s VPN连接SA 1分钟
  • 调用API获取项目ID 项目ID还用通过调用查询指定条件下的项目列表API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects”,其中{Endpoint}为IAM的终端节点,可以从地区和终端节点获取。接口的认证鉴权请参见认证鉴权。 响应示例如下,其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "cn-north-4", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" }, "id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" } }
  • 操作步骤 获取接口相关信息: URL格式:/plmworkpublicservice/services/openapi/common/product/queryProductLibrary 发送“https://pbm.ipd.huawei.com/pdmcore/pdmmvpgw/pdmcore/plmworkpublicservice/services/openapi/common/product/queryProductLibrary”。 其中,请求参数如下: 表1 入参 序号 名称 描述 参数位置 数据类型 是否必填 示例值 备注 1 tenantId 租户Id Body String 否 - - 2 params 业务参数 Body JsonObject 是 - - 3 name 配置文件名称 Body String 是 CAD Author - 4 description 配置文件描述 Body String 是 Provides visibility to the Project,Product, Library and Change Tabs and CAD data management functionality. - 5 disabled 启用停用 Body int 是 0 0 - 启用 1 - 停用 6 containerId 容器ID Body String 是 3064154914584 - 7 containerType 容器类型 Body String 是 ty.inteplm.domain.CTyOrgContainer - 请求示例(JSON参数) { "params": { "name": "CAD Author", "containerId": "3021025151015", "containerType": "ty.inteplm.domain.CTyOrgContainer", "description": "Provides visibility to the Project, Product, Library, and Change Tabs and CAD data management functionality.", "disabled": 0 } } 在Request Header中增加“X-Auth-Token”“X-Csrf-Token”。 查看请求响应结果。 请求成功时,响应参数如下: 表2 出参 序号 属性 描述 参数位置 数据类型 示例值 备注 1 success 执行结果 Body String SUCCESS - 2 code 响应码 Body String 200 - 3 message 错误信息 Body String - - 4 data 响应数据 Body String 3064154914584 配置文件的主键 正常响应示例 { "success": "SUCCESS", "code": "200", "data": "3064154914584" }
  • 使用场景 ModelArts提供灵活开放的开发环境,您可以根据实际情况选择。 ModelArts提供了云化版本的Notebook,无需关注安装配置,即开即用,具体参见JupyterLab简介及常用操作。 ModelArts也提供了本地IDE的方式开发模型,通过开启SSH连接,用户本地IDE可以远程连接到ModelArts的Notebook开发环境中,调试和运行代码。本地IDE方式不影响用户的编码习惯,并且可以方便快捷的使用云上的Notebook开发环境。 本地IDE当前支持VS Code、PyCharm、SSH工具。PyCharm和VS Code还分别有专门的插件PyCharm Toolkit、VS Code Toolkit,让远程连接操作更便捷。具体参见VS Code一键连接Notebook。 ModelArts还提供了可视化编排工具ML Studio,用户可以通过拖拉拽的方式开发基于ML Studio引擎的模型,具体参见ML Studio简介。
  • 打开Notebook实例 针对创建好的Notebook实例(即状态为“运行中”的实例),可以打开Notebook并在开发环境中启动编码。 基于不同AI引擎创建的Notebook实例,打开方式不一样。 pytorch、tensorflow、mindspore、tensorflow-mindspore、cylp-cbcpy、rlstudio-ray、mindquantum-mindspore镜像支持以下2种方式访问: 本地IDE使用PyCharm/VS Code/SSH工具,远程连接访问,具体参见VS Code一键连接Notebook。 在线JupyterLab访问,具体参见JupyterLab简介及常用操作。 mlstudio-pyspark镜像仅支持在线JupyterLab访问,具体参见JupyterLab简介及常用操作 mindstudio镜像仅支持在本地使用MobaXterm通过SSH远程访问,具体参见使用MindStudio开发Ascend算子。 modelbox镜像仅支持在本地使用VS Code插件远程访问,具体参见配置本地VSCode连接云上开发环境Modelbox镜像。 创建实例,持久化存储挂载路径为/home/ma-user/work目录。 存放在work目录的内容,在实例停止、重新启动后依然保留,其他目录下的内容不会保留,使用开发环境时建议将需要持久化的数据放在/home/ma-user/work目录。 父主题: 管理Notebook实例
  • 一键切换 一键切换的API实现方式为对基础API进行函数替换,在多进程或者多线程环境中一键切换的API可能会带来一些未知问题,因此建议直接调用moxing API即可实现功能的代码尽量不要用这个一键切换功能。 一键切换的API全局只能执行一次,不要在训练脚本中多次调用,避免导致训练失败。 您可以通过一行代码,将表1中OS的API映射到mox.file下。将以下代码写到启动脚本的最前面,在之后的Python运行中,当调用表格第一列的OS相关的API时,会自动映射到第二列mox.file的API。 1 2 import moxing as mox mox.file.shift('os', 'mox') 在做完shift之后,可以直接通过os.listdir或者open方法操作OBS目录或文件,样例代码如下所示。 1 2 3 4 5 6 7 8 import os import moxing as mox mox.file.shift('os', 'mox') print(os.listdir('obs://bucket_name')) with open('obs://bucket_name/hello_world.txt') as f: print(f.read())
  • API对应关系 Python:指本地使用Python对本地文件的操作接口。支持一键切换为对应的MoXing文件操作接口(mox.file)。 mox.file:指MoXing框架中用于文件操作的接口,其与python接口一一对应关系。 tf.gfile:指MoXing文件操作接口一一对应的TensorFlow相同功能的接口,在MoXing中,无法自动将文件操作接口自动切换为TensorFlow的接口,下表呈现内容仅表示功能类似,帮助您更快速地了解MoXing文件操作接口的功能。 表1 API对应关系 Python(本地文件操作接口) mox.file(MoXing文件操作接口) tf.gfile(TensorFlow文件操作接口) glob.glob mox.file.glob tf.gfile.Glob os.listdir mox.file.list_directory(..., recursive=False) tf.gfile.ListDirectory os.makedirs mox.file.make_dirs tf.gfile.MakeDirs os.mkdir mox.file.mk_dir tf.gfile.MkDir os.path.exists mox.file.exists tf.gfile.Exists os.path.getsize mox.file.get_size - os.path.isdir mox.file.is_directory tf.gfile.IsDirectory os.remove mox.file.remove(..., recursive=False) tf.gfile.Remove os.rename mox.file.rename tf.gfile.Rename os.scandir mox.file.scan_dir - os.stat mox.file.stat tf.gfile.Stat os.walk mox.file.walk tf.gfile.Walk open mox.file.File tf.gfile.FastGFile(tf.gfile.Gfile) shutil.copyfile mox.file.copy tf.gfile.Copy shutil.copytree mox.file.copy_parallel - shutil.rmtree mox.file.remove(..., recursive=True) tf.gfile.DeleteRecursively
  • 移动和复制操作 移动一个OBS文件或文件夹。移动操作本身是用“复制+删除”来实现的。 一个OBS文件移动到另一个OBS文件,例如将“obs://bucket_name/obs_file.txt”移动到“obs://bucket_name/obs_file_2.txt”。 1 2 import moxing as mox mox.file.rename('obs://bucket_name/obs_file.txt', 'obs://bucket_name/obs_file_2.txt') 移动和复制操作不可以跨桶,必须在同一个桶内操作。 从OBS移动到本地,例如将“obs://bucket_name/obs_file.txt”移动到“/tmp/obs_file.txt”。 1 2 import moxing as mox mox.file.rename('obs://bucket_name/obs_file.txt', '/tmp/obs_file.txt') 从本地移动到OBS,例如将“/tmp/obs_file.txt”移动到“obs://bucket_name/obs_file.txt”。 1 2 import moxing as mox mox.file.rename('/tmp/obs_file.txt', 'obs://bucket_name/obs_file.txt') 从本地移动到本地,例如将“/tmp/obs_file.txt”移动到“/tmp/obs_file_2.txt”,该操作相当于os.rename。 1 2 import moxing as mox mox.file.rename('/tmp/obs_file.txt', '/tmp/obs_file_2.txt') 所有的移动操作均可以操作文件夹,如果操作的是文件夹,那么则会递归移动文件夹下所有的内容。 复制一个文件。mox.file.copy仅支持对文件操作,如果要对文件夹进行操作,请使用mox.file.copy_parallel。 从OBS复制到OBS,例如将“obs://bucket_name/obs_file.txt”复制到“obs://bucket_name/obs_file_2.txt”。 1 2 import moxing as mox mox.file.copy('obs://bucket_name/obs_file.txt', 'obs://bucket_name/obs_file_2.txt') 将OBS文件复制到本地,也就是下载一个OBS文件。例如下载“obs://bucket_name/obs_file.txt”到本地“/tmp/obs_file.txt”。 1 2 import moxing as mox mox.file.copy('obs://bucket_name/obs_file.txt', '/tmp/obs_file.txt') 将本地文件复制到OBS,也就是上传一个OBS文件,例如上传“/tmp/obs_file.txt”到“obs://bucket_name/obs_file.txt”。 1 2 import moxing as mox mox.file.copy('/tmp/obs_file.txt', 'obs://bucket_name/obs_file.txt') 将本地文件复制到本地,操作等价于shutil.copyfile,例如将“/tmp/obs_file.txt”复制到“/tmp/obs_file_2.txt”。 1 2 import moxing as mox mox.file.copy('/tmp/obs_file.txt', '/tmp/obs_file_2.txt') 复制一个文件夹。mox.file.copy_parallel仅支持对文件夹操作,如果要对文件进行操作,请使用mox.file.copy。 从OBS复制到OBS,例如将obs://bucket_name/sub_dir_0复制到obs://bucket_name/sub_dir_1 1 2 import moxing as mox mox.file.copy_parallel('obs://bucket_name/sub_dir_0', 'obs://bucket_name/sub_dir_1') 将OBS文件夹复制到本地,也就是下载一个OBS文件夹。例如下载“obs://bucket_name/sub_dir_0”到本地“/tmp/sub_dir_0”。 1 2 import moxing as mox mox.file.copy_parallel('obs://bucket_name/sub_dir_0', '/tmp/sub_dir_0') 将本地文件夹复制到OBS,也就是上传一个OBS文件夹,例如上传“/tmp/sub_dir_0”到“obs://bucket_name/sub_dir_0”。 1 2 import moxing as mox mox.file.copy_parallel('/tmp/sub_dir_0', 'obs://bucket_name/sub_dir_0') 将本地文件夹复制到本地,操作等价于shutil.copytree,例如将“/tmp/sub_dir_0”复制到“/tmp/sub_dir_1”。 1 2 import moxing as mox mox.file.copy_parallel('/tmp/sub_dir_0', '/tmp/sub_dir_1')
  • 列举操作 列举一个OBS目录,只返回顶层结果(相对路径),不做递归列举。 例如列举“obs://bucket_name/object_dir”,返回该目录下所有的文件和文件夹,不会递归查询。 假设“obs://bucket_name/object_dir”中有如下结构 1 2 3 4 5 bucket_name |- object_dir |- dir0 |- file00 |- file1 调用如下代码: 1 2 import moxing as mox mox.file.list_directory('obs://bucket_name/object_dir') 返回一个list: ['dir0', 'file1'] 递归列举一个OBS目录,返回目录中所有的文件和文件夹(相对路径),并且会做递归查询。 假设obs://bucket_name/object_dir中有如下结构。 1 2 3 4 5 bucket_name |- object_dir |- dir0 |- file00 |- file1 调用如下代码: 1 2 import moxing as mox mox.file.list_directory('obs://bucket_name/object_dir', recursive=True) 返回一个list: ['dir0', 'dir0/file00', 'file1']
  • 查询操作 判断一个OBS文件是否存在,如果存在则返回True,如果不存在则返回False。 1 2 import moxing as mox mox.file.exists('obs://bucket_name/sub_dir_0/file.txt') 判断一个OBS文件夹是否存在,如果存在则返回True,如果不存在则返回False。 1 2 import moxing as mox mox.file.exists('obs://bucket_name/sub_dir_0/sub_dir_1') 由于OBS允许同名的文件和文件夹(Unix操作系统不允许),如果存在同名的文件和文件夹,例如“obs://bucket_name/sub_dir_0/abc”,当调用mox.file.exists时,不论abc是文件还是文件夹,都会返回True。 判断一个OBS路径是否为文件夹,如果是则返回True,否则返回False。 1 2 import moxing as mox mox.file.is_directory('obs://bucket_name/sub_dir_0/sub_dir_1') 由于OBS允许同名的文件和文件夹(Unix操作系统不允许),如果存在同名的文件和文件夹,例如obs://bucket_name/sub_dir_0/abc,当调用mox.file.is_directory时,会返回True。 获取一个OBS文件的大小,单位为bytes。 例如获取“obs://bucket_name/obs_file.txt”的文件大小。 1 2 import moxing as mox mox.file.get_size('obs://bucket_name/obs_file.txt') 递归获取一个OBS文件夹下所有文件的大小,单位为bytes。 例如获取“obs://bucket_name/object_dir”目录下所有文件大小的总和。 1 2 import moxing as mox mox.file.get_size('obs://bucket_name/object_dir', recursive=True) 获取一个OBS文件或文件夹的stat信息,stat信息中包含如下信息。 length:文件大小。 mtime_nsec:创建时间戳。 is_directory:是否为目录。 例如查询一个OBS文件“obs://bucket_name/obs_file.txt”,此文件地址也可以替换成一个文件夹地址。 1 2 3 4 5 import moxing as mox stat = mox.file.stat('obs://bucket_name/obs_file.txt') print(stat.length) print(stat.mtime_nsec) print(stat.is_directory)
  • 删除操作 删除一个OBS文件。 例如删除“obs://bucket_name/obs_file.txt”。 1 2 import moxing as mox mox.file.remove('obs://bucket_name/obs_file.txt') 删除一个OBS目录,并且递归的删除这个目录下的所有内容。如果这个目录不存在,则会报错。 例如删除“obs://bucket_name/sub_dir_0”下的所有内容。 1 2 import moxing as mox mox.file.remove('obs://bucket_name/sub_dir_0', recursive=True)
  • 读写操作 读取一个OBS文件。 例如读取“obs://bucket_name/obs_file.txt”文件内容,返回string(字符串类型)。 1 2 import moxing as mox file_str = mox.file.read('obs://bucket_name/obs_file.txt') 也可以使用打开文件对象并读取的方式来实现,两者是等价的。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/obs_file.txt', 'r') as f: file_str = f.read() 从文件中读取一行,返回string,以换行符结尾。同样可以打开OBS的文件对象。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/obs_file.txt', 'r') as f: file_line = f.readline() 从文件中读取所有行,返回一个list,每个元素是一行,以换行符结尾。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/obs_file.txt', 'r') as f: file_line_list = f.readlines() 以二进制模式读取一个OBS文件。 例如读取“obs://bucket_name/obs_file.bin”文件内容,返回bytes(字节类型)。 1 2 import moxing as mox file_bytes = mox.file.read('obs://bucket_name/obs_file.bin', binary=True) 也可以使用打开文件对象并读取的方式来实现,两者是等价的。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/obs_file.bin', 'rb') as f: file_bytes = f.read() 以二进制模式打开的文件也支持读取一行或者读取所有行,用法不变。 将字符串写入一个文件。 例如将字符串“Hello World!”写入OBS文件“obs://bucket_name/obs_file.txt”中。 1 2 import moxing as mox mox.file.write('obs://bucket_name/obs_file.txt', 'Hello World!') 也可以使用打开文件对象并写入的方式来实现,两者是等价的。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/obs_file.txt', 'w') as f: f.write('Hello World!') 用写入模式打开文件或者调用mox.file.write时,如果被写入文件不存在,则会创建,如果已经存在,则会覆盖。 追加一个OBS文件。 例如将字符串“Hello World!”追加到“obs://bucket_name/obs_file.txt”文件中。 1 2 import moxing as mox mox.file.append('obs://bucket_name/obs_file.txt', 'Hello World!') 也可以使用打开文件对象并追加的方式来实现,两者是等价的。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/obs_file.txt', 'a') as f: f.write('Hello World!') 用追加模式打开文件或者调用mox.file.append时,如果被写入文件不存在,则会创建,如果已经存在,则直接追加。 当被追加的源文件比较大时,例如“obs://bucket_name/obs_file.txt”文件大小超过5MB时,追加一个OBS文件的性能比较低。 如果以写入模式或追加模式打开文件,当调用write方法时,待写入内容只是暂时的被存在的缓冲区,直到关闭文件对象(退出with语句时会自动关闭文件对象)或者主动调用文件对象的close()方法或flush()方法时,文件内容才会被写入。
  • 为什么要用mox.file 使用Python打开一个本地文件,如下所示: 1 2 with open('/tmp/a.txt', 'r') as f: print(f.read()) OBS目录以“obs://”开头,比如“obs://bucket/XXX.txt”。用户无法直接使用open方法打开OBS文件,上面描述的打开本地文件的代码将会报错。 OBS提供了很多方式和工具给用户使用,如SDK、API、console、OBS Browser等,ModelArts mox.file提供了一套更为方便的访问OBS的API,允许用户通过一系列模仿操作本地文件系统的API来操作OBS文件。例如,可以使用以下代码来打开一个OBS上的文件。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/a.txt', 'r') as f: print(f.read()) 例如,列举一个本地路径会使用如下Python代码。 1 2 import os os.listdir('/tmp/my_dir/') 如果要列举一个OBS路径,mox.file则需要如下代码: 1 2 import moxing as mox mox.file.list_directory('obs://bucket_name/my_dir/')
  • 调用mox.file 输入如下代码,实现如下几个简单的功能。 引入MoXing Framework。 在已有的“modelarts-test08/moxing”目录下,创建一个“test01”文件夹。 调用代码检查“test01”文件夹是否存在,如果存在,表示上一个操作已成功。 1 2 3 4 import moxing as mox mox.file.make_dirs('obs://modelarts-test08/moxing/test01') mox.file.exists('obs://modelarts-test08/moxing/test01') 执行结果如图3所示。注意,每输入一行代码,单击下“Run”运行。您也可以进入OBS管理控制台,检查“modelarts-test08/moxing”目录,查看“test01”文件夹是否已创建成功。更多MoXing的常用操作请参见常用操作的样例代码。 图3 运行示例
  • 引入MoXing Framework的相关说明 在引入MoXing模块后,Python的标准logging模块会被设置为INFO级别,并打印版本号信息。可以通过以下API重新设置logging的等级。 1 2 3 4 import logging from moxing.framework.util import runtime runtime.reset_logger(level=logging.WARNING) 可以在引入moxing之前,配置环境变量MOX_SILENT_MODE=1,来防止MoXing打印版本号。使用如下Python代码来配置环境变量,需要在import moxing之前就将环境变量配置好。 1 2 3 import os os.environ['MOX_SILENT_MODE'] = '1' import moxing as mox
  • 工作空间通用规则 付费版本安全云脑:单账号单Region内最多创建5个工作空间。 免费版本安全云脑:单账号单Region内最多创建1个工作空间。 工作空间永久删除:永久删除的workspace立即删除,不能进行恢复。 空间托管: 单账号单Region内最多创建1个空间托管视图。 单/跨账号单Region空间托管视图(包含的纳管工作空间数)中的工作空间数 ≤ 100个。 跨账号跨Region空间托管视图(包含的纳管工作空间数)中的工作空间数 ≤ 10个。 单账号创建账号委托 ≤ 10个。 暂不支持在同一个浏览器的多个窗口进入不同的工作空间进行操作。
  • 约束与限制 包周期计费的标准版和专业版中,资产配额与增值包功能需分别退订/取消。 当资产配额(专业版或标准版)被全部退订/取消后,当前为基础版时,您再执行退订/取消增值包功能操作。 按需计费的专业版中,退订/取消专业版资产配额时,增值包功能将一并退订/取消。 增值包功能不支持单独使用。 如果您在购买了标准版或专业版的基础上,开通了增值包功能,当专业版或标准版的退订/取消后,未退订/取消增值包功能,对应功能将无数据支撑,无法使用。因此,如果您退订/取消了专业版或标准版,须再执行退订/取消增值包功能操作。
  • 如何选择区域? 在欧洲地区有业务的用户,可以选择“欧洲-都柏林”区域。 选择区域时,您需要考虑以下几个因素: 地理位置 一般情况下,建议就近选择靠近您或者您的目标用户的区域,这样可以减少网络时延,提高访问速度。不过,在基础设施、BGP网络品质、资源的操作与配置等方面,中国大陆各个区域间区别不大,如果您或者您的目标用户在中国大陆,可以不用考虑不同区域造成的网络时延问题。 在除中国大陆以外的亚太地区有业务的用户,可以选择“中国-香港”、“亚太-曼谷”或“亚太-新加坡”区域。 在非洲地区有业务的用户,可以选择“南非-约翰内斯堡”区域。 在欧洲地区有业务的用户,可以选择“欧洲-巴黎”区域。 资源的价格 不同区域的资源价格可能有差异,请参见华为云服务价格详情。
  • 什么是区域、可用区? 我们用区域和可用区来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。
  • 修订记录 发布日期 修改记录 2024-03-28 第六次正式发布。 新增常见问题:如何释放ECS和VPC终端节点资源?。 优化资料描述。 2023-12-11 第五次正式发布。 新增常见问题:为什么Global级项目有region级的选择框显示?。 优化资料描述。 2023-08-10 第四次正式发布。 新增安全云脑中的日志存储时间是多久?章节内容。 更新安全云脑与态势感知服务的关系与区别?章节内容。 更新购买安全云脑时提示权限不足怎么办?章节内容。 更新安全云脑支持跨账号使用吗?章节内容。 计费说明内容合入计费说明手册。 2023-05-25 第三次正式发布。 新增如何给IAM子账号授权?章节内容。 新增安全云脑与态势感知服务的关系与区别?章节内容。 新增购买安全云脑时提示权限不足怎么办?章节内容。 2023-04-25 第二次正式发布。 更新SecMaster与HSS服务的区别?章节内容。 更新安全云脑如何变更版本规格?章节内容。 2022-12-10 第一次正式发布。
  • 约束与限制 安全云脑约束与限制如下所示: 表1 约束与限制 模块 约束与限制 计费 基础版不支持购买增值包,如需使用增值包功能,请升级为标准版或专业版。 增值包不支持单独使用。 如果需要购买增值包,请先购买标准版或专业版。 如果退订了按需计费的专业版,系统将自动一并退订增值包。 如果退订了包周期计费的标准版或专业版,需手动一并退订增值包。 工作空间 付费版本安全云脑:单账号单Region内最多创建5个工作空间。 免费版本安全云脑:单账号单Region内最多创建1个工作空间。 工作空间永久删除:永久删除的workspace立即删除,不能进行恢复。 空间托管: 单账号单Region内最多创建1个空间托管视图。 单/跨账号单Region空间托管视图(包含的纳管工作空间数)中的工作空间数 ≤ 100个。 跨账号跨Region空间托管视图(包含的纳管工作空间数)中的工作空间数 ≤ 10个。 单账号创建账号委托 ≤ 10个。 暂不支持在同一个浏览器的多个窗口进入不同的工作空间进行操作。 数据空间/管道 单账号单Region单Workspace最多创建5个数据空间。 单账号单Region单数据空间最多创建20个数据管道。 安全报告 单账号单workspace内,最多可创建10个安全报告(包含日报、周报和月报)。 告警模型 单账号单Region单workspace最多创建100个告警模型。 一个告警模型的运行时间间隔须 ≥ 5分钟,查询数据的时间范围 ≤ 14天。 查询分析 单次查询分析最多支持返回500条结果。 一个数据管道内最多创建50个快速查询,即最多可以将50个查询分析条件保存为快速查询。 单次查询结果大于50000条时,准确率可能会下降。请通过缩短查询的时间范围、添加查询限制条件等方法减少查询结果的数量。 使用聚合查询(例如group by语句)聚合多个字段时,第二个字段默认分桶数量为10,如果超出会有数据丢失的情况,将导致查询结果不准确。 事件/告警/情报/漏洞 单账号单Workspace内,每天最多新增告警/事件/情报/漏洞100个。 单账号单Workspace内,每天最多可以告警转事件100个。 剧本 单账号单workspace内,单剧本调度频率时间 ≥ 5分钟。 剧本和流程实例 单账号单workspace内一天内的重试次数限制如下: 手动重试:流程实例最大重试次数100次。重试之后,等剧本执行完毕之后才允许再次重试。 API接口重试:流程实例最大重试次数100次。重试之后,等剧本执行完毕之后才允许再次重试。 分类&映射 单账号单workspace内,分类&映射模板 ≤ 50个。 单账号单workspace内,分类和映射的映射关系规格为1:100。 单账号单workspace内,最多可新增分类&映射100个。
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的云安全挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的 IaaS、PaaS 和 SaaS 类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的 IaaS、PaaS 和 SaaS 类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、虚拟主机和访客虚拟机的操作系统,虚拟防火墙、API 网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 步骤5:分析和处理错误表中的错误信息 对数据导入过程中出现的数据格式错误信息进行处理,若没有错误信息,此步骤可跳过。 查询错误信息。 1 openGauss=# SELECT * FROM product_info_err ; 处理错误表中的错误信息。 按照本教程的示例操作,错误表中应该无错误信息。 您也可以将步骤2:在数据服务器上安装配置和启动GDS一节所建外表中的FILL_MISSING_FIELDS和IGNORE_EXTRA_DATA改为 'false'后,重新进行数据导入并查询错误表。此时,您将看到因如下原因带来的数据格式错误信息记录: 源数据文件product_info2.csv中第2条记录的最后一个字段“product_comment_content”缺失。 源数据文件product_info2.csv中第3条记录比外表定义列数多。 更多关于错误表及错误信息的处理请参见处理错误表。 父主题: 教程:使用GDS从远端服务器导入数据
共100000条