云服务器内容精选

  • 步骤二:创建存算分离集群 配置存算分离支持在新建集群中配置委托实现,也可以通过为已有集群绑定委托实现。本示例以开启Kerberos认证的集群为例介绍。 新创建存算分离集群: 进入购买MRS集群页面。 在购买集群页面,选择“自定义购买”页签。 图3 自定义购买集群 在“自定义购买”页签,填写“软件配置”参数。 区域:请根据需要选择。 集群名称:可以设置为系统默认名称,但为了区分和记忆,建议带上项目拼音缩写或者日期等。 集群版本:请选择集群版本。 集群类型:选择“分析集群”或“混合集群”并勾选所有组件。 元数据:选择“本地元数据”。 单击“下一步”,并配置硬件相关参数。 计费模式:选择“按需计费”。 可用区:默认即可。 虚拟私有云:默认即可。 子网:默认即可。 安全组:默认即可。 弹性公网IP:默认即可。 企业项目:默认即可。 CPU架构:默认即可。MRS 3.x之前版本支持该参数。 集群节点:请根据自身需求选择节点规格和数量。 单击“下一步”,并配置相关参数。 Kerberos认证:默认开启,请根据自身需要选择。 用户名:默认为“admin”,用于登录集群管理页面。 密码:设置admin用户密码。 确认密码:再次输入设置的admin用户密码。 登录方式:选择登录ECS节点的登录方式,本例选择密码方式。 用户名:默认为“root”,用于远程登录ECS机器。 密码:设置root用户密码。 确认密码:再次输入设置的root用户密码。 本例以配置委托为例介绍,其他参数暂不配置,如需配置请参考高级配置。 委托:选择步骤一:创建具有访问OBS权限的ECS委托所创建的委托或MRS在IAM服务中预置的委托MRS_ECS_DEFAULT_AGENCY。 图4 配置委托 勾选通信安全授权,详细信息请参见授权安全通信。 单击“立即购买”。等待集群创建成功。 当集群开启Kerberos认证时,需要确认是否需要开启Kerberos认证,若确认开启请单击“继续”,若无需开启Kerberos认证请单击“返回”关闭Kerberos认证后再创建集群。 为已有集群配置存算分离功能: 登录MRS控制台,在导航栏选择“现有集群”。 单击集群名称,进入集群详情页面。 在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步。 在集群详情页的“概览”页签,单击委托右侧的“管理委托”选择需要绑定的委托并单击“确定”进行绑定,或单击“新建委托”进入IAM控制台进行创建后再在此处进行绑定。 图5 绑定委托
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 authorization AgencyAuthorizeInfo object 获取云堡垒机委托授权凭据管理、密钥管理服务权限列表返回对象。 表4 AgencyAuthorizeInfo 参数 参数类型 描述 csms Boolean 凭据管理权限信息。 kms Boolean 密钥管理权限信息。 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 请求参数错误。 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 校验TOKEN失败。 状态码: 403 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 租户无权限操作。 状态码: 404 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_description String 没有找到CBH资源。
  • 步骤1:在IAM控制台创建云服务委托并授权 登录管理控制台。 单击右上方登录的用户名,在下拉列表中选择“统一身份认证”。 在左侧导航栏中,单击“委托”。 在“委托”页面,单击“创建委托”。 在“创建委托”页面,设置如下参数: 委托名称:按需填写,例如“dli_obs_agency_access”。 委托类型:选择“云服务”。 云服务:(“委托类型”选择“云服务”时出现此参数项。)在下拉列表中选择“DLI"。 持续时间:选择“永久”。 描述:非必选,可以填写“拥有OBS OperateAccess权限的委托”。 图2 创建委托 配置完委托的基本信息后,单击“下一步”。 授予当前委托所需的权限策略,单击“新建策略”。 配置策略信息。 输入策略名称,本例:dli-obs-agency。 选择“JSON视图”。 在策略内容中粘贴自定义策略。 本例权限包含访问和使用OBS的权限,适用于以下场景:DLI Flink作业下载OBS对象、OBS/DWS数据源(外表)、日志转储、使用savepoint、开启Checkpoint。DLI Spark作业下载OBS对象、读写OBS外表。 更多Flink作业常见委托权限配置请参考常见场景的委托权限策略。 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "obs:bucket:GetBucketPolicy", "obs:bucket:GetLifecycleConfiguration", "obs:bucket:GetBucketLocation", "obs:bucket:ListBucketMultipartUploads", "obs:bucket:GetBucketLogging", "obs:object:GetObjectVersion", "obs:bucket:GetBucketStorage", "obs:bucket:GetBucketVersioning", "obs:object:GetObject", "obs:object:GetObjectVersionAcl", "obs:object:DeleteObject", "obs:object:ListMultipartUploadParts", "obs:bucket:HeadBucket", "obs:bucket:GetBucketAcl", "obs:bucket:GetBucketStoragePolicy", "obs:object:AbortMultipartUpload", "obs:object:DeleteObjectVersion", "obs:object:GetObjectAcl", "obs:bucket:ListBucketVersions", "obs:bucket:ListBucket", "obs:object:PutObject" ], "Resource": [ "OBS:*:*:bucket:bucketName",//请替换bucketName为对应的桶名称 "OBS:*:*:object:*" ] }, { "Effect": "Allow", "Action": [ "obs:bucket:ListAllMyBuckets" ] } ] } 按需输入策略描述。 新建策略完成后,单击“下一步”,返回委托授权页面。 选择步骤8新建的自定义策略。 图3 选择自定义策略 单击“下一步”,选择委托的授权范围。 了解更多授权操作说明请参考创建用户组并授权。 所有资源:授权后,IAM用户可以根据权限使用账号中所有资源,包括企业项目、区域项目和全局服务资源。 全局服务资源:全局服务部署时不区分区域,访问全局级服务,不需要切换区域,全局服务不支持基于区域项目授权。如对象存储服务(OBS)、内容分发网络(CDN)等。授权后,用户根据权限使用全局服务的资源。 指定区域项目资源:授权后,IAM用户根据权限使用所选区域项目中的资源,未选择的区域项目中的资源,该IAM用户将无权访问。 指定企业项目资源:授权后,IAM用户根据权限使用所选企业项目中的资源。如企业项目A包含资源B,资源B部署在北京四和上海二,IAM用户所在用户组关联企业项目A后,北京四和上海二的资源B用户都可访问,不在企业项目A内的其他资源,该IAM用户将无权访问。 本例自定义策略中是OBS权限,因此选择全局服务资源。如果使用的是DLI权限,推荐选择“指定区域项目资源”。 单击“确定”,完成授权。 授权后需等待15-30分钟才可生效。
  • 约束与限制 自定义委托名称不可与系统默认委托重复,即不可以是dli_admin_agency、dli_management_agency、dli_data_clean_agency。 允许DLI按表生命周期清理数据的委托名称必须为dli_data_clean_agency。 仅Flink 1.15和Spark 3.3.1(Spark通用队列场景)及以上版本的引擎执行作业支持配置自定义委托。 更新委托权限后,系统将升级您的dli_admin_agency为dli_management_agency,新的委托包含跨源操作、消息通知、用户授权操作所需的权限。除此之外的其他委托权限需求都需要用户自定义委托。了解dli_management_agency请参考DLI委托概述。 常见新建委托场景:允许DLI读写OBS数据、日志转储、Flink checkopoint;允许DLI在访问DEW获取数据访问凭证、允许访问Catalog获取元数据等场景。以上场景的委托权限请参考常见场景的委托权限策略。
  • DLI自定义委托场景 表1 DLI自定义委托场景 场景 委托名称 适用场景 权限策略 允许DLI按表生命周期清理数据 dli_data_clean_agency 数据清理委托,表生命周期清理数据、Lakehouse表数据清理使用。 该委托需新建后自定义权限,但委托名称固定为dli_data_clean_agency。 数据清理委托权限配置 允许DLI读写OBS将日志转储 自定义 DLI Flink作业下载OBS对象、OBS/DWS数据源(外表)、日志转储、使用savepoint、开启checkpoint,DLI Spark作业下载OBS对象、读写OBS外表。 访问和使用OBS的权限策略 允许DLI在访问DEW获取数据访问凭证 自定义 DLI 作业使用DEW-CSMS凭证管理能力。 使用DEW加密功能的权限 允许访问DLI Catalog元数据 自定义 DLI 访问DLI元数据。 访问DLI Catalog元数据的权限 允许访问LakeFormation Catalog元数据 自定义 DLI 访问LakeFormation元数据。 访问LakeFormation Catalog元数据的权限
  • 响应示例 状态码: 200 Successful { "agency_list" : [ { "account_id" : "5146d03d8aaaaaaaaaaaabbae60620a5", "agency_name" : "example-agency-name", "permission_set_name" : "example-permission-set-name", "agency_urn" : "example-agency-urn", "description" : "example agency" } ], "page_info" : { "next_marker" : null, "current_count" : 1 } }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 agency_list Array of objects 满足查询条件的委托或信任委托对象列表。 page_info Object 包含分页信息的对象。 表4 agency_list 参数 参数类型 描述 account_id String 分配给用户的账号的全局唯一标识符(ID)。 agency_name String 分配给用户的委托或信任委托的名称。 permission_set_name String 权限集名称。 agency_urn String 委托或信任委托的统一资源名称(URN)。 description String 描述信息。 表5 page_info 参数 参数类型 描述 next_marker String 如果存在,则表示可用的输出比当前响应中包含的输出多。在对操作的后续调用中,在标签请求参数中使用此值,以获取输出的下一部分。您应该重复此操作,直到next_marker响应元素返回为null。 current_count Integer 本页返回条目数量。
  • 获取ServiceStage的业务地址、OBS地址、区域和认证授权 ServiceStage的业务地址、OBS地址、区域请联系ServiceStage的相关人员获取。 获取ServiceStage访问密钥,具体指导请参见访问密钥。 登录HCS,服务列表选择ServiceStage,下图红框中的地址即业务地址。 登录HCS,服务列表选择对象存储服务3.0,选择ROMA Exchange使用的桶,单击桶名称。进入桶“基本信息”页后,获取“Endpoint”的值,在该值前面拼接上https://,即为OBS地址,样例:https://obsv3.cn-global-10.huaweicloud.com。 父主题: 授权委托的信息获取
  • 参数说明 表1 参数说明 参数 是否必选 默认值 数据类型 参数说明 spark.hadoop.fs.obs.bucket.USER_BUCKET_NAME.dew.access.key 是 无 String 其中USER_BUCKET_NAME为用户的桶名,需要进行替换为用户的使用的OBS桶名。 参数的值为用户定义在CSMS通用凭证中的键key, 其Key对应的value为用户的AK(Access Key Id),需要具备访问OBS对应桶的权限。 spark.hadoop.fs.obs.bucket.USER_BUCKET_NAME.dew.secret.key 是 无 String 其中USER_BUCKET_NAME为用户的桶名,需要进行替换为用户的使用的OBS桶名。 参数的值为用户定义在CSMS通用凭证中的键key, 其Key对应的value为用户的SK(Secret Access Key),需要具备访问OBS对应桶的权限。 spark.hadoop.fs.obs.security.provider 是 无 String OBS AKSK认证机制,使用DEW服务中的CSMS凭证管理,获取OBS的AK、SK。 默认取值为com.dli.provider.UserObsBasicCredentialProvider spark.hadoop.fs.dew.csms.secretName 是 无 String 在DEW服务的凭据管理中新建的通用凭据的名称。 配置示例:spark.hadoop.fs.dew.csms.secretName=secretInfo spark.hadoop.fs.dew.endpoint 是 无 String 指定要使用的DEW服务所在的endpoint信息。 获取地区和终端节点。 配置示例:spark.hadoop.fs.dew.endpoint=kms.cn-xxxx.myhuaweicloud.com spark.hadoop.fs.dew.csms.version 否 最新的version String 在DEW服务的凭据管理中新建的通用凭据的版本号(凭据的版本标识符)。 若不指定,则默认获取该通用凭证的最新版本号。 配置示例: spark.hadoop.fs.dew.csms.version=v1 spark.hadoop.fs.dew.csms.cache.time.second 否 3600 Long Spark作业访问获取CSMS通用凭证后,缓存的时间。 单位为秒。默认值为3600秒。 spark.hadoop.fs.dew.projectId 否 有 String DEW所在的项目ID, 默认是Spark作业所在的项目ID。 获取项目ID spark.dli.job.agency.name 是 - String 自定义委托名称。
  • 前提条件 已在DEW服务创建通用凭证,并存入凭据值。具体操作请参考:创建通用凭据。 已创建DLI访问DEW的委托并完成委托授权。该委托需具备以下权限: DEW中的查询凭据的版本与凭据值ShowSecretVersion接口权限,csms:secretVersion:get。 DEW中的查询凭据的版本列表ListSecretVersions接口权限,csms:secretVersion:list。 DEW解密凭据的权限,kms:dek:decrypt。 委托权限示例请参考自定义DLI委托权限和常见场景的委托权限策略。 仅支持Spark3.3.1(Spark通用队列场景)及以上版本使用DEW管理访问凭据,在创建作业时,请配置作业使用Spark3.3.1版本、且已在作业中配置允许DLI访问DEW的委托信息。 自定义委托及配置请参考自定义DLI委托权限。 使用该功能,所有涉及OBS的桶,都需要进行配置AKSK。
  • 语法格式 在Spark Jar作业编辑界面,选择配置优化参数,配置信息如下: 不同的OBS桶,使用不同的AKSK认证信息。 可以使用如下配置方式,根据桶指定不同的AKSK信息,参数说明详见表1。 spark.hadoop.fs.obs.bucket.USER_BUCKET_NAME.dew.access.key= USER_AK_CSMS_KEY spark.hadoop.fs.obs.bucket.USER_BUCKET_NAME.dew.secret.key= USER_SK_CSMS_KEY spark.hadoop.fs.obs.security.provider = com.dli.provider.UserObsBasicCredentialProvider spark.hadoop.fs.dew.csms.secretName= CredentialName spark.hadoop.fs.dew.endpoint=ENDPOINT spark.hadoop.fs.dew.csms.version=VERSION_ID spark.hadoop.fs.dew.csms.cache.time.second =CACHE_TIME spark.dli.job.agency.name=USER_AGENCY_NAME
  • 样例代码 本章节JAVA样例代码演示将DataGen数据处理后写入到OBS,具体参数配置请根据实际环境修改。 创建DLI访问DEW的委托并完成委托授权。 详细步骤请参考自定义DLI委托权限。 在DEW创建通用凭证。详细操作请参考创建通用凭据。 登录DEW管理控制台 选择“凭据管理”,进入“凭据管理”页面。 单击“创建凭据”。配置凭据基本信息 DLI Spark jar作业编辑界面设置作业参数。 Spark参数: spark.hadoop.fs.obs.bucket.USER_BUCKET_NAME.dew.access.key= USER_AK_CSMS_KEY spark.hadoop.fs.obs.bucket.USER_BUCKET_NAME.dew.secret.key= USER_SK_CSMS_KEY spark.hadoop.fs.obs.security.provider=com.dli.provider.UserObsBasicCredentialProvider spark.hadoop.fs.dew.csms.secretName=obsAkSk spark.hadoop.fs.dew.endpoint=kms.xxx.xxx.com spark.hadoop.fs.dew.csms.version=v3 spark.dli.job.agency.name=agency 示例代码 示例代码请参考使用Spark Jar作业读取和查询OBS数据。
  • 操作场景 DLI将Spark Jar作业并的输出数据写入到OBS时,需要配置AKSK访问OBS,为了确保AKSK数据安全,您可以用过数据加密服务(Data Encryption Workshop,DEW)、云凭据管理服务(Cloud Secret Management Service,CSMS),对AKSK统一管理,有效避免程序硬编码或明文配置等问题导致的敏感信息泄露以及权限失控带来的业务风险。 本例以获取访问OBS的AKSK为例介绍Spark Jar使用DEW获取访问凭证读写OBS的操作指导。
  • 示例 本例以通过DataGen表产生随机数据并输出到Mysql结果表中为例,介绍Flink Opensource SQL使用DEW管理访问凭据的配置方法。 创建DLI与Mysql的增强型跨源连接。详细步骤请参考创建增强型跨源连接。 创建DLI访问DEW的委托并完成委托授权。详细步骤请参考自定义DLI委托权限。 在DEW创建通用凭证。详细操作请参考创建通用凭据。 登录DEW管理控制台 选择“凭据管理”,进入“凭据管理”页面。 单击“创建凭据”。配置凭据基本信息 本例配置Mysql的凭据值: "MySQLUsername":"demo" "MySQLPassword":"*******",其中"*******"为Mysql的访问密码 Flink作业编辑框中输入具体的作业SQL,本示例作业参考如下。 create table dataGenSource( user_id string, amount int ) with ( 'connector' = 'datagen', 'rows-per-second' = '1', --每秒生成一条数据 'fields.user_id.kind' = 'random', --为字段user_id指定random生成器 'fields.user_id.length' = '3' --限制user_id长度为3 ); CREATE TABLE jdbcSink ( user_id string, amount int ) WITH ( 'connector' = 'jdbc', 'url' = 'jdbc:mysql://MySQLAddress:MySQLPort/flink',--其中url中的flink表示MySQL中orders表所在的数据库名 'table-name' = 'orders', 'username' = 'MySQLUsername', -- DEW服务中,名称为secretInfo,且版本号v1的的通用凭证,定义凭证值的键MySQLUsername,它的值为用户的敏感信息。 'password' = 'MySQLPassword', -- DEW服务中,名称为secretInfo,且版本号v1的的通用凭证,定义凭证值的键MySQLPassword,它的值为用户的敏感信息。 'sink.buffer-flush.max-rows' = '1', 'dew.endpoint'='kms.cn-xxxx.myhuaweicloud.com', --使用的DEW服务所在的endpoint信息 'dew.csms.secretName'='secretInfo', --DEW服务通用凭据的凭据名称 'dew.csms.decrypt.fields'='username,password', --其中username,password字段值,需要利用DEW凭证管理,进行解密替换。 'dew.csms.version'='v1' ); insert into jdbcSink select * from dataGenSOurce;
  • 语法格式 create table tableName( attr_name attr_type (',' attr_name attr_type)* (',' WATERMARK FOR rowtime_column_name AS watermark-strategy_expression) ) with ( ... 'dew.endpoint'='', 'dew.csms.secretName'='', 'dew.csms.decrypt.fields'='', 'dew.projectId'='', 'dew.csms.version'='' );