云服务器内容精选

  • 公告说明 自2024年9月起,当用户使用以下API的自定义策略授权时,用户需创建或更新自定义策略才可访问。 权限描述 对应的API 新增授权项 依赖授权项 IAM 项目(Project) 企业项目(Enterprise Project) 获取SSL证书列表 GET /v2/{project_id}/apigw/certificates apig:certificate:list - √ √ 创建SSL证书 POST /v2/{project_id}/apigw/certificates apig:certificate:create apig:instances:get √ 请求参数中携带instance_id时支持,否则不支持 删除SSL证书 DELETE /v2/{project_id}/apigw/certificates/{certificate_id} apig:certificate:delete - √ × 查看证书详情 GET /v2/{project_id}/apigw/certificates/{certificate_id} apig:certificate:get - √ × 修改SSL证书 PUT /v2/{project_id}/apigw/certificates/{certificate_id} apig:certificate:update apig:instances:get √ 请求参数中携带instance_id时支持,否则不支持 获取SSL证书已绑定 域名 列表 GET /v2/{project_id}/apigw/certificates/{certificate_id}/attached-domains apig:certificate:listBoundDomain - √ × SSL证书绑定域名 POST /v2/{project_id}/apigw/certificates/{certificate_id}/domains/attach apig:certificate:batchBindDomain apig:certificate:get apig:groups:get √ × SSL证书解绑域名 POST /v2/{project_id}/apigw/certificates/{certificate_id}/domains/detach apig:certificate:batchUnbindDomain apig:certificate:get apig:groups:get √ × 查询实例终端节点连接列表 GET /v2/{project_id}/apigw/instances/{instance_id}/vpc-endpoint/connections apig:instance:listVpcEndpoint apig:instances:get √ √ 接受或拒绝终端节点连接 POST /v2/{project_id}/apigw/instances/{instance_id}/vpc-endpoint/connections/action apig:instance:acceptOrRejectVpcEndpointConnection apig:instances:get √ √ 查询实例的终端节点服务的白名单列表 GET /v2/{project_id}/apigw/instances/{instance_id}/vpc-endpoint/permissions apig:instance:listVpcEndpointPermission apig:instances:get √ √ 批量添加实例终端节点连接白名单 POST/v2/{project_id}/apigw/instances/{instance_id}/vpc-endpoint/permissions/batch-add apig:instance:batchAddVpcEndpointPermission apig:instances:get √ √ 批量删除实例终端节点连接白名单 POST/v2/{project_id}/apigw/instances/{instance_id}/vpc-endpoint/permissions/batch-delete apig:instance:batchDeleteVpcEndpointPermission apig:instances:get √ √ 创建参数编排规则 POST /v2/{project_id}/apigw/instances/{instance_id}/orchestration apig:orchestration:create apig:instances:get √ √ 查看编排规则列表 GET /v2/{project_id}/apigw/instances/{instance_id}/orchestration apig:orchestration:list apig:instances:get √ √ 查询编排规则详情 GET /v2/{project_id}/apigw/instances/{instance_id}/orchestrations/{orchestration_id} apig:orchestration:get apig:instances:get √ √ 更新编排规则 PUT /v2/{project_id}/apigw/instances/{instance_id}/orchestrations/{orchestration_id} apig:orchestration:update apig:instances:get √ √ 删除编排规则 DELETE /v2/{project_id}/apigw/instances/{instance_id}/orchestrations/{orchestration_id} apig:orchestration:delete apig:instances:get √ √ 查询编排规则绑定的API GET /v2/{project_id}/apigw/instances/{instance_id}/orchestrations/{orchestration_id}/attached-apis apig:orchestration:listBoundApis apig:instances:get √ √
  • 支持的授权项 细粒度策略支持的操作与API相对应,授权项列表说明如下: 权限:自定义策略中授权项定义的内容即为权限。 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。 对应API接口:自定义策略实际调用的API接口。 授权范围:自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于IAM项目与企业项目的区别,详情请参见:IAM项目和企业项目的区别。 API网关服务管理控制操作相关的授权项,明细如下表所示。用户调用如下API时,需要获取对应的权限。权限获取请参考 统一身份认证 服务(IAM)的帮助指导。 表1 API网关权限明细 权限描述 授权项 对应的API IAM项目(Project) 企业项目(Enterprise Project) 创建API网关专享版实例 apig:instances:create POST /v2/{project_id}/apigw/instances √ √ 删除API网关专享版实例 apig:instances:delete DELETE /v2/{project_id}/apigw/instances/{instance_id} √ √ 更新API网关专享版实例 apig:instances:update PUT /v2/{project_id}/apigw/instances/{instance_id} √ √ 查看API网关专享版实例 apig:instances:get GET /v2/{project_id}/apigw/instances/{instance_id} √ √ 查看API网关专享版实例列表 apig:instances:list GET /v2/{project_id}/apigw/instances √ √ 创建API分组 apig:groups:create POST /v2/{project_id}/apigw/instances/{instance_id}/api-groups √ √ 删除API分组 apig:groups:delete DELETE /v2/{project_id}/apigw/instances/{instance_id}/api-groups/{group_id} √ √ 查看API分组 apig:groups:get GET /v2/{project_id}/apigw/instances/{instance_id}/api-groups/{group_id} √ √ 查看API分组列表 apig:groups:list GET /v2/{project_id}/apigw/instances/{instance_id}/api-groups √ √ 创建分组域名 apig:domains:create POST /v2/{project_id}/apigw/instances/{instance_id}/api-groups/{group_id}/domains √ √ 删除分组域名 apig:domains:delete DELETE /v2/{project_id}/apigw/instances/{instance_id}/api-groups/{group_id}/domains/{domain_id} √ √ 分组域名绑定证书 apig:domains:bindCertificate POST /v2/{project_id}/apigw/instances/{instance_id}/api-groups/{group_id}/domains/{domain_id}/certificate √ √ 分组域名解绑证书 apig:domains:unbindCertificate DELETE /v2/{project_id}/apigw/instances/{instance_id}/api-groups/{group_id}/domains/{domain_id}/certificate/{certificate_id} √ √ 查看分组域名绑定的证书 apig:domains:getCertificate GET /v2/{project_id}/apigw/instances/{instance_id}/api-groups/{group_id}/domains/{domain_id}/certificate/{certificate_id} √ √ 创建环境变量 apig:variables:create POST /v2/{project_id}/apigw/instances/{instance_id}/env-variables √ √ 删除环境变量 apig:variables:delete DELETE /v2/{project_id}/apigw/instances/{instance_id}/env-variables/{env_variable_id} √ √ 查看环境变量 apig:variables:get GET /v2/{project_id}/apigw/instances/{instance_id}/env-variables/{env_variable_id} √ √ 查看环境变量列表 apig:variables:list GET /v2/{project_id}/apigw/instances/{instance_id}/env-variables √ √ 创建API apig:apis:create POST /v2/{project_id}/apigw/instances/{instance_id}/apis √ √ 删除API apig:apis:delete DELETE /v2/{project_id}/apigw/instances/{instance_id}/apis/{api_id} √ √ 发布API apig:apis:publish POST /v2/{project_id}/apigw/instances/{instance_id}/apis/action √ √ 下线API apig:apis:offline POST /v2/{project_id}/apigw/instances/{instance_id}/apis/action √ √ 调试API apig:apis:debug POST /v2/{project_id}/apigw/instances/{instance_id}/apis/debug/{api_id} √ √ 导入API apig:apis:import POST /v2/{project_id}/apigw/instances/{instance_id}/openapi/import √ √ 导出API apig:apis:export POST /v2/{project_id}/apigw/instances/{instance_id}/openapi/export √ √ 授权API apig:apis:grantAppAccess POST /v2/{project_id}/apigw/instances/{instance_id}/app-auths √ √ 解授权API apig:apis:relieveAppAccess DELETE /v2/{project_id}/apigw/instances/{instance_id}/app-auths/{app_auth_id} √ √ API绑定签名 apig:apis:bindSigns POST /v2/{project_id}/apigw/instances/{instance_id}/sign-bindings √ √ API解绑签名 apig:apis:unbindSigns DELETE /v2/{project_id}/apigw/instances/{instance_id}/sign-bindings/{sign_bindings_id} √ √ API绑定访问控制 apig:apis:bindAcls POST /v2/{project_id}/apigw/instances/{instance_id}/acl-bindings √ √ API解绑访问控制 apig:apis:unbindAcls DELETE /v2/{project_id}/apigw/instances/{instance_id}/acl-bindings/{acl_bindings_id} √ √ API绑定流控 apig:apis:bindThrottles POST /v2/{project_id}/apigw/instances/{instance_id}/throttle-bindings √ √ API解绑流控 apig:apis:unbindThrottles DELETE /v2/{project_id}/apigw/instances/{instance_id}/throttle-bindings/{throttle_binding_id} √ √ 查看API apig:apis:get GET /v2/{project_id}/apigw/instances/{instance_id}/apis/{api_id} √ √ 查看API列表 apig:apis:list GET /v2/{project_id}/apigw/instances/{instance_id}/apis √ √ 查看API绑定的APP列表 apig:apis:listBindedApps GET /v2/{project_id}/apigw/instances/{instance_id}/app-auths/binded-apps √ √ 查看API绑定的签名列表 apig:apis:listBindedSigns GET /v2/{project_id}/apigw/instances/{instance_id}/sign-bindings/binded-signs √ √ 查看API绑定的访问控制列表 apig:apis:listBindedAcls GET /v2/{project_id}/apigw/instances/{instance_id}/acl-bindings/binded-acls √ √ 查看API绑定的流控列表 apig:apis:listBindedTrottles GET /v2/{project_id}/apigw/instances/{instance_id}/throttle-bindings/binded-throttles √ √ 创建环境 apig:envs:create POST /v2/{project_id}/apigw/instances/{instance_id}/envs √ √ 删除环境 apig:envs:delete DELETE /v2/{project_id}/apigw/instances/{instance_id}/envs/{env_id} √ √ 查看环境列表 apig:envs:list GET /v2/{project_id}/apigw/instances/{instance_id}/envs √ √ 创建应用 apig:apps:create POST /v2/{project_id}/apigw/instances/{instance_id}/apps √ √ 删除应用 apig:apps:delete DELETE /v2/{project_id}/apigw/instances/{instance_id}/apps/{app_id} √ √ 查看应用 apig:apps:get GET /v2/{project_id}/apigw/instances/{instance_id}/apps/{app_id} √ √ 查看应用列表 apig:apps:list GET /v2/{project_id}/apigw/instances/{instance_id}/apps √ √ 查看应用绑定的API列表 apig:apps:listBindedApis GET /v2/{project_id}/apigw/instances/{instance_id}/app-auths/binded-apis √ √ 查看应用未绑定的API列表 apig:apps:listUnbindedApis GET /v2/{project_id}/apigw/instances/{instance_id}/app-auths/unbinded-apis √ √ 创建签名 apig:signs:create POST /v2/{project_id}/apigw/instances/{instance_id}/signs √ √ 删除签名 apig:signs:delete DELETE /v2/{project_id}/apigw/instances/{instance_id}/signs/{sign_id} √ √ 查看签名列表 apig:signs:list GET /v2/{project_id}/apigw/instances/{instance_id}/signs √ √ 查看签名绑定的API列表 apig:signs:listBindedApis GET /v2/{project_id}/apigw/instances/{instance_id}/sign-bindings/binded-apis √ √ 查看签名未绑定的API列表 apig:signs:listUnbindedApis GET /v2/{project_id}/apigw/instances/{instance_id}/sign-bindings/unbinded-apis √ √ 创建访问控制 apig:acls:create POST /v2/{project_id}/apigw/instances/{instance_id}/acls √ √ 删除访问控制 apig:acls:delete DELETE /v2/{project_id}/apigw/instances/{instance_id}/acls/{acl_id} √ √ 查看访问控制 apig:acls:get GET /v2/{project_id}/apigw/instances/{instance_id}/acls/{acl_id} √ √ 查看访问控制列表 apig:acls:list GET /v2/{project_id}/apigw/instances/{instance_id}/acls √ √ 查看访问控制绑定的api列表 apig:acls:listBindedApis GET /v2/{project_id}/apigw/instances/{instance_id}/acl-bindings/binded-apis √ √ 查看访问控制未绑定的api列表 apig:acls:listUnbindedApis GET /v2/{project_id}/apigw/instances/{instance_id}/acl-bindings/unbinded-apis √ √ 创建流量控制 apig:throttles:create POST /v2/{project_id}/apigw/instances/{instance_id}/throttles √ √ 删除流量控制 apig:throttles:delete DELETE /v2/{project_id}/apigw/instances/{instance_id}/throttles/{throttle_id} √ √ 查看流量控制 apig:throttles:get GET /v2/{project_id}/apigw/instances/{instance_id}/throttles/{throttle_id} √ √ 查看流量控制列表 apig:throttles:list GET /v2/{project_id}/apigw/instances/{instance_id}/throttles √ √ 查看流量控制绑定的API列表 apig:throttles:listBindedApis GET /v2/{project_id}/apigw/instances/{instance_id}/throttle-bindings/binded-apis √ √ 查看流量控制未绑定的API列表 apig:throttles:listUnbindedApis GET /v2/{project_id}/apigw/instances/{instance_id}/throttle-bindings/unbinded-apis √ √ 创建特殊流量控制 apig:specialThrottles:create POST /v2/{project_id}/apigw/instances/{instance_id}/throttles/{throttle_id}/throttle-specials √ √ 删除特殊流量控制 apig:specialThrottles:delete DELETE /v2/{project_id}/apigw/instances/{instance_id}/throttles/{throttle_id}/throttle-specials/{strategy_id} √ √ 查看特殊流量控制列表 apig:specialThrottles:get GET /v2/{project_id}/apigw/instances/{instance_id}/throttles/{throttle_id}/throttle-specials √ √ 创建负载通道 apig:vpcChannels:create POST /v2/{project_id}/apigw/instances/{instance_id}/vpc-channels √ √ 删除负载通道 apig:vpcChannels:delete DELETE /v2/{project_id}/apigw/instances/{instance_id}/vpc-channels/{vpc_channel_id} √ √ 更新负载通道 apig:vpcChannels:update PUT /v2/{project_id}/apigw/instances/{instance_id}/vpc-channels/{vpc_channel_id} √ √ 创建后端实例 apig:vpcChannels:addInstance POST /v2/{project_id}/apigw/instances/{instance_id}/vpc-channels/{vpc_channel_id}/members √ √ 删除后端实例 apig:vpcChannels:deleteInstance DELETE /v2/{project_id}/apigw/instances/{instance_id}/vpc-channels/{vpc_channel_id}/members/{member_id} √ √ 查看负载通道 apig:vpcs:get GET /v2/{project_id}/apigw/instances/{instance_id}/vpc-channels/{vpc_channel_id} √ √ 查看负载通道列表 apig:vpcs:list GET /v2/{project_id}/apigw/instances/{instance_id}/vpc-channels √ √ 创建自定义认证 apig:authorizers:create POST /v2/{project_id}/apigw/instances/{instance_id}/authorizers √ √ 删除自定义认证 apig:authorizers:delete DELETE /v2/{project_id}/apigw/instances/{instance_id}/authorizers/{authorizer_id} √ √ 查看自定义认证 apig:authorizers:get GET /v2/{project_id}/apigw/instances/{instance_id}/authorizers/{authorizer_id} √ √ 查看自定义认证列表 apig:authorizers:list GET /v2/{project_id}/apigw/instances/{instance_id}/authorizers √ √ 查看标签列表 apig:tags:list GET /v2/{project_id}/apigw/instances/{instance_id}/tags √ √ 查看实例特性列表 apig:features:list GET /v2/{project_id}/apigw/instances/{instance_id}/features √ √ 创建实例特性 apig:features:create POST /v2/{project_id}/apigw/instances/{instance_id}/features √ √
  • 约束与限制 独立域名绑定端口时,同一域名不支持绑定相同端口。 同一域名不同端口,无论哪个端口绑定/修改/解绑SSL证书、开启/关闭客户端认证,所有端口都会同步生效。 如果您通过负载通道访问后端服务,那么独立域名绑定的端口需与负载通道中后端服务器的访问端口保持一致。 独立域名绑定端口后,如果您通过IP地址访问API,那么需要在请求消息中添加Header参数“host”,host值必须带有对应的访问协议的端口(默认的80/443端口,host值可以不带)。
  • 获取域名 云服务平台内业务系统访问API的场景,需获取内网域名作为独立域名。 申请内网域名,具体请参考创建内网域名。 配置域名到“服务集成APIC 连接地址”的A类型记录集配置,具体请参考增加A类型记录集。 如果API分组中的API支持HTTPS请求协议,则需要为独立域名添加SSL证书。您需要提前获取SSL证书的内容和密钥,并创建SSL证书。 云服务平台外业务系统访问API的场景,需获取公网域名作为独立域名。 申请公网域名,具体可通过 域名注册服务 申请。 备案公网域名,您可以通过备案中心完成域名备案。备案时长需几个工作日,建议您提前进行备案。 配置域名到API分组子域名的CNAME类型记录集配置,具体请参考增加CNAME类型记录集。 如果API分组中的API支持HTTPS请求协议,则需要为独立域名添加SSL证书。您需要提前获取SSL证书的内容和密钥,并创建SSL证书。
  • 相关文档 了解更多创建API详情,请参考创建API。 了解更多调用API详情请参考调用API。 调用API失败时,查看错误信息请参考错误码。 共享VPC是基于 资源访问管理 (Resource Access Manager,简称 RAM )服务的机制,VPC的所有者可以将VPC内的子网共享给一个或者多个账号使用。通过共享VPC功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。有关VPC子网共享的更多信息,请参见共享VPC。
  • 步骤二:创建实例 进入购买实例页面。 根据下表配置实例信息。 表2 配置实例信息 参数 配置说明 计费模式 实例的收费方式,此处选择“按需计费”。 区域 选择实例所属区域,请根据实际需要选择。此处选择“华东-上海一”。 可用区 选择实例的可用区,此处选择“可用区1,可用区2,可用区3”。 实例名称 填写实例的名称,此处填写“apig-test”。 实例规格 选择实例的规格,此处选择“基础版”。 可维护时间窗 指定可对实例进行维护的时间段,此处默认。 企业项目 选择实例所属的企业项目,此处选择“default”。 网络 选择已准备的VPC和子网。 公网入口 允许外部服务通过弹性IP地址,调用实例创建的API。此处开启公网入口。 安全组 选择已准备的安全组。 单击“立即购买”。 确认实例信息无误后,勾选服务协议,单击“去支付”,完成实例创建。
  • 步骤一:准备工作 注册华为云并实名认证。 如果您已有一个华为账号,请跳过此步骤。如果您还没有华为账户,请参考 注册华为账号 并开通华为云和实名认证介绍,完成华为云的注册和实名认证。 在创建APIG实例前,确保账户有足够金额。 如果您需要为账户充值,请参考账户充值。 在创建APIG实例前,确保账户已拥有APIG实例的操作权限。 如果您使用系统角色相关权限,需要同时拥有“APIG Administrator”和“VPC Administrator”权限才能创建实例。 如果您使用系统策略,则拥有“APIG FullAccess”即可。 如果您需要对云上的资源进行精细管理,请使用IAM服务创建IAM用户及用户组,并授权,以使得IAM用户获得具体的操作权限。具体操作请参考创建用户并授权使用APIG。 在创建APIG实例前,确保已存在可用的VPC和子网。 APIG实例可以使用当前账号下已创建的VPC和子网,也可以使用新创建的VPC和子网,请根据实际需要进行配置。 创建VPC和子网的操作指导,请参考创建虚拟私有云和子网。请注意:创建的VPC与APIG实例必须在相同的区域。 在创建APIG实例前,确保已存在可用的安全组。 APIG实例可以使用当前账号下已创建的安全组,也可以使用新创建的安全组,请根据实际需要进行配置。创建安全组的操作步骤,请参考创建安全组。 请添加表1所示安全组规则,其他规则请根据实际需要添加。 表1 安全组规则 方向 协议 端口 源地址 说明 入方向 TCP 80/443 0.0.0.0/0 使用内网时可通过同一个VPC访问APIG实例。 安全组创建后,系统默认添加入方向“允许安全组内的弹性云服务器彼此通信”规则和出方向“放通全部流量”规则。此时使用内网通过同一个VPC访问APIG实例,无需添加表1的规则。 除墨西哥城一、北京一区域外,在其他区域创建实例后默认开启ELB负载。开启ELB负载的实例的安全组不生效,如需禁用部分IP请使用访问控制策略 开启ELB负载:ELB作为网关入口的负载均衡器,入口支持跨VPC访问。但在开启公网入口时,弹性IP地址由网关随机分配,不支持选择已有弹性IP地址。
  • 入门实践 您可以根据自身的业务需求使用APIG提供的一系列常用实践。 表1 常用最佳实践 实践 描述 使用函数服务开发自定义认证 在API的安全认证方面,API网关提供IAM认证、APP认证等方式,帮助用户快速开放API,同时API网关也支持用户使用自己的认证方式(以下简称自定义认证),以便更好地兼容已有业务能力。 API网关支持的自定义认证需要借助 函数工作流 服务实现,用户在函数工作流中创建自定义认证函数,API网关调用该函数,实现自定义认证。 API网关流量控制2.0策略 当在公网中调用APIG上公开的业务API时,如果不限制API调用的次数,随着用户的不断增加,会引起后端性能的下降,甚至会因为恶意用户发送的大量请求导致网站或程序崩溃。APIG提供了传统策略——流量控制,从API、用户、凭据、源IP等多个维度进行流控。 然而,随着用户多样性以及需求多样性的增加,传统流控策略无法满足更加精细的流量控制场景。比如针对某一请求参数的流控或者某一租户的流控,APIG在传统流量控制策略的基础上提供了插件策略——流量控制2.0,通过制定更加精细的方案来进行流控。
  • 调用API 本章节仅提供请求地址和认证参数的配置指导,客户端的其他参数配置需要用户自行调整,如超时配置、SSL配置等。如果客户端参数配置错误会导致业务受损,建议参考业界标准进行配置。 配置请求地址相关参数。 API调用场景 API请求参数配置 使用域名调用API 使用服务分配的子域名或服务绑定的域名调用API,无需另外配置。 使用IP调用非DEFAULT分组的API 使用IP地址直接调用非DEFAULT分组下的非APP认证的API,需要在请求消息中添加Header参数“host”。 配置认证参数。 API认证方式 API请求参数配置 APP认证(签名认证) 使用获取的SDK对API请求进行签名,具体请参考使用APP认证调用API。 APP认证(简易认证) 在API请求中添加Header参数“X-Apig-AppCode”,参数值为获取API及文档中获取到的AppCode。具体请参考快速入门。 华为IAM认证(Token认证) 先获取云服务平台的认证Token,然后在API请求中携带Token进行认证,具体请参考Token认证。 华为IAM认证(AK/SK认证) 调用API时,使用获取的SDK对API请求进行签名,具体请参考AK/SK认证。 自定义认证 在API请求参数中携带认证信息进行认证。 无认证 无需认证,可直接调用API。
  • 注意事项 仅支持华为云 CCE Turbo 集群、VPC网络模型的CCE集群。 您需要确保当前实例与CCE集群所属同一个VPC中,或通过其他方式保证两者网络可达,否则导入后调用API会出现失败场景。 选择VPC网络模型的CCE集群时,您需要在实例详情界面的路由配置中添加CCE集群的容器网段,否则导入后调用API会出现失败场景。 导入后会生成相应的API以及微服务类型的负载通道,负载通道会监测工作负载下所有实例的地址变化,并更新到负载通道中。
  • 调用API 本章节仅提供请求地址和认证参数的配置指导,客户端的其他参数配置需要用户自行调整,如超时配置、SSL配置等。如果客户端参数配置错误会导致业务受损,建议参考业界标准进行配置。 构造API请求,示例如下: POST https://{Address}/{Path}?{Query} {Header} { {Body} } POST:请求方法,需替换为获取API的调用信息中获取的请求方法。 {Address}:请求地址,需替换为获取API的调用信息中获取的域名地址。 API调用场景 API请求参数配置 使用域名调用API 使用服务分配的调试域名或服务绑定的域名调用API,无需另外配置。 使用IP调用DEFAULT分组的API API允许使用IP地址调用DEFAULT分组下的API,无需另外配置。 使用IP调用非DEFAULT分组的API 使用IP地址直接调用非DEFAULT分组下的APP认证的API: 将实例的配置参数“app_route”和“app_secret”设置为“on”。开启“app_route”之后,同一凭据不能授权给相同请求路径和方法的API。 在请求消息中添加Header参数“X-HW-ID”和“X-HW-APPKEY”,参数值为API所授权凭据的Key和Secret。 须知: 使用简易认证(APP认证)调用API时,仅需在请求消息中添加Header参数“X-Apig-AppCode”和“host”即可。 使用IP地址直接调用非DEFAULT分组下的非APP认证的API,需要在请求消息中添加Header参数“host”。 {Path}:请求路径,需替换为获取API的调用信息中获取的请求路径。 {Query}:查询参数,可选,格式为“参数名=参数取值”,例如limit=10,多个查询参数之间使用“&”隔开。需根据获取API的调用信息中获取的请求参数进行设置。 {Header}:请求头参数,格式为“参数名: 参数取值”,例如Content-Type: application/json。需根据获取API的调用信息中获取的请求参数进行设置。 {Body}:请求消息体,JSON格式。需根据获取API的调用信息中获取的请求体内容描述进行设置。 为API请求添加认证信息。 API认证方式 API请求参数配置 APP认证(签名认证) 使用获取的SDK对API请求进行签名,具体请参考使用APP认证调用API。 APP认证(简易认证) 在API请求中添加Header参数“X-Apig-AppCode”,参数值为获取API的调用信息中获取到的AppCode。具体请参考快速入门。 APP认证(app_api_key认证) 实例的配置参数“app_api_key”已设置为“on”,开启app_api_key认证。 在API请求中添加Header或Query参数“apikey”,参数值为获取API的调用信息中获取到的Key。 APP认证(app_secret认证) 实例的配置参数“app_secret”已设置为“on”,开启app_secret认证,且“app_api_key”已设置为“off”,关闭app_api_key认证。 在API请求中添加Header参数“X-HW-ID”,参数值为获取API的调用信息中获取到的Key。 在API请求中添加Header参数“X-HW-AppKey”,参数值为获取API的调用信息中获取到的Secret。 APP认证(app_basic认证) 实例的配置参数“app_basic”已设置为“on”,开启app_basic认证。 在API请求中添加Header参数“Authorization”,参数值为"Basic"+base64(appkey+":"+appsecret),其中appkey和appsecret分别为获取API的调用信息中获取到的Key和Secret。 APP认证(app_jwt认证) 实例的配置参数“app_jwt”已设置为“on”,开启app_jwt认证。 在API请求中添加Header参数“Timestamp”,参数值为当前时间的Unix时间戳,单位为毫秒。 在API请求中添加Header参数“Authorization”,参数值为sha256(appkey+appsecret+timestamp),且sha256加密后的字符串需为小写字母。其中appkey和appsecret分别为获取API的调用信息中获取到的Key和Secret,timestamp为当前时间的Unix时间戳,单位为毫秒。 在API请求中添加Header参数“X-HW-ID”,参数值为获取API的调用信息中获取到的Key。 APP认证(双重认证) 在API请求中同时携带APP认证和自定义认证的认证信息。 IAM认证(Token认证) 先获取云服务平台的认证Token,然后在API请求中添加Header参数“X-Auth-Token”,参数值为认证Token,具体请参考Token认证。 IAM认证(AK/SK认证) 使用获取的SDK对API请求进行签名,具体请参考AK/SK认证。 IAM认证(双重认证) 在API请求中同时携带IAM认证和自定义认证的认证信息。 自定义认证 根据自定义认证的定义,在API请求参数中携带相关认证信息进行认证。 无认证 无需认证,可直接调用API。 第三方认证(API策略) 向API提供者获取请求参数中要携带的第三方认证信息。
  • 前提条件 在调用API前,确保您的业务系统所在网络与API的访问域名或地址互通。 如果业务系统与API网关在相同VPC内时,可直接访问API。 如果业务系统与API网关在同一区域的不同VPC内时,可通过创建VPC对等连接,将两个VPC的网络打通,实现同一区域跨VPC访问API。具体步骤请参考VPC对等连接说明。 如果业务系统与API网关在不同区域的不同VPC内时,可通过创建云连接实例并加载需要互通的VPC,将两个VPC的网络打通,实现跨区域跨VPC访问API。具体步骤请参考跨区域VPC互通。 如果业务系统与API网关通过公网互通,请确保API网关已绑定弹性IP。
  • 后端服务调用报错域名无法解析“Backend domain name resolution failed” APIG实例所在的VPC完成了内网域名解析,后端服务调用仍报“域名无法解析”错误。 可能原因 APIG实例所在的VPC与用户后端服务所在的VPC存在网络隔离,内网域名解析仅在用户后端服务所在的VPC下能够解析。 解决方法 方法一:在创建API时,使用公网域名配置“后端服务地址”。 方法二:在创建API时,不使用VPC通道(负载通道),使用用户后端服务IP配置“后端服务地址”,添加常量参数,在HEADER中添加Host:域名字段。 方法三:在创建API时,使用VPC通道(负载通道)。 创建VPC通道(负载通道)。 添加用户后端服务地址。 创建API时,使用VPC通道(负载通道),配置自定义头域。 父主题: API调用
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 URI-scheme:表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint:指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,您可以从终端节点中获取。例如APIG服务在“华北-北京四”区域的Endpoint为“apig.cn-north-4.myhuaweicloud.com”。 resource-path:资源路径,也即API访问路径。从具体API的URI模块获取,例如“创建API分组(专享版API)”API的resource-path为“/v2/{project_id}/apigw/instances/{instance_id}/api-groups”,project_id为项目ID,instance_id为实例ID(在APIG控制台的“实例信息”中查看)。。 query-string:查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如您需要在“华北-北京四”区域创建API分组,URI-scheme为“https”,Endpoint为“apig.cn-north-4.myhuaweicloud.com”,resource-path为“/v2/{project_id}/apigw/instances/{instance_id}/api-groups”,将URI中的参数拼接起来即可。 https://apig.cn-north-4.myhuaweicloud.com/v2/{project_id}/apigw/instances/{instance_id}/api-groups 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,同一个服务的Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 Content-Type:消息体的类型(格式),必选,默认取值为“application/json”,有其他取值时会在具体接口中专门说明。 X-Sdk-Date:请求发送的时间,可选,当使用AK/SK方式认证时,使用SDK对请求进行签名的过程中会自动填充该字段。AK/SK认证的详细说明请参考AK/SK认证。 Authorization:签名认证信息,可选,当使用AK/SK方式认证时,使用SDK对请求进行签名的过程中会自动填充该字段。AK/SK认证的详细说明请参考AK/SK认证。 X-Auth-Token:用户Token,可选,当使用Token方式认证时,必须填充该字段。用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 X-Project-ID:子项目ID,可选,在多项目场景中使用。如果云服务资源创建在子项目中,AK/SK认证方式下,操作该资源的接口调用需要在请求消息头中携带X-Project-ID。 X-Domain-ID:账号ID,可选。AK/SK认证方式下,全局服务的接口调用时,需在请求消息头中携带X-Domain-ID。 对于创建API分组接口,使用AK/SK方式认证时,添加消息头后的请求如下所示。 POST https://apig.cn-north-1.myhuaweicloud.com/v2/{project_id}/apigw/instances/{instance_id}/api-groups Content-Type: application/json X-Sdk-Date: 20240416T095341Z Authorization: SDK-HMAC-SHA256 Access=****************, SignedHeaders=content-type;host;x-sdk-date, Signature=****************