云服务器内容精选

  • 应用开发简介 湖仓构建 (DataArts Lake Formation,简称LakeFormation)是企业级 数据湖 一站式构建服务。 在存算分离架构基础上提供数据湖元数据统一管理的可视化界面及API,兼容Hive元数据模型以及Ranger权限模型,支持对接多种计算引擎及大数据云服务 本文档提供LakeFormation服务应用开发流程、环境准备及程序编写介绍,供需要进行业务应用开发的开发人员使用。 父主题: 服务介绍
  • 简介 在进行湖仓构建应用开发时,要准备的环境如表1所示。 同时需要准备运行调测的环境,用于验证应用程序运行正常。 表1 准备项 准备项 说明 准备LakeFormation实例 在LakeFormation控制台创建实例,或者使用已有LakeFormation实例。 创建客户端 在LakeFormation控制台接入管理界面创建客户端。 修改DNS信息 在云解析服务中,修改linux环境所在子网的内网 域名 信息。 父主题: 环境准备
  • 准备开发环境 在进行LakeFormation Java SDK开发程序前,要准备的开发环境如表1所示。 表1 开发环境 准备项 说明 安装Java和JDK环境 已安装Java环境,Java版本要求使用JDK1.8或更高版本。 安装和配置IntelliJ IDEA 用于开发应用程序的工具,版本要求:2019.1或其他兼容版本。 说明: 若使用IBM JDK,请确保IntelliJ IDEA中的JDK配置为IBM JDK。 若使用Oracle JDK,请确保IntelliJ IDEA中的JDK配置为Oracle JDK。 若使用Open JDK,请确保IntelliJ IDEA中的JDK配置为Open JDK。 不同的IntelliJ IDEA不要使用相同的workspace和相同路径下的示例工程。 安装Maven 开发环境的基本配置。用于项目管理,贯穿软件开发生命周期。 7-zip 用于解压“*.zip”和“*.rar”文件。 支持7-Zip 16.04版本。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 使用Token前请确保Token离过期有足够的时间,防止调用API的过程中Token过期导致调用API失败。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", //用户名"password": "********", //用户名对应的密码"domain": { "name": "domainname" //用户名所属的租户} } } }, "scope": { "project": { "id": "xxxxxxxx" //token作用范围对应的资源集ID} } } } 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 Content-Type: application/jsonX-Auth-Token: ABCDEFJ....
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12M以内,12M以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • URI POST /v1/{project_id}/instances/{instance_id}/scale 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目编号。获取方法,请参见获取项目ID。 instance_id 是 String LakeFormation实例ID。创建实例时自动生成。例如:2180518f-42b8-4947-b20b-adfc53981a25。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 否 String 租户token。 表3 请求Body参数 参数 是否必选 参数类型 描述 specs 否 Array of CreateSpec objects 规格列表。 charge_mode 否 String 计费类型:postPaid:按需计费、prePaid:包周期计费。 枚举值: postPaid prePaid change_classify 否 String 变更类型,UPGRADE:升级规格;RENEW_CHANGE:续费变更(仅支持包周期计费方式)。 枚举值: UPGRADE RENEW_CHANGE charge_info 否 ChargeInfo object 计费信息,购买包周期产品时,也就是charge_mode为prePaid时不能为空。 表4 CreateSpec 参数 是否必选 参数类型 描述 product_id 否 String 商品ID。已废弃,无需填写 spec_code 是 String 规格编码。 stride_num 是 Integer QPS规格步数,QPS为每秒最大请求数,最小为5,步长为1。只有在创建独享型实例(字段shared为false)时生效。 表5 ChargeInfo 参数 是否必选 参数类型 描述 period_type 否 String 购买包周期产品时,也就是charge_mode为prePaid时生效,且为必选值,订购周期类型。取值范围:MONTH:包月;YEAR:包年。 枚举值: MONTH YEAR period_num 否 Integer 购买包周期产品时,也就是charge_mode为prePaid时生效,且为必选值,指定订购的时间。取值范围:当period_type为month时,取值为1~9。当period_type为year时,取值为1~3。当传入浮点型时,会自动截取为整型。 is_auto_renew 否 Boolean 购买包周期产品时,也就是charge_mode为prePaid时生效,且为必选值,表示是否自动续订,续订时会自动支付。 按月订购时续订周期默认为1个月,按年订购时续订周期默认为1年,续订周期可自定义修改。true:为自动续订。false:为不自动续订,默认该方式。 is_auto_pay 否 Boolean 购买包周期产品时,也就是charge_mode为prePaid时生效,且为必选值,表示是否自动从客户的账户中支付,此字段不影响自动续订的支付方式。true:为自动支付。false:为手动支付,默认该方式。
  • 响应参数 状态码: 200 表6 响应Header参数 参数 参数类型 描述 X-request-id String 请求ID,定位辅助信息。 状态码: 400 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。 状态码: 404 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。 状态码: 500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误描述。 common_error_code String CBC公共错误码。 solution_msg String 解决方案描述。
  • 响应示例 状态码: 400 Bad Request { "error_code" : "common.01000001", "error_msg" : "failed to read http request, please check your input, code: 400, reason: Type mismatch., cause: TypeMismatchException"} 状态码: 401 Unauthorized { "error_code": 'APIG.1002', "error_msg": 'Incorrect token or token resolution failed'} 状态码: 403 Forbidden { "error" : { "code" : "403", "message" : "X-Auth-Token is invalid in the request", "error_code" : null, "error_msg" : null, "title" : "Forbidden" }, "error_code" : "403", "error_msg" : "X-Auth-Token is invalid in the request", "title" : "Forbidden"} 状态码: 404 Not Found { "error_code" : "common.01000001", "error_msg" : "response status exception, code: 404"} 状态码: 408 Request Timeout { "error_code" : "common.00000408", "error_msg" : "timeout exception occurred"} 状态码: 500 Internal Server Error { "error_code" : "common.00000500", "error_msg" : "internal error"}
  • URI PUT /v1/{project_id}/instances/{instance_id}/access-clients/{client_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目编号。获取方法,请参见获取项目ID。 instance_id 是 String LakeFormation实例ID。创建实例时自动生成。例如:2180518f-42b8-4947-b20b-adfc53981a25。 client_id 是 String 客户端ID。创建客户端时自动生成。
  • URI GET /v1/{project_id}/instances/{instance_id}/policies/policy 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目编号。获取方法,请参见获取项目ID。 instance_id 是 String LakeFormation实例ID。创建实例时自动生成。例如:2180518f-42b8-4947-b20b-adfc53981a25。 表2 Query参数 参数 是否必选 参数类型 描述 last_known_version 否 Long 最新已知版本。 supports_policy_deltas 否 Boolean 是否支持增量同步策略。默认为false。 is_return_policy_data 否 Boolean 是否返回权限策略数据。默认为true。 catalog_name 否 String catalog名称。只能包含字母、数字和下划线,且长度为1~256个字符。
  • 响应示例 状态码: 200 OK { "policy_version" : 217, "policy_updateTime" : "1657788005000", "policies" : [ { "allow_exceptions" : [ ], "data_mask_policy_items" : [ ], "deny_exceptions" : [ ], "deny_policy_items" : [ { "accesses" : [ { "is_allowed" : true, "type" : "select" } ], "conditions" : [ { "type" : "ip-range", "values" : [ "*.*.*.*" ] } ], "delegate_admin" : false, "groups" : [ "groupD" ], "roles" : [ ], "users" : [ ] } ], "id" : 39, "is_audit_enabled" : true, "is_default_policy" : false, "is_deny_all_else" : false, "is_enabled" : true, "name" : "database_a.test.[**]-table_all_column", "options" : { }, "policy_items" : [ { "accesses" : [ { "is_allowed" : true, "type" : "select" } ], "conditions" : [ ], "delegate_admin" : true, "groups" : [ "groupA" ], "roles" : [ ], "users" : [ ] }, { "accesses" : [ { "is_allowed" : true, "type" : "select" } ], "conditions" : [ ], "delegate_admin" : true, "groups" : [ "groupB" ], "roles" : [ ], "users" : [ ] } ], "policy_labels" : [ ], "policy_priority" : 0, "policy_type" : 0, "resources" : { "database" : { "is_excludes" : false, "is_recursive" : false, "values" : [ "database_a" ] }, "column" : { "is_excludes" : false, "is_recursive" : false, "values" : [ "**" ] }, "table" : { "is_excludes" : false, "is_recursive" : false, "values" : [ "test" ] } }, "row_filter_policy_items" : [ ], "service" : "Hive", "service_type" : "hive", "validity_schedules" : [ ] } ]} 状态码: 400 Bad Request { "error_code" : "common.01000001", "error_msg" : "failed to read http request, please check your input, code: 400, reason: Type mismatch., cause: TypeMismatchException"} 状态码: 401 Unauthorized { "error_code": 'APIG.1002', "error_msg": 'Incorrect token or token resolution failed'} 状态码: 403 Forbidden { "error" : { "code" : "403", "message" : "X-Auth-Token is invalid in the request", "error_code" : null, "error_msg" : null, "title" : "Forbidden" }, "error_code" : "403", "error_msg" : "X-Auth-Token is invalid in the request", "title" : "Forbidden"} 状态码: 404 Not Found { "error_code" : "common.01000001", "error_msg" : "response status exception, code: 404"} 状态码: 408 Request Timeout { "error_code" : "common.00000408", "error_msg" : "timeout exception occurred"} 状态码: 500 Internal Server Error { "error_code" : "common.00000500", "error_msg" : "internal error"}
  • URI GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目编号。获取方法,请参见获取项目ID。 instance_id 是 String LakeFormation实例ID。创建实例时自动生成。例如:2180518f-42b8-4947-b20b-adfc53981a25。 catalog_name 是 String catalog名称。只能包含字母、数字和下划线,且长度为1~256个字符。 database_name 是 String 数据库名称。只能包含中文、字母、数字、下划线、中划线,且长度为1~128个字符。 table_name 是 String 表名称。只能包含中文、字母、数字、下划线、中划线,且长度为1~256个字符。 表2 Query参数 参数 是否必选 参数类型 描述 version_id 否 String 版本ID,默认为最新版本
  • 响应示例 状态码: 200 OK { "catalog_name" : "hive", "database_name" : "dba", "table_name" : "www", "create_time" : "2022-11-19T03:10:14.000+00:00", "last_access_time" : "2022-12-31T23:59:59.000+00:00", "update_time" : null, "last_analyzed_time" : null, "owner" : "lakeformation", "owner_type" : "USER", "parameters" : { "ww" : "ww", "transient_lastDdlTime" : "1668827414", "classification" : "avro", "www" : "ww", "wwww" : "ww" }, "partition_keys" : [ ], "retention" : 0, "storage_descriptor" : { "columns" : [ { "column_type" : "tinyint", "column_name" : "ww", "comment" : null } ], "location" : "obs://lakeformation/test", "compressed" : true, "input_format" : "org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat", "output_format" : "org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat", "number_of_buckets" : 0, "bucket_columns" : [ ], "sort_columns" : [ ], "serde_info" : { "name" : "name", "serialization_library" : "org.apache.hadoop.hive.serde2.avro.AvroSerDe", "parameters" : { "serialization.format" : "1" } }, "parameters" : { }, "skewed_info" : { "skewed_column_names" : [ ], "skewed_column_value_location_maps" : { }, "skewed_column_values" : [ ] }, "stored_as_sub_directories" : false }, "table_format" : "HIVE", "table_type" : "MANAGED_TABLE", "comments" : "", "view_expanded_text" : "", "view_original_text" : ""} 状态码: 400 Bad Request { "error_code" : "common.01000001", "error_msg" : "failed to read http request, please check your input, code: 400, reason: Type mismatch., cause: TypeMismatchException"} 状态码: 401 Unauthorized { "error_code": 'APIG.1002', "error_msg": 'Incorrect token or token resolution failed'} 状态码: 403 Forbidden { "error" : { "code" : "403", "message" : "X-Auth-Token is invalid in the request", "error_code" : null, "error_msg" : null, "title" : "Forbidden" }, "error_code" : "403", "error_msg" : "X-Auth-Token is invalid in the request", "title" : "Forbidden"} 状态码: 404 Not Found { "error_code" : "common.01000001", "error_msg" : "response status exception, code: 404"} 状态码: 408 Request Timeout { "error_code" : "common.00000408", "error_msg" : "timeout exception occurred"} 状态码: 500 Internal Server Error { "error_code" : "common.00000500", "error_msg" : "internal error"}
  • 基本概念 账号 用户的账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用用户进行日常管理工作。 用户 由账号在 IAM 中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在获取项目ID下,您可以查看账号ID和用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 同样在获取项目ID下,您可以查看项目ID。 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出 父主题: 使用前必读