• 关于 2019阿里云存储 的搜索结果

回答

Re小白如何购买阿里云服务器(2019新版最详细教程) 阿里云通用1888元优惠领取  阿里云高性能服务器  阿里云企业级服务器  阿里云建站模板  阿里云短信服务阿里云企业邮箱  阿里云对象存储OSS    阿里云关系型数据库Mysql  阿里云三种建站方案  阿里云学生服务器    阿里云学生服务器组团活动  阿里云CDN服务  阿里云教学视频-零基础上云搭建高可用网站  阿里云专区-所有优惠产品官方列表展示  

毓秀清荷 2019-12-02 00:59:09 0 浏览量 回答数 0

回答

Re小白如何购买阿里云服务器(2019新版最详细教程) 阿里云通用1888元优惠领取  阿里云高性能服务器  阿里云企业级服务器  阿里云建站模板  阿里云短信服务阿里云企业邮箱  阿里云对象存储OSS    阿里云关系型数据库Mysql  阿里云三种建站方案  阿里云学生服务器    阿里云学生服务器组团活动  阿里云CDN服务  阿里云教学视频-零基础上云搭建高可用网站  阿里云专区-所有优惠产品官方列表展示  

毓秀清荷 2019-12-02 00:59:09 0 浏览量 回答数 0

回答

问题1:节省方法:新老用户有优惠:领取1888元内部代金券,可以节省一笔开支新用户关注阿里云最新活动。比如最近的3月采购季节活动:2019阿里云3月采购季全场限时5折,云主机1元/日起https://www.aliyun.com/acts/product-section-2019/new-users?userCode=gy5l4yp9你要关注更多阿里云的最新活动,请收藏网址:组合购买,添加购物车,可以享受满减活动。记得要添加购物车哦,阿里云会自动帮你满减。问题2:你要构建健全和完善的网站和应用,都应该采用服务器搭配其它云产品一起使用。你需要用到数据库服务器,需要cdn,需要oss存储,当然还有很多很多

stefanie燕 2019-12-02 01:58:48 0 浏览量 回答数 0

海外云虚拟主机包年25元/月起

海外独享虚拟主机全面上线,助力构建海外网站,提升公司国际形象;全球有效覆盖,超高性价比;建站入门首选,助力出口,适合跨境贸易企业。

问题

【大咖问答】对话混合云存储专家,驻云科技架构师总监宋童

tech君 2019-12-01 19:36:06 207 浏览量 回答数 0

回答

问题1:节省方法: 新老用户有优惠:领取1888元内部代金券,可以节省一笔开支 新用户关注阿里云最新活动。比如最近的3月采购季节活动:2019阿里云3月采购季全场限时5折,云主机1元/日起https://www.aliyun.com/acts/product-section-2019/new-users。你要关注更多阿里云的最新活动,请收藏网址:http://cloud.yundashi168.com/ 组合购买,添加购物车,可以享受满减活动。记得要添加购物车哦,阿里云会自动帮你满减。 问题2: 你要构建健全和完善的网站和应用,都应该采用服务器搭配其它云产品一起使用。你需要用到数据库服务器,需要cdn,需要oss存储,当然还有很多很多。可以关注:http://cloud.yundashi168.com/ 获取更多知识。 企业采购阿里云服务器五折优惠 https://promotion.aliyun.com/ntms/act/enterprise-discount.html?userCode=ywqc0ubl添加购物车每满1000就有减免,记得添加购物车哦

毓秀清荷 2019-12-02 01:58:47 0 浏览量 回答数 0

回答

2019年3月阿里云发布全新的Apsara SA系列存储阵列,主要具有以下新特性: 多控横向扩展:全面提升混合云存储阵列的可扩展性和性能 存储双活容灾:实现RPO和RTO为零的存储双活容灾,保障业务连续性 存储异构虚拟化:透明接管三方存储阵列,实现数据无中断迁移和资源利旧 分布式RAID:有效提升RAID效率,保证数据可靠性和性能

1934890530796658 2020-03-30 17:01:02 0 浏览量 回答数 0

回答

oss对象存储是需要付费的,是指你的资源存储到oss一个存储费,如果你使用外网那么还需要一个下行流量包,建议包月更划算,详情阿里云双十一专场活动:https://www.aliyun.com/1111/2019/home?userCode=8giwrppt

云产品优惠 2019-12-02 03:05:20 0 浏览量 回答数 0

问题

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-12-01 19:35:11 153491 浏览量 回答数 14

问题

南康开诊断证明-rgw专有云、混合云、边缘云

游客5k2abgdj3m2ti 2019-12-01 22:08:38 2 浏览量 回答数 0

回答

您好,阿里云的很多产品是按使用量付费的,OSS是按使用量付费(存储量)和下行流量来计算费用的,如果您存储的数据量不大,那一天要要不要多少钱。主要看您的OSS是不是在用,或者对外开放连接..... 所以,建议您,如果存储量大,使用频率不高的文件,可以使用归档存储, 另外,建议您添加防盗链,避免别人使用您的资源,而带来流量被扣费。 针对您的问题:系统提示资源包2019年过期,说的是,您买的流量包还能使用到19年。

alvin.zhu 2019-12-02 00:41:25 0 浏览量 回答数 0

回答

下表介绍了Web+自2019年6月14日公测上线以来的迭代版本的重要功能说明以及相关文档链接。 2020-02-06 功能名称 功能描述 功能类型 相关文档 一键部署WordPress应用 可以在控制台上一键部署WordPress应用程序,默认使用单机部署的MySQL数据库,降低启动成本。 新增 一键启动WordPress 支持编排Redis资源 可以在控制台界面上直接添加和配置Redis资源。 新增 云数据库Redis 开放Nginx配置文件的编辑功能 在控制台概览页右侧可以查看各开发语言的快速入门交互式教程。 新增 反向代理服务器 免费的OSS存储空间 在创建应用的时候可以选择使用由系统提供的免费OSS存储空间。 优化 / 2019-12-05 功能名称 功能描述 功能类型 相关文档 支持域名托管 支持托管阿里云云解析和任何第三方域名服务提供商处注册的域名。 新增 域名托管 支持分批部署 当部署环境有多台实例的时候,支持按照指定规则进行分批部署,以保证业务不中断。 新增 部署环境 各开发语言的交互式教程 在控制台概览页右侧可以查看各开发语言的快速入门交互式教程。 新增 / 开通向导优化 支持一键开通及授权相关产品。 优化 开通Web+相关服务并授权 部署环境配置界面优化 以架构图的方式展现环境配置信息,并可以进行编辑操作。 优化 / 支持禁用健康检查 部署环境默认禁用健康检查,您可以在环境配置界面选择手动开启。 优化 配置健康检查 2019-09-29 功能名称 功能描述 功能类型 相关文档 代购ECS实例 支持使用控制台和CLI代购包年包月的ECS实例。 新增 ECS实例 代购SLB实例 支持使用CLI代购包年包月SLB实例。 新增 使用CLI配置SLB 代购RDS实例 支持使用CLI代购包年包月RDS实例。 新增 使用CLI配置RDS 支持HTTPS访问 可以在SLB和反向代理层配置证书实现HTTPS访问。 新增 为部署环境配置HTTPS 2019-09-25 功能名称 功能描述 功能类型 相关文档 正式商用 正式商用后Web+仍然免费,您只需要对用到的底层资源付费。 新增 / 2019-09-04 功能名称 功能描述 功能类型 相关文档 支持导入已购买的ECS实例 您在ECS控制台购买的ECS实例,可在Web+导入使用。 新增 导入ECS实例 支持.NET Core应用 支持在Web+控制台托管.NET Core应用。 新增 设置ASP.NET Core开发环境 部署ASP.NET Core应用至Web+ 支持Ruby应用 支持在Web+控制台托管Ruby应用。 新增 配置Ruby开发环境 部署Ruby on Rails应用至Web+ 显示部署环境资源 在部署环境概览页,可以展示部署环境内包含的资源。 新增 部署环境信息说明 2019-08-12 功能名称 功能描述 功能类型 相关文档 支持Python应用 支持在Web+控制台托管Python应用。 新增 设置Python开发环境 使用Flask开发应用 使用Django开发应用 反向代理优化 支持关闭反向代理服务器。 新增 反向代理服务器 2019-08-06 功能名称 功能描述 功能类型 相关文档 支持Go应用 支持在Web+控制台托管Go应用。 新增 设置Go开发环境 将Beego应用部署到Web+ 向Go应用的部署环境中添加RDS实例 支持PHP应用 支持在Web+控制台托管PHP应用。 新增 设置PHP开发环境 使用Symfony开发应用 使用Laravel框架开发应用 支持导入SLB实例 您在SLB控制台购买的SLB实例,可导入Web+使用。 新增 导入负载均衡SLB 应用生命周期挂钩脚本 Web+提供了通过设置命令来管理用户的服务进程,以及通过设置生命周期挂钩来简化部署、监控、运维和治理等应用生命周期管理操作。 新增 命令与生命周期挂钩 增加技术栈版本 在部分技术栈内,有多个技术栈版本可选择。 新增 技术栈 2019-07-25 功能名称 功能描述 功能类型 相关文档 功能优化 产品功能性能优化,使Web+的使用体验更良好。 优化 / 2019-07-15 功能名称 功能描述 功能类型 相关文档 支持Node.js应用 支持在Web+托管Node.js语言的应用。 新增 设置Node.js开发环境 将Express应用部署到Web+ 向Node.js应用部署环境中添加RDS数据库实例 支持RDS 支持在控制台和CLI内为部署环境配置RDS。 新增 云数据库RDS 变更操作清单 在部署环境中变更配置时,会罗列出变更资源的清单。 新增 / 2019-06-14 功能名称 功能描述 功能类型 相关文档 产品正式公测 Web+正式在阿里云公测上线,免费开放给用户托管应用。 新增 什么是Web应用托管服务Web+? 支持Java技术栈应用 支持在控制台和CLI内将Java技术栈的应用托管至Web+。 新增 设置Java开发环境 使用Spring Boot开发应用 向Java应用的部署环境中添加RDS实例 支持Tomcat技术栈应用 支持在控制台和CLI内将Tomcat技术栈的应用托管至Web+。 新增 项目文件夹结构设置 使用Web+部署Tomcat应用 日志和诊断 支持下载日志和诊断信息排查问题。 新增 查看日志 支持控制台部署 可以在控制台快速创建应用并部署。 新增 在Web+控制台快速部署应用 支持CLI部署 可以使用CLI快速创建应用并部署。 新增 使用CLI快速部署Java应用

1934890530796658 2020-03-23 15:41:58 0 浏览量 回答数 0

问题

,您开通的: 开放存储服务OSS,因欠费0.01元,累计欠费0.01元将会在24小时内停止服务,请您

1283839280050063 2019-12-01 19:23:05 64 浏览量 回答数 1

问题

新购买的oss资源包不能正常使用,但已经计费

网剑仙 2019-12-01 19:08:49 269 浏览量 回答数 1

问题

使用函数计算调用表格存储一直time out

游客pdvlbctrwqtt2 2019-12-01 19:39:11 1111 浏览量 回答数 1

问题

达摩院2020十大趋势与技术人之间的联系……

问问小秘 2020-01-06 10:58:22 45 浏览量 回答数 1

回答

选择裸金属服务器的最主要原因(超过55%)是:传统虚拟化技术I/O损耗较大;对于I/O密集型应用,裸金属相比传统虚拟机有更好的性能表现 此外近36%的客户认为:裸金属服务器可以降低成本。大多数企业在初始阶段采用将容器运行在虚拟机的方案,但是当大规模生产部署的时候,客户希望直接运行在裸金属服务器上来减少虚拟化技术的license成本(这也常被戏称为“VMWare税”)。 还有近30%的客户因为在物理机上部署有更少的额外资源开销(如虚拟化管理、虚拟机操作系统等);还有近24%的客户选择的原因是:可以有更高的部署密度,从而降低基础设施成本。 超过28%的客户认为,在物理机上可以更加灵活地选择网络、存储等设备和软件应用生态。 在公共云上,我们应该如何选择呢? 2017年10月,阿里云“神龙架构”横空出世。弹性裸金属服务器(ECS Bare Metal Instance)是一款同时兼具虚拟机弹性和物理机性能及特性的新型计算类产品,实现超强超稳的计算能力,无任何虚拟化开销。阿里云2019年8月重磅发布了弹性计算第六代企业级实例,基于神龙架构对虚拟化能力进行了全面升级 基于阿里自研神龙芯片和全新的轻量化Hypervisor - 极大减少虚拟化性能开销 基于阿里云智能神龙芯片和全新的轻量化VMM,将大量传统虚拟化功能卸载到专用硬件上,大大降低了虚拟化的性能开销,同时用户几乎可以获得所有的宿主机CPU和内存资源,提高整机和大规格实例的各项能力,尤其是I/O性能有了大幅度提升。 使用最新第二代英特尔至强可扩展处理器 - E2E性能提升 使用最新一代Intel Cascade Lake CPU, 突发主频提升至3.2GHz, 各场景E2E性能大幅提升,并在深度学习的多种场景有数倍的提升。 给企业级场景带来稳定和可预期的表现 - 全球最高水准SLA 针对软硬件优化以及更加实施更细致的QoS手段,给企业级客户的负载提供更稳定可预期的性能。 一般而言建议: 对性能极其敏感的应用,如高性能计算,裸金属实例是较好的选择。 如果需要Intel SGX,或者安全沙箱等技术,裸金属实例是不二选择。 六代虚拟机实例基于神龙架构,I/O性能有了显著提升,同时有更加丰富的规格配置,可以针对自身应用需求灵活选择,降低资源成本。 虚拟机实例支持热迁移,可以有效降低运维成本。 阿里云ACK K8s集群支持多个节点伸缩组(AutoScalingGroup),不同弹性伸缩组支持不同的实例规格。在工作实践,我们会为K8s集群划分静态资源池和弹性资源池。通常而言,固定资源池可以根据需要选择裸金属或者虚拟机实例。弹性资源池建议根据应用负载使用合适规格的虚拟机实例来优化成本、避免浪费,提升弹性供给保障。

游客bnlxddh3fwntw 2020-03-02 16:53:36 0 浏览量 回答数 0

问题

DB-Engines 2020年1月全球数据库排行榜

茶什i 2020-01-07 14:04:00 297 浏览量 回答数 1

回答

原版英文链接:点击这里 作者 | Md Kamaruzzaman 译者 | 无明 策划 | 小智 基础设施:条条道路通云端 对于云厂商来说,2019 年是硕果累累的一年。不仅初创公司在使用云计算,那些很注重安全的“保守派”公司(如政府机构、医疗保健机构、银行、保险公司,甚至是美国五角大楼)也在迁移到云端。这种趋势在 2020 年将会继续,大大小小的公司都将(或者至少有计划)迁移到云端。Gartner 公司最近发布了一个数字: 如果你是一个还在考虑要不要迁移到云端的决策者,不妨重新审视一下你的策略。如果你是一个独立开发者,并且还没使用过云基础设施,那么完全可以在 2020 年尝试一下。很多大型的云厂商(如亚马逊、微软、谷歌)都提供了免费的体验机会。谷歌在这方面做得特别大方,它提供了价值 300 美元的一年免费服务。 策划注:阿里、腾讯、华为等国内云厂商同样有免费云服务试用产品。 云平台:亚马逊领头,其他跟上 作为第一大云厂商,亚马逊在 2019 年可谓风生水起。凭借其丰富的产品组合,亚马逊将把它的优势延续到 2020 年。Canalys 发布的 2019 年第三季度报告指出,大型云厂商(AWS、Azure、GCP)占据 56% 的市场份额,其中 AWS 独享 32.6%。 其他云厂商也在努力缩短与 AWS 之间的差距。微软把主要目标转向了大型企业。最近,微软打败了亚马逊,从美国五角大楼拿到了一个 100 亿美元的大单子。这个单子将提升 Azure 的声誉,同时削弱 AWS 的士气。 谷歌一直在推动 CNCF,实现云计算运维的标准化。谷歌的长期目标是让云迁移变得更容易,方便企业从 AWS 迁移到 GCP。IBM 之前斥资 360 亿美元收购了 RedHat,也想要在云计算市场占有一席之地。 在亚太地区,阿里云市场规模超过了 AWS、Azure 的总和,全球排名第三。中国国内腾讯云等企业的增长势头也十分迅猛。 2020 年将出现更多的并购。当然,很多初创公司将会带来新的想法和创新,例如多云服务。因为竞争激烈,这些公司只能从降价和推出更多的创新产品来获取利润。 容器化:Kubernetes 将会更酷 在容器编排领域,虽然一度出现了“三足鼎立”(Kubernetes、Docker Swarm 和 Mesos),但 Kubernetes 最终脱颖而出,成为绝对的赢家。云是一个分布式系统,而 Kubernetes 是它的 OS(分布式的 Linux)。2019 年北美 KubeCon+CloudNativeCon 大会的参会者达到了 12000 名,比 2018 年增长了 50%。以下是过去 4 年参会人数的增长情况。 在 2020 年,Kubernetes 不仅不会后退,只会变得越来越强,你完全可以把赌注压在 Kubernetes 身上。另外值得一提的是,Migrantis 最近收购了 Docker Enterprise,不过收购数额不详。 几年前,人们张口闭口说的都是 Docker,而现在换成了 Kubernetes。Docker 在它的全盛时期未能盈利,反而在优势渐退几年之后才尝试变现。这再次说明,在现代技术世界,时机就是一切。 软件架构:微服务将成为主流 谷歌趋势表明,微服务架构范式在 2019 年持续增长了一整年。 随着软件行业整体逐步迁移到云端,微服务也将成为占主导地位的架构范式。微服务架构崛起的一个主要原因是它与云原生完美契合,可以实现快速的软件开发。我在之前的一篇博文中解释了微服务架构的基本原则及其优势和劣势。 https://towardsdatascience.com/microservice-architecture-a-brief-overview-and-why-you-should-use-it-in-your-next-project-a17b6e19adfd 我假设现在也存在一种回归到单体架构的趋势,因为在很多情况下,微服务架构有点过头了,而且做好微服务架构设计其实很难。微服务架构有哪些好的实践?在之前的另一篇博文中,我也给出了一些大概,希望对读者有用。 https://towardsdatascience.com/effective-microservices-10-best-practices-c6e4ba0c6ee2 编程语言(整体):Python 将吞噬世界 机器学习、数据分析、数据处理、Web 开发、企业软件开发,甚至是拼接黑洞照片,Python 的影子无处不在。 在著名的编程语言排行榜网站 TIOBE 上,Python 位居最流行编程语言第三位,仅次于 Java 和 C 语言。 更有意思的是,在 2019 年,Python 的流行度翻了一番(从 5% 到 10%)。 Python 的崛起将在 2020 年延续,并缩短与 Java 和 C 语言之间的差距。另一门无所不在的编程语言 JavaScript 正面临下行的风险。为什么 Python 的势头会如此强劲?因为它的入手门槛低,有一个优秀的社区在支持,并受到数据科学家和新生代开发者的喜爱。 编程语言(企业方面):Java 将占主导 之前的 TIOBE 网站截图显示,Java 仍然是一门占主导地位的编程语言,并将在 2020 年继续保持这种地位。JVM 是 Java 的基石,其他编程语言(如 Kotlin、Scala、Clojure、Groovy)也将 JVM 作为运行时。最近,Oracle 修改了 JVM 的许可协议。 新的许可协议意味着使用 Java、Kotlin、Scala 或其他 JVM 编程语言的公司需要向 Oracle 支付大额费用。所幸的是,OpenJDK 让 JVM 继续免费。另外,还有其他一些公司为 JVM 提供企业支持。 因为体积和速度方面的问题,基于 JVM 的编程语言并不适合用在今天的无服务器环境中。Oracle 正在推动 GraalVM 计划,旨在让 Java 变得更加敏捷和快速,让它更适合用在无服务器环境中。因为除了 Java,没有其他编程语言可以提供企业级的稳定性和可靠性,所以 Java 将在 2020 年继续占主导地位。 企业版 Java:Spring 继续发力 曾几何时,在企业开发领域,Spring 和 JavaEE 之间存在着白热化的竞争。但因为 Oracle 在 JavaEE 方面没有作为,在竞争中惨败,这导致了“MicroProfile”计划的形成,并最终促成了 JakartaEE。 虽然所有的政策和活动都是围绕 JavaEE 展开,但 Spring 事实上已经赢得了这场企业 JVM 之争。2020 年,Spring 将成为 JVM 生态系统的头牌。 有两个正在进展中的项目,它们旨在减小 Java 的体积,让它更适合用在无服务器环境中。 其中一个是 Micronaut(https://micronaut.io/)。 另一个是 Quarkus(https://quarkus.io/)。 这两个项目都使用了 GraalVM,它们在 2020 年将会得到 Java 社区更多的关注。 编程语言:后起之秀的突破 2000 年代,编程语言的发展出现了停滞。大多数人认为没有必要再去开发新的编程语言,Java、C 语言、C++、JavaScript 和 Python 已经可以满足所有的需求。但是,谷歌的 Go 语言为新编程语言大门打开了一扇大门。在过去十年出现了很多有趣的编程语言,比如 Rust、Swift、Kotlin、TypeScript。导致这种情况的一个主要原因是已有的编程语言无法充分利用硬件优势(例如多核、更快的网络、云)。另一个原因是现代编程语言更加关注开发者经济,即实现更快速更容易的开发。在 Stackoverflow 提供的一份开发者报告中,排名靠前的现代编程语言如下所示(Rust 连续 4 年名列第一)。 在之前的一篇博文中,我深入探讨了现代编程语言,对比 Rust 和 Go 语言,并说明了为什么现在是采用这些语言的好时机。 https://towardsdatascience.com/back-to-the-metal-top-3-programming-language-to-develop-big-data-frameworks-in-2019-69a44a36a842 最近,微软宣布他们在探索使用 Rust 来开发更安全的软件。 亚马逊最近也宣布要赞助 Rust。 谷歌宣布将 Kotlin 作为 Android 官方开发语言,所以,在 JVM 领域,Kotlin 成了 Java 的主要竞争对手。 Angular 使用 TypeScript 代替 JavaScript,将其作为主要的编程语言,其他 JavaScript 框架(如 React 和 Vue)也开始为 TypeScript 提供更多的支持。 这种趋势将在 2020 年延续下去,很多巨头公司将会深入了解新一代编程语言(如 Rust、Swift、TypeScript、Kotlin),它们会站出来公开表示支持。 Web:JavaScript 继续占主导地位 曾几何时,JavaScript 并不被认为是一门强大的编程语言。在当时,前端内容主要通过后端框架在服务器端进行渲染。2014 年,AngularJS 的出现改变了这种局面。从那个时候开始,更多的 JavaScript 框架开始涌现(Angular 2+、React、Vue、Meteor),JavaScript 已然成为主流的 Web 开发语言。随着 JavaScript 框架不断创新以及微服务架构的崛起,JavaScript 框架在 2020 年将继续主导前端开发。 JavaScript 框架:React 闪耀 虽然 React 是在 AngularJS 之后出现的,但在过去十年对 Web 开发产生了巨大的影响,这也让 Facebook 在与 Google+ 的竞争中打了一场胜战。React 为前端开发带来了一些新的想法,比如事件溯源、虚拟 DOM、单向数据绑定、基于组件的开发,等等。它对开发者社区产生了重大影响,以至于谷歌放弃了 AngularJS,并借鉴 React 的想法推出了彻底重写的 Angular 2+。React 是目前为止最为流行的 JavaScript 框架,下图显示了相关的 NPM 下载统计信息。 为了获得更好的并发和用户体验,Facebook 宣布完全重写 React 的核心算法,推出了 React-Fiber 项目。 2020 年,React 仍然是你开发新项目的首选 Web 框架。其他框架(如 Angular/Angular 2+ 或 Vue)呢?Angular 仍然是一个不错的 Web 开发框架,特别适合企业开发。我敢肯定谷歌在未来几年会在 Angular 上加大投入。Vue 是另一个非常流行的 Web 框架,由中国的巨头公司阿里巴巴提供支持。如果你已经在使用 Angular 或 Vue,就没必要再迁移到 React 了。 App 开发:原生应用 在移动 App 开发方面,有关混合应用开发的炒作有所消停。混合开发提供了更快的开发速度,因为只需要一个开发团队,而不是多个。但原生应用提供了更好的用户体验和性能。另外,混合应用需要经过调整才能使用一些高级特性。对于企业来说,原生应用仍然是首选的解决方案,这种趋势将在 2020 年延续。Airbnb 在一篇博文中非常详细地说明了为什么他们要放弃混合应用开发平台 React Native。 https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a 尽管 Facebook 尝试改进 React Native,谷歌也非常努力地推动混合 App 开发平台 Flutter,但它们仍然只适合用于原型、POC、MVP 或轻量级应用的开发。所以,原生应用在 2020 年仍将继续占主导地位。 在原生应用开发方面,谷歌和苹果分别将 Kotlin 和 Swift 作为各自平台主要的编程语言。谷歌最近再次重申了对 Kotlin 的支持,这对于 Kotlin 用户来说无疑是个好消息。 混合应用开发:React Native 在很多情况下,混合应用是个不错的选择。在这方面也有很多选择:Xamarin、Inoic、React Native 和 Flutter。Facebook 基于成熟的 React 框架推出了 React Native。就像 React 在 Web 框架领域占据主导地位一样,React Native 在混合应用领域也占据着主导地位,如下图所示。 React Native 和 React 有共同的基因,都提供了高度的代码重用性以及“一次开发,到处运行”的能力。React Native 的另一个优势是 Facebook 本身也用它来开发移动应用。谷歌在这个领域起步较晚,但在去年,谷歌的混合应用开发框架 Flutter 获得了不少关注。Flutter 提供了更好的性能,但需要使用另一门不是那么流行的编程语言 Dart。React Native 在 2020 年将继续占主导地位。 API:REST 将占主导地位 REST 是 API 领域事实上的标准,被广泛用在基于 API 的服务间通信上。当然,除了 REST,我们还有其他选择,比如来自谷歌的 gRPC 和来自 Facebook 的 GraphQL。 它们提供了不同的能力。谷歌开发的 gRPC 作为远程过程调用(如 SOAP)的化身,使用 Protobuf 代替 JSON 作为消息格式。Facebook 开发的 GraphQL 作为一个集成层,避免频繁的 REST 调用。gRPC 和 GraphQL 都在各自的领域取得了成功。2020 年,REST 仍然是占主导地位的 API 技术,而 GraphQL 和 gRPC 将作为补充技术。 人工智能:Tensorflow 2.0 将占主导地位 谷歌和 Facebook 也是深度学习 / 神经网络领域的主要玩家。谷歌基于深度学习框架 Theano 推出了 TensorFlow,它很快就成为深度学习 / 神经网络的主要开发库。谷歌还推出了特别设计的 GPU(TPU)来加速 TensorFlow 的计算。 Facebook 在深度学习领域也不甘落后,他们拥有世界上最大的图像和视频数据集合。Facebook 基于另一个深度学习库 Torch 推出了深度学习库 PyTorch。TensorFlow 和 PyTorch 之间有一些区别,前者使用的是静态图进行计算,而 PyTorch 使用的是动态图。使用动态图的好处是可以在运行时纠正自己。另外,PyTorch 对 Python 支持更好,而 Python 是数据科学领域的一门主要编程语言。 随着 PyTorch 变得越来越流行,谷歌也赶紧在 2019 年 10 月推出了 TensorFlow 2.0,也使用了动态图,对 Python 的支持也更好。 2020 年,TensorFlow 2.0 和 PyTorch 将齐头并进。考虑到 TensorFlow 拥有更大的社区,我估计 TensorFlow 2.0 将成为占主导地位的深度学习库。 数据库:SQL是王者,分布式SQL是王后 在炒作 NoSQL 的日子里,人们嘲笑 SQL,还指出了 SQL 的种种不足。有很多文章说 NoSQL 有多么的好,并将要取代 SQL。但等到炒作的潮水褪去,人们很快就意识到,我们的世界不能没有 SQL。以下是最流行的数据库的排名。 可以看到,SQL 数据库占据了前四名。SQL 之所以占主导地位,是因为它提供了 ACID 事务保证,而 ACID 是业务系统最潜在的需求。NoSQL 数据库提供了横向伸缩能力,但代价是不提供 ACID 保证。 互联网公司一直在寻找“大师级数据库”,也就是既能提供 ACID 保证又能像 NoSQL 那样可横向伸缩的数据库。目前有两个解决方案可以部分满足对“大师级数据库”的要求,一个是亚马逊的 Aurora,一个是谷歌的 Spanner。Aurora 提供了几乎所有的 SQL 功能,但不支持横向写伸缩,而 Spanner 提供了横向写伸缩能力,但对 SQL 支持得不好。 2020 年,但愿这两个数据库能够越走越近,或者有人会带来一个“分布式 SQL”数据库。如果真有人做到了,那一定要给他颁发图灵奖。 数据湖:MinIO 将要崛起 现代数据平台非常的复杂。企业一般都会有支持 ACID 事务的 OLTP 数据库(SQL),也会有用于数据分析的 OLAP 数据库(NoSQL)。除此之外,它们还有其他各种数据存储系统,比如用于搜索的 Solr、ElasticSearch,用于计算的 Spark。企业基于数据库构建自己的数据平台,将 OLTP 数据库的数据拷贝到数据湖中。各种类型的数据应用程序(比如 OLAP、搜索)将数据湖作为它们的事实来源。 HDFS 原本是事实上的数据湖,直到亚马逊推出了对象存储 S3。S3 可伸缩,价格便宜,很快就成为很多公司事实上的数据湖。使用 S3 唯一的问题是数据平台被紧紧地绑定在亚马逊的 AWS 云平台上。虽然微软 Azure 推出了 Blob Storage,谷歌也有类似的对象存储,但都不是 S3 的对手。 对于很多公司来说,MinIO 或许是它们的救星。MinIO 是一个开源的对象存储,与 S3 兼容,提供了企业级的支持,并专门为云原生环境而构建,提供了与云无关的数据湖。 微软在 Azure Marketplace 是这么描述 MinIO 的:“为 Azure Blog Storage 服务提供与亚马逊 S3 API 兼容的数据访问”。如果谷歌 GCP 和其他云厂商也提供 MinIO,那么我们将会向多云迈出一大步。 大数据批处理:Spark 将继续闪耀 现如今,企业通常需要基于大规模数据执行计算,所以需要分布式的批处理作业。Hadoop 的 Map-Reduce 是第一个分布式批处理平台,后来 Spark 取代了 Hadoop 的地位,成为真正的批处理之王。Spark 是怎样提供了比 Hadoop 更好的性能的?我之前写了另一篇文章,对现代数据平台进行了深入分析。 https://towardsdatascience.com/programming-language-that-rules-the-data-intensive-big-data-fast-data-frameworks-6cd7d5f754b0 Spark 解决了 Hadoop Map-Reduce 的痛点,它将所有东西放在内存中,而不是在完成每一个昂贵的操作之后把数据保存在存储系统中。尽管 Spark 重度使用 CPU 和 JVM 来执行批处理作业,但这并不妨碍它成为 2020 年批处理框架之王。我希望有人能够使用 Rust 开发出一个更加高效的批处理框架,取代 Spark,并为企业省下大量的云资源费用。 大数据流式处理:Flink 是未来 几年前,实现实时的流式处理几乎是不可能的事情。一些微批次处理框架(比如 Spark Streaming)可以提供“几近”实时的流式处理能力。不过,Flink 改变了这一状况,它提供了实时的流式处理能力。 2019 年之前,Flink 未能得到足够的关注,因为它无法撼动 Spark。直到 2019 年 1 月份,中国巨头公司阿里巴巴收购了 Data Artisan(Flink 背后的公司)。 在 2020 年,企业如果想要进行实时流式处理,Flink 应该是不二之选。不过,跟 Spark 一样,Flink 同样重度依赖 CPU 和 JVM,并且需要使用大量的云资源。 字节码:WebAssembly将被广泛采用 我从 JavaScript 作者 Brandon Eich 的一次访谈中知道了 WebAssembly 这个东西。现代 JavaScript(ES5 之后的版本)是一门优秀的编程语言,但与其他编程语言一样,都有自己的局限性。最大的局限性是 JavaScript 引擎在执行 JavaScript 时需要读取、解析和处理“抽象语法树”。另一个问题是 JavaScript 的单线程模型无法充分利用现代硬件(如多核 CPU 或 GPU)。正因为这些原因,很多计算密集型的应用程序(如游戏、3D 图像)无法运行在浏览器中。 一些公司(由 Mozilla 带领)开发了 WebAssembly,一种底层字节码格式,让任何一门编程语言都可以在浏览器中运行。目前发布的 WebAssembly 版本可以支持 C++、Rust 等。 WebAssembly 让计算密集型应用程序(比如游戏和 AutoCAD)可以在浏览器中运行。不过,WebAssembly 的目标不仅限于此,它还要让应用程序可以在浏览器之外运行。WebAssembly 可以被用在以下这些“浏览器外”的场景中。 移动设备上的混合原生应用。没有冷启动问题的无服务器计算。在服务器端执行不受信任的代码。 我预测,2020 年将是 WebAssembly 取得突破的一年,很多巨头公司(包括云厂商)和社区将会拥抱 WebAssembly。 代码:低代码 / 无代码将更进一步 快速的数字化和工业 4.0 革命意味着软件开发者的供需缺口巨大。由于缺乏开发人员,很多企业无法实现它们的想法。为了降低进入软件开发的门槛,可以尝试无代码(No Code)或低代码(Low Code)软件开发,也就是所谓的 LCNC(Low-Code No-Code)。它已经在 2019 年取得了一些成功。 LCNC 的目标是让没有编程经验的人也能开发软件,只要他们想要实现自己的想法。 虽然我对在正式环境中使用 LCNC 框架仍然心存疑虑,但它为其他公司奠定了良好的基础,像亚马逊和谷歌这样的公司可以基于这个基础构建出有用的产品,就像 AWS Lambda 的蓬勃发展是以谷歌 App Engine 为基础。 2020 年,LCNC 将会获得更多关注。

茶什i 2019-12-26 11:57:03 0 浏览量 回答数 0

回答

由于DDL语句无法回滚,开发或运维人员如果误操作(例如DROP TABLE)可能会导致数据丢失。阿里云支持回收站(Recycle Bin)功能,临时将删除的表转移到回收站,还可以设置保留的时间,方便您找回数据,同时提供了工具包(DBMS_RECYCLE)便于您快捷使用。 Recycle Bin参数 Recycle Bin设计了如下五个参数。 参数 说明 recycle_bin 是否打开回收站功能,包括session级别和global级别。 recycle_bin_retention 回收站保留时间,单位:秒。默认为604800,即一周。 recycle_scheduler 是否打开回收站的异步清理任务线程。 recycle_scheduler_interval 回收站异步清理任务线程的轮询间隔,单位:秒。默认为30。 recycle_scheduler_purge_table_print 是否打印异步清理现场工作的详细日志。 Recycle Bin介绍 回收/清理机制 回收机制 执行DROP TABLE/DATABASE语句时,只保留相关的表对象,并移动到专门的recycle bin目录中。其它对象的删除策略如下: 如果是与表无关的对象,根据操作语句决定是否保留,不做回收。 如果是表的附属对象,可能会修改表数据的,做删除处理,例如Trigger和Foreign key。 但Column statistics不做清理,随表进入回收站。 清理机制 回收站会启动一个后台线程,来异步清理超过recycle_bin_retention时间的表对象。在清理回收站表的时候,如果遇到大表,会再启动一个后台线程异步删除大表。 权限 RDS MySQL实例启动时,会初始化一个名为__recycle_bin__的数据库,作为回收站使用的专有数据库。recycle_bin__是系统级数据库,您无法直接进行修改和删除。 对于回收站内的表,虽然您无法直接执行drop table语句,但是可以使用call dbms_recycle.purge_table(' ');进行清理。 说明 账号在原表和回收站表都需要具有DROP权限。 回收站表命名规则 Recycle Bin会从不同的数据库回收到统一的__recycle_bin__数据库中,所以需要保证目标表表名唯一,所以定义了如下命名格式: " + 参数说明如下。 参数 说明 Storage Engine 存储引擎名称。 SE private id 存储引擎为每一个表生成的唯一值。例如在InnoDB引擎中就是table id。 独立回收 回收的设置只会影响该实例本身,不会影响到binlog复制到的节点(备实例、只读实例和灾备实例)上。例如我们可以在主实例上设置回收,保留7天;在备实例上设置回收,保留14天。 说明 回收站保留周期不同,将导致实例的空间占用差别比较大。 注意事项 如果回收站数据库和待回收的表跨了文件系统,执行drop table语句将会搬迁表空间文件,耗时较长。 如果Tablespace为General,可能会存在多个表共享同一个表空间的情况,当回收其中一张表的时候,不会搬迁相关的表空间文件。 前提条件 实例版本为RDS MySQL 8.0。 管理Recycle Bin AliSQL在DBMS_RECYCLE中定义了两个管理接口。详细说明如下: show_tables 展示回收站中所有临时保存的表。命令如下: call dbms_recycle.show_tables(); 示例: mysql> call dbms_recycle.show_tables(); +-----------------+---------------+---------------+--------------+---------------------+---------------------+ | SCHEMA | TABLE | ORIGIN_SCHEMA | ORIGIN_TABLE | RECYCLED_TIME | PURGE_TIME | +-----------------+---------------+---------------+--------------+---------------------+---------------------+ | recycle_bin | __innodb_1063 | product_db | t1 | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | | recycle_bin | __innodb_1064 | product_db | t2 | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | | recycle_bin | __innodb_1065 | product_db | parent | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | | recycle_bin | __innodb_1066 | product_db | child | 2019-08-08 11:01:46 | 2019-08-15 11:01:46 | +-----------------+---------------+---------------+--------------+---------------------+---------------------+ 4 rows in set (0.00 sec) 参数 说明 SCHEMA 回收站的数据库名。 TABLE 进入回收站后的表名。 ORIGIN_SCHEMA 原数据库名。 ORIGIN_TABLE 原表名。 RECYCLED_TIME 回收时间。 PURGE_TIME 预计从回收站删除的时间。 purge_table 手动清理回收站中的表。命令如下: call dbms_recycle.purge_table(' " + '); 说明 TABLE为进入回收站后的表名。 账号在原表和回收站表都需要具有DROP权限。 示例: mysql> call dbms_recycle.purge_table('__innodb_1063'); Query OK, 0 rows affected (0.01 sec)

游客yl2rjx5yxwcam 2020-03-08 13:29:34 0 浏览量 回答数 0

问题

视屏无法上传

1748197519347050 2019-12-01 18:50:30 81 浏览量 回答数 0

回答

其实从去年已经隐隐约约感觉到数据库的有变化,只是没有想到变得这么快。今年的一些事情实实在在地给了某些数据库重击,如果以前去某数据库还是喊喊,然后该用还用,今年从传统领域刮起的去某数据库的风,已经开始了,并且后面的乌云密布也看得见。 最近看一篇国外的开源产品提供厂商的一篇文字,主要是在询问了他的几百位客户后得出了下图中的2019年数据库的使用趋势。 从图中可以看出,MySQL以38.9%的使用率高居榜首,其次是MongoDB(24.6%)、PostgreSQL(17.4%)、Redis(8.4%)和Cassandra(3.0%)。在这些数据库中,Oracle仅占1.8%,而CouchDB、Berkeley DB、Microsoft SQL Server、Redshift、Firebase、Elasticsearch 整合后的影响力和用户的总和仅为2.4%。 但该调查报告却与DB-engine排名趋势流行度报告大相径庭,Oracle数据库在此报告中排名第一,不过笔者认为,任何文字都是可能是偏颇或有倾向性的,每个人看完后都可能有自己的想法,或认同或反对,就如同最近最热的一句话“人心中的成见是一座大山,任你怎么努力休想搬动”。 MySQL 仍然是排名第一的免费开源数据库,占开源数据库使用量的 30% 以上。这并不奇怪,根据 DB-Engines,MySQL 多年来一直保持在这个位置。根据笔者多年来的从业经验,我认为MySQL数据库确实配得上这个排名,原因如下。 1.完全开源 MySQL最强大的优势之一在于他的数据库管理系统(DBMS,Database Management System)是一个开源系统。当然,开源并不意味着免费,它还是有许多付费功能。但是开源的特点给予用户可以根据自己需要修改DBMS的自由。 MySQL采用了GPL(General Public License),这意味着授权给用户可以阅读,修改和优化源代码,这样即使是免费版的MySQL的功能也足够强大。这也是MySQL如此受欢迎的原因之 一。 2.快速更新和用户友好 在其他数据库(例如Orcale、MSSQL Sever)更新缓慢的时候,MySQL很少让他的用户等待。每当新的版本出来之后,MySQL都会成为大多数服务器的主要数据库。Linux web服务器已经成为现在web服务器的主流,MySQL在linux服务器上面也得到了广泛的应用。 3.WebsitePanel,phpMyAdmin 和MySQl的黄金组合 对于初学者来说,通过虚拟主机商提供的websitepanel控制面板学习MySQL是一个很不错的方法。用户不仅可以观看很多视频教程来学习使用 MySQL,还可以使用PhpMyAdmin通过web方式管理数据库。 PostgreSQL 以 13.4% 的开源数据库用户比例位居第二,紧随其后的是 MongoDB,占 12.2%,位列第三。 如果你经常光顾某些网站,或者大型公众号,你应该知道今年最热的事情有两个,postgresql和大数据,今年算是postgresql在中国的开始发展的元年,知道的人和使用的人也越来越多。 根据DB-engine数据库流行榜发布的数据显示,Oracle与MySQL与去年相比都产生了一定的退步,唯独postgresql呈现上升趋势,比去年同月份提高了85.18%,这进一步说明数据库领域正在涌现出更多的新生力量,与之前将所有鸡蛋都放在一个篮子里的传统策略相比,IT行业的工作者正在使用多种数据库来支持他们的产品,多数据库类型的使用在过去10年出现了爆炸式增长。 在我们的调查中,几乎有一半实际上使用不止一种类型的数据库来支持他们的应用程序,而不是单个数据库,使用多个数据库的比例为44.3%,使用一个数据库的比例为55.7%,他们喜欢的数据库组合如下。 现在,让我们仔细研究一下在单个应用程序中最常用的数据库类型。 在下面的图表中,左边列中的数据库表示该数据库类型的样本量,上面列出的数据库表示与该数据库类型组合的百分比。蓝色显示的单元格表示 100% 的部署组合,而黄色表示 0% 的组合。 因此,如下面的数据库组合热图所示,MySQL 是我们与其他数据库类型结合最频繁的数据库。但是,虽然其他数据库类型经常与 MySQL 一起使用,但这并不意味着 MySQL 部署总是使用另一种数据库类型。这可以在 MySQL 的第一行看到,其颜色为浅蓝到黄色,相比之下,MySQL 第一列的颜色要和表示 100% 组合的蓝色的匹配度高许多。 用黑色边框突出显示的单元格表示仅利用这一种数据库类型的部署,其中仅使用 MySQL 的单元格占部署总数的 23%。 其实,这些数据也比较精准的反映了国内的情况,从2005年开始,IT企业在数据库的发展方向上就已经有了一些变化。 2007年开始阿里巴巴的IT开销史无前例,一度成为IBM、Oracle中国的标杆客户,淘宝、阿里巴巴B2B和支付宝等公司,98%以上的软件系统和业务都是采用Oracle数据库提供数据服务。2009年淘宝更是上了全球排名前几位的大RAC集群,据说当年有16个节点。每天早上CPU还是跑到98%。换句话来说,三年几千万买Oracle产品+服务也没办法支撑阿里成长的速度,只能开启自研模式,于是就有了Oracle全面转向MySQL的进程。 拆分Oracle数据库+Hadoop其实也可以撑一撑,但是这样的话,还要向Oracle购买更多的License(再花几千万,不是没钱,是即便花钱也不能彻底解决问题)。因此,阿里巴巴B2B将中文站压力和数据容量最大的Offer数据库,成功从Oracle数据库+IBM小型机+EMC2存储设备,迁移到MySQL数据库+PC Server的模式,所以淘宝2013年下线了最后一个Oracle,2014年支付宝交易替换了Oracle,2016年支付宝总账全面用OceanBase替换Oracle。 发展趋势: 1.“去Oracle化”。一方面是Oracle采用scale up而不是scale out的方案;另外一个重要原因是价格。网易和阿里巴巴都曾经以Oracle作为主要的数据库解决方案,投资几千万来采购License。阿里巴巴曾经还自称是互联网企业中Oracle的最大用户。Oracle最大的优势是运维简单,应用开发方便,但是和昂贵的价格相比,这一点不再具备吸引力。 2.优化MySQL数据库。这些互联网企业采用了大量的MySQL服务器集群,最大集群在150台服务器左右。承载了包括博客、电子商务等应用。采用的优化包括: 传统的SQL优化,如减少某个查询涉及到的列,控制索引数量等 闪存介质(SSD或者Flash卡)。这是几乎所有互联网企业都采用的方法,由于测试场景各不相同,因此没法比较谁家的方案更好。大体上分成直接使用闪存介质作为存储系统;优化闪存介质访问方式进一步优化 设计MySQL存储引擎 3.NoSQL数据库。NoSQL对应用养发提出了较高的要求,在项目中不是那么容易推广,一致性要求被放松,但是“原子性”支持需要被保证。一般是为了满足高并发需要才引入。如盛大采用MongoDB,淘宝自研了Tair数据库(已经开源) 4.分布式数据库。众所周知,使用不同的SQL优化与执行方式,数据库的访问性能可能会存在上千上万倍的差距。计算存储分离的核心思想便是在数据存储层面进行一体化存储,而计算层面则有效利用每种执行引擎的特点,针对不同的业务场景进行选择和优化。 所以,如果具有超强的研发团队和运维团队,在云时代还是有机会替代Oracle的,我们也看到伴随着人口红利,在软件开发领域的我国实力已今非昔比,大部分企业的 “去IOE”的进程更多的是自发的因系统架构优化而进行,同时各种数据库技术与产品也蓬勃发展,所以,在技术上看Oracle并非不能取代,更多的是出于综合成本(改造与建设成本、分享)的考量,需要的是时间和意志。 一千个人眼里就有一千个哈姆雷特,在每个开发者和企业的眼中,只有适合自己的数据库才是最好的。

问问小秘 2020-01-06 14:58:56 0 浏览量 回答数 0

回答

数据准备 HDFS是Hadoop/Spark批处理作业最常用的数据存储之一,目前阿里云的HDFS也已经开始公测。本文将演示在HDFS中创建一个文件,并在Spark应用中进行访问。 1、开通HDFS服务,并创建文件系统 2、设置权限组 1、创建权限组 2、设置权限组的规则eci-hdfs-3 3、为挂载点添加权限组 至此HDFS文件系统就准备完毕。 3、安装Apache Hadoop Client。 HDFS文件系统准备就绪后,就是存入文件。我们采用HDFS client的方式。 Apache Hadoop下载地址:官方链接。建议选用的Apache Hadoop版本不低于2.7.2,本文档中使用的Apache Hadoop版本为Apache Hadoop 2.7.2。 1、执行如下命令解压Apache Hadoop压缩包到指定文件夹。 tar -zxvf hadoop-2.7.2.tar.gz -C /usr/local/ 2、执行如下命令打开core-site.xml配置文件。 vim /usr/local/hadoop-2.7.2/etc/hadoop/core-site.xml 修改core-site.xml配置文件如下: fs.defaultFS dfs://f-4b1fcae5dvexx.cn-hangzhou.dfs.aliyuncs.com:10290 fs.dfs.impl com.alibaba.dfs.DistributedFileSystem fs.AbstractFileSystem.dfs.impl com.alibaba.dfs.DFS io.file.buffer.size 8388608 alidfs.use.buffer.size.setting false dfs.usergroupservice.impl com.alibaba.dfs.security.LinuxUserGroupService.class dfs.connection.count 256 注:由于我们是on k8s,所以yarn相关的配置项不用配置,只用配置HDFS相关的几个配置项。修改后的core-site.xml文件后在面很多地方会用到。 3、执行如下命令打开/etc/profile配置文件。 vim /etc/profile 添加环境变量 export HADOOP_HOME=/usr/local/hadoop-2.7.2 export HADOOP_CLASSPATH=/usr/local/hadoop-2.7.2/etc/hadoop:/usr/local/hadoop-2.7.2/share/hadoop/common/lib/:/usr/local/hadoop-2.7.2/share/hadoop/common/:/usr/local/hadoop-2.7.2/share/hadoop/hdfs:/usr/local/hadoop-2.7.2/share/hadoop/hdfs/lib/:/usr/local/hadoop-2.7.2/share/hadoop/hdfs/:/usr/local/hadoop-2.7.2/share/hadoop/yarn/lib/:/usr/local/hadoop-2.7.2/share/hadoop/yarn/:/usr/local/hadoop-2.7.2/share/hadoop/mapreduce/lib/:/usr/local/hadoop-2.7.2/share/hadoop/mapreduce/:/usr/local/hadoop-2.7.2/contrib/capacity-scheduler/*.jar export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.2/etc/hadoop 执行如下命令使配置生效。 source /etc/profile 注:我们只需要一个HDFS client即可,不需要部署HDFS集群。 4、添加阿里云HDFS依赖 cp aliyun-sdk-dfs-1.0.3.jar /usr/local/hadoop-2.7.2/share/hadoop/hdfs 下载地址:此处下载文件存储HDFS的SDK。 4、上传数据 #创建数据目录 [root@liumi-hdfs ~]# $HADOOP_HOME/bin/hadoop fs -mkdir -p /pod/data #将本地准备的文件(一本小说文本)上传到hdfs [root@liumi-hdfs ~]# $HADOOP_HOME/bin/hadoop fs -put ./A-Game-of-Thrones.txt /pod/data/A-Game-of-Thrones.txt #查看,文件大小为30G [root@liumi-hdfs local]# $HADOOP_HOME/bin/hadoop fs -ls /pod/data Found 1 items -rwxrwxrwx 3 root root 33710040000 2019-11-10 13:02 /pod/data/A-Game-of-Thrones.txt 至此HDFS数据准备部分就已经ready。 在spark应用中读取HDFS的数据 1、开发应用 应用开发上跟传统的部署方式没有区别。 SparkConf conf = new SparkConf().setAppName(WordCount.class.getSimpleName()); JavaRDD lines = sc.textFile("dfs://f-4b1fcae5dvxxx.cn-hangzhou.dfs.aliyuncs.com:10290/pod/data/A-Game-of-Thrones.txt", 250); ... wordsCountResult.saveAsTextFile("dfs://f-4b1fcae5dvxxx.cn-hangzhou.dfs.aliyuncs.com:10290/pod/data/A-Game-of-Thrones-Result"); sc.close(); 2、将前面的core-site.xml放入应用项目的resources目录 fs.defaultFS dfs://f-4b1fcae5dvexx.cn-hangzhou.dfs.aliyuncs.com:10290 fs.dfs.impl com.alibaba.dfs.DistributedFileSystem fs.AbstractFileSystem.dfs.impl com.alibaba.dfs.DFS io.file.buffer.size 8388608 alidfs.use.buffer.size.setting false dfs.usergroupservice.impl com.alibaba.dfs.security.LinuxUserGroupService.class dfs.connection.count 256 3、打包的jar文件需要包含所有依赖 mvn assembly:assembly 附应用的pom.xml: 1 2 5 4.0.0 6 7 com.aliyun.liumi.spark 8 SparkExampleJava 9 1.0-SNAPSHOT 10 11 12 13 org.apache.spark 14 spark-core_2.12 15 2.4.3 16 17 18 19 com.aliyun.dfs 20 aliyun-sdk-dfs 21 1.0.3 22 23 24 25 26 27 28 29 org.apache.maven.plugins 30 maven-assembly-plugin 31 2.6 32 33 false 34 35 jar-with-dependencies 36 37 38 39 com.aliyun.liumi.spark.example.WordCount 40 41 42 43 44 45 make-assembly 46 package 47 48 assembly 49 50 51 52 53 54 55 4、编写Dockerfile # spark base image FROM registry.cn-hangzhou.aliyuncs.com/eci_open/spark:2.4.4 # 默认的kubernetes-client版本有问题,建议用最新的 RUN rm $SPARK_HOME/jars/kubernetes-client-*.jar ADD https://repo1.maven.org/maven2/io/fabric8/kubernetes-client/4.4.2/kubernetes-client-4.4.2.jar $SPARK_HOME/jars # 拷贝本地的应用jar RUN mkdir -p /opt/spark/jars COPY SparkExampleJava-1.0-SNAPSHOT.jar /opt/spark/jars 5、构建应用镜像 docker build -t registry.cn-beijing.aliyuncs.com/liumi/spark:2.4.4-example -f Dockerfile . 6、推到阿里云ACR docker push registry.cn-beijing.aliyuncs.com/liumi/spark:2.4.4-example 至此,镜像都已经准备完毕。接下来就是在kubernetes集群中部署Spark应用了。

1934890530796658 2020-03-20 20:49:14 0 浏览量 回答数 0

回答

【丁宁-清华大学-阿里达摩院自然语言技术实习体验】 作者简介:丁宁,清华大学计算机科学与技术系2年级博士生,研究方向为自然语言处理、信息抽取、语言表示学习等,在ACL、EMNLP、AAAI、IJCAI等发表多篇文章,作为研究型实习生在阿里达摩院实习半年+。 实习体会 很幸运能来到阿里巴巴进行实习!组里的氛围特别好,同事和师兄师姐都非常专业、友善、亲切。无论是科研上还是工作生活上的任 何问题,都能得到慷慨的帮助。在这里,我认识了一批学术和生活上的榜样(我的主管每天都吃健康餐,而我牛肉汤泡饼),结交了志同道合的朋友(排队喝牛肉汤回来写论文的日子),见识到了IT同学的认真负责(远程帮我调试打印机,周末修电脑),见过了马云老师,也亲身经历了一次双十一奋战。阿里的科研积淀和文化氛围都让我感到收获颇丰,感谢阿里巴巴提供研究型实习生这一高水平项目,也期待更多的同学可以加入研究型实习生的大家庭。 科研心得& 工作宣传 今年在阿里巴巴所做的跨领域分词工作被ACL 2020高分接收,其中meta review说“well-written, well-motivated with strong results, sure accept”。其实这句话可以很好地总结评判科研论文好坏的标准,实际上或许现阶段的科研也并没有什么秘密,动机明确、方法得当、实验充分,就可以形成一篇不错的科研论文。当然了,如果想做出让领域内眼前一亮的工作,可能就需要一些灵光一闪了。 具体到我们的工作上来,跨领域任务往往面临目标领域精标注数据缺失的问题,具体到分词任务上来说,这种数据缺失往往会导致OOV和词的分布差异问题。本文通过弱监督启发式算法来进行远程标注,并引入对抗学习来进行降噪。本文的实验中以newswire (新闻语料)作为源领域,在5个不同的目标领域数据上都取得了较好的效果。 这个工作或许有助于我们真正的往跨领域的两个通用问题上去设计了相关的解决办法。论文名字:《Coupling Distant Annotation and Adversarial Training for Cross-Domain Chinese Word Segmentation》,具体可以查看达摩院的官方宣传~:ACL 2020有哪些值得关注的论文? - 阿里巴巴达摩院的回答 - 知乎https://www.zhihu.com/question/385259014/answer/1190808208 另外,也宣传一下作为co-author的另一篇ACL 2020论文,是实习生同事周洁(上海交大研究生)的工作,瞄准多层级文本分类任务,设计层级敏感编码器将多层结构作为有向图建模,并且实现了一个串行和并行的版本,论文名字:Hierarchy-Aware Global Model for Hierarchical Text Classification。 还有另一个实习生同事张浩宇(国防科大博士生)在IJCAI 2020的工作,使用noisy learning的方法去进行远程监督entity typing降噪,方法非常优雅,论文名字:Learning with Noise: Improving Distantly-Supervised Fine-grained Entity Typing via Automatic Relabeling。 【杜志浩-哈尔滨工业大学-我在达摩院作实习研究僧的那些事儿】 经韩老师介绍,2019年7月,有幸进入阿里巴巴达摩院成为一名实习研究僧。如今也已半年有余,期间发生的事情仍然历历在目。从初出茅庐的不安,到积极融入的快乐,再到宠辱不惊的泰然,一路走来收获良多! 初出茅庐 其实,刚到达摩院语音算法组时,我的内心充满了不安。这种不安来自于初出茅庐的不自信,不知自己能否胜任这份工作,为公司带来效益。同时,也来自于环境转变的不适应,换了一个全新的环境,对公司内的工作方式、待人接物都不甚了解。 但是,在算法组师兄师姐的帮助下,我的这些不安很快就烟消云散了。为了能够使我尽快熟悉工作内容、了解工作方式,雷鸣师兄坚持每周四晚上为实习生开组会,拉着仕良哥、智颖等很多小伙伴一起讨论算法思路和实验中遇到的问题。我想他们应该都挺忙的吧,但还是牺牲自己休息的时间来参加组会。 刚来的那段时间,除了“雷老师,xxx麻烦审批通过一下”以外,我说的最多的恐怕就是“xx姐/哥,xxx在哪”。由于对很多事情都不了解,比如服务器怎么申请啊,oss怎么弄啊,我总是要麻烦逍北姐、遥仙哥等目之所及的小伙伴。他们一边在忙自己的工作一边还不厌其烦的告诉我,为我提供了莫大的帮助。 积极融入 在算法组这段时间,让我印象最为深刻的一句话就是“我们做事情都很直接,有什么问题,就带着方案提出来”。以前,总是被教育和鼓励发现问题,在阿里,找到问题只是完成了第一步,还需要再提出一个切实可行的解决方案。期间发生的一段小插曲让我现在依然记忆犹新。  为了准备910,语音测试组的小伙伴每天都在紧张的进行测试。其中一项是对语音实时转录及翻译软件的稳定性测试。由于已经进入应用阶段,不能在直接将数据送入到模型中,需要将语音播放出来,再由软件录音进行测试。播放的内容是马老师的演讲,对于坐在旁边的小伙伴来说既是一件好事,也是一件坏事。由于马老师的演讲实在太引人入胜了,每次他们进行测试时,我们都无法专心工作,最终只能……。 咳咳,我心想,这么下去也不是事儿啊,梦想要有,生活也得继续啊,得想想办法解决一下这个问题。我尝试了各种办法,但似乎都无法绕过功放这个问题。最终功夫不负有心人,找到了一款虚拟声卡的软件,能够将一个应用程序的音频输出直接作为另一个应用程序的输入。在熟悉过这个软件的使用方式后,我找到测试组的组长,向他提出了我现在的处境和解决方案。他告诉我,他也知道这样会打扰到周边的人,但是之前也没有太好的办法,感谢我提出的解决方案。 虽然这只是实习期间的一段小插曲,但是我依然印象深刻。通过这件事,我践行了带着方案提问题,这一阿里人所特有的工作方式,让我感觉自己正在逐渐融入到这个集体当中。 宠辱不惊 经过几个月“死去”又“活来”的做实验、写论文,我跟雷鸣师兄合作的语音增强相关工作投稿到了ICASSP 2020。这是语音信号处理领域的顶级会议,在来阿里之前,我也投稿过一次,但不幸被拒。为了准备这篇文章,雷鸣师兄跟我保持着很高互动,了解实验进度,适时的进行指导。此外,还有仕良哥帮助我进行语音畸变的评估。 2020年1月25日这一天,是我国的传统节日,春节,同时也是ICASSP出结果的日子。在得知结果前,我的内心非常忐忑。但当得知接收的喜讯时,我反而没有想象中那么兴奋,没有想象中那么高兴。我的第一反应是看看审稿人的意见,看看我专家们对我文章的看法,还有哪些不足和需要改进的地方。 我想宠辱不惊的心态应该是我在阿里的一个重要收获吧,不以物喜不以己悲。尽力做好自己该做的事儿,结果自然水到渠成。 再说两句 在阿里的这段实习使我受益匪浅。这里有乐于助人、善解人意的师兄师姐,也有认真负责、要求严格的主管Leader;有弹性自由的工作时间,也有肝到深夜的满腔热情;有最新最热的研究成果,也有成熟稳定的应用软件。这里不像实验室的象牙塔,关注技术的同时,也更关注技术如何落地、如何应用到生活中去,最终如何造福亿万用户。 韩鹏-KAUST-青春没有我之阿里巴巴天猫精灵争夺赛被迫写的研究心得 竞选宣言: 在阿里实习摸了几个月的鱼,最开心的就是又吃到了祖国的美食,虽然杭州的食物实在是太清淡了,但总比我在沙特每天吃水煮青菜不放盐要好很多。在阿里的这几个月,让我看淡了很多,发现生命里比较重要的就是长在自己脑袋上的头发,不能太年轻就失去他们。女网红我是感觉自己这辈子没机会了,毕竟流量明星也不是靠推荐算法能捧红的,也就希望能够得到这次500块钱的天猫精灵,请大家pick我。 研究心得: 多抱大腿 为了凑足300字的内心情感白描: 这个世界实在是太无聊了,尤其疫情导致的只能居家办公,我已经憋得快精神失常了,虽然平时也不是那么正常。希望这个世界早日恢复原来的美好,我还打算去越南胡志明市的日式KTV感受一下女仆装呢,希望疫情不会让这些服务业倒闭呢吧。 居然还不够300字,感觉生命浪费在写文字上要比大保健上还是好一些的,希望这些文字能够启发你,虽然我感觉也并没有什么意义,而人活着的意义又是什么呢? 【韩镕罄-南加州大学- 阿里研究型实习生体验】 简介: 经过两年研究时间,找到了学校的教职,也找到了老婆,感谢阿里~ 2018年八月来阿里做研究型实习生,本人在南加州大学商学院读Operations Management 的Ph.D. 块两年时间做了几篇 field experiment paper, 感觉阿里有太多好玩有趣的商业问题可以讨论直接研究。 通过和阿里的合作顺利找到UIUC 伊利诺伊大学香槟分校的常任轨教职。 更神奇的是,在实习期间,随便刷个阿里妹儿的相亲帖, 加个微信 聊一聊 发现和自己一天生日。 就是你了!现在已经结婚快半年! 三十而立,一切静好,感谢阿里! 【马腾-清华大学- 阿里巴巴RI项目心得】 我与阿里之缘 在2019年的夏天,后来成为我主管的文侑来到清华进行交流,当时的我刚刚完成了一个学术项目的研究,正在寻求于之后的研究方向。恰好在交流会上碰见了文侑,经过一番交流之后吗,了解到操作系统团队是阿里 RDMA 技术的先行者和推广者,这正是我计划之后想要研究的方向,于是便一拍即合。由于我之前所研究的领域刚好符合是阿里目前正在做的一些项目,所以文侑提供了一个可以在阿里实习的机会。 在通过了多轮面试之后,我终于成功的入职了操作系统内核组作为学术型实习生。从2018年九月初入职至今,将近两年的时间,我也逐渐地适应了在阿里的生活,松弛有度而又充满欢乐。在这里我也结识了许多要好的朋友,并且,通过公司组织的各种聚会和团建的活动,让我解释了许多有着共同语言爱好的伙伴,大家给与了我这个新人很多的帮助和照顾,使我也渐渐地融入了这个有爱的团队。 在阿里的学术成果 在阿里实习期间,在同事们的帮助下,我顺利地完成了两个与我所在实验室合作的学术项目,并且这两个项目也幸运的产出了两篇高质量的论文,分别发表在了不同领域的高水平会议当中。 其中,第一篇论文发表在第21届Cluster会议,与2019年在美国阿尔伯克基召开。Cluster 是高性能计算方向计算机系统领域的主要会议,这个工作提出并实现了统一高效的 RDMA 消息中间件,解决了 RDMA 在实际生产过程中的一些关键可靠性和可用性问题,例如:极简的接口抽象,必要的上层消息确认机制,中间件辅助流控配合 DCQCN,结合生产系统的诊断机制等等,目前该技术已经被广泛应用在阿里巴巴基础云产品中(包括:数据库,分布式存储等)。另外一个工作则发表在了第25届 ASPLOS会议。ASPLOS 是操作系统,体系结构和编程语言三个方向综合的计算机系统领域顶级会议。这篇论文是和我所在的清华高性能所合作完成的,文章中第一次提出了利用RDMA将数据中心的NVM做disaggregation, 实现了高效的框架,同时证明了这种新架构的可行性。 在阿里的感想 阿里巴巴操作系统团队是一直致力于建立和完善系统领域工业界和学术界的纽带,并且在持续实践工业界和学术界之间的问题分享和工作互动,他们希望通过这些分析和互动能够更好地促进中国在世界计算机系统领域的整体发展和创新。作为操作系统团队中的一员,我深切了解到了先进技术对于企业发展的重要性,在实习的过程中,同我所在的实验室进行合作,我更是深深感受到只有通过学术与工业相辅相成,才能够真正让企业发展先进技术。另外一方面,经过一段时间的实习,我对所在的操作系统团队和阿里技术部门的工作有了更深入的了解,我对自己也有了进一步的规划,计划在毕业之后能够入职阿里,通过我的努力,继续在追逐技术之路上奋斗着。 【亓家鑫-新加坡南洋理工大学- 阿里云实习心得】 非常荣幸我们的研究工作*《Two causal principles for improving visual dialog》*获得了同行的认可,并收录在CVPR 2020会议中。在此要特别感谢我的教授,MReaL实验室成员以及阿里城市大脑实验室师兄师姐一直以来的支持和帮助。比起论文本身的内容,我更希望跟大家分享一年来做研究的心得和感悟,虽然目前我仍然是一个萌新,不过我希望通过萌新的角度能带给大家一些研究上的启发。 开始一个研究之前,选择方向很重要。当然,每一个方向都有自己的优缺点,比如新的方向“容易”发文章,可能将其他领域原有的方法引入加一些调整就可以达到比较高的结果。不过如果没有坚实的创新,在同行评议时,可能会受到质疑。一旦没有通过,再转投时可能发现已经落后于其他人。“老“的方向可能会感觉灌水困难,不过因为我没有真正做过经典的方向,所以不太好发表评论。根据观察,在一堆全面而又坚实的研究中找到创新点,对萌新来说确实困难,不过一旦有所突破,肯定会对这个社区产生广泛的影响。作为一个萌新,可能不会自己选择方向或者领域,所以接受导师或者主管的安排成了唯一的选择,不过要相信自己的导师和主管,因为大家都是在帮助你,而且他们经验丰富。只有当自己走完一套研究的流程,并且真正找到自己感兴趣或者觉得可以有所突破的方向,那可能才是真正属于自己的研究的开始。 当选定了方向,开始做研究的时候,清楚的了解所有有关的方法是非常重要的,因为这样可以防止你的idea被存在的方法“抄袭“。其实对一个比较成熟的研究方向来说,简单思考得到的idea一般都会被提出过。不过研究完所有存在方法后,要跳出这些方法,因为阅读他们的方法可能不是来借鉴,更多的是防止撞车,想要真正有创新,在别人的方法上改动往往是不够的,这就要求我们重新审视这个任务甚至数据集的每一个样本。当然目前即使是学术界toy的数据集也有动辄几十万的数据量,看完是不可能的,不过根据自己的思路统计一些数据特征,有时候对研究会产生很大的帮助。当觉得自己已经掌握了这个数据集或者这个任务的时候,应该是跑一些baseline来练习了。 我作为萌新,没有从零开始写,而是找了一个现成的模型开始修改,这样难度会减少很多,不过毕竟是别人的代码,还是有很多不舒服的地方,所以等自己成熟了的时候,有空的时候,一定要从头写一遍。当然我也不知道什么时候有空。当我开始修改baseline的时候,此次的研究旅行就算是上路了,在接受导师的指引的同时也可以自己不断的尝试自己的想法,因为不知道什么是有用的。我作为萌新刚开始的感受是我觉得可能我想的都有用,那一定要去试一下,所以我也建议大家多试一下,说不定真的有用呢,反正电费不花自己的。当一个东西有用的时候,就可以来思考他为什么有用了,当你想好它为什么有用并且通过了广泛的测试,就到了跟大家分享成果的时候。 当然,一个有用的idea背后可能有无数个没用的idea,至于他们为什么没用,我觉得如果实在是有兴趣,可以研究一下,但是有时候会花大量的时间。举一个实际的例子,我在去年做visual dialog比赛,大概四月份就发现了一个有用的方法,之后也顺利的拿到了第一并且在此基础上进行探究和扩展发表了自己的成果。不过同时,当时有一个效果降低的操作一直困扰着我,直到六个月以后,当然这六个月中还做了其他的事情,我才发现了它真正的原因,并且最终变成了我文章中的一句话。举这个例子的目的是,研究没有效果的idea会对研究有所帮助,不过可能会收益较低。 研究成果的发表是一个很重要的过程,它可以给领域内的同行以启发,甚至可以影响本领域之外的人,所以有时候高度总结自己的思想是一件有用的事情。比如我所做的工作我认为进行高度总结之后可以得到一个启发是:对多模态任务来说不一定所有模态都是平等的,对模型来说所存在模态也不一定是影响结果的全部。除了对自己motivation的总结,应用细节以及结果展示也是非常重要的,因为我是萌新,怎样写出一篇文章的经验肯定是不足的,所以在此不再赘述。在发表完文章之后,“售后服务“也是非常重要的一点,这也是我的教授教我的很重要的理念。因为发表的内容不是刊登出来就结束了,而是你对社区贡献的开始,之后做研究可能会发现更好的实现,或者当时的理论没有讲清楚完善,这些都可以补充到自己的代码中,让大家更好的了解你的思路和工作,或许以后还能收获好评。 此外,实验室的成员就是自己研究道路上的引导者和伙伴,会对自己的研究产生各种各样至关重要的影响,大多时候大家都不会吝惜跟你讨论分享自己的观点,有时还会亲自帮助你解决问题,所以要记得经常参加团建和小集体聚会。不过也不能太依赖别人,每当遇到问题的时候,特别是技术性的问题,还是依靠自己解决的好,毕竟未来总会离开实验室,离开乐于帮助你的人。最后,保护好自己的头发,还是要早睡早起,调不出来的bug熬夜也调不出来,不work的idea可能真的不work,没有人保证炼出来的一定是金子,不要过分影响正常的作息,毕竟这不是百米赛跑,也不能算是马拉松,而是长久的起码好几年以上要坚持的事业。不过我作为萌新才刚刚起步,依然没有体会到最艰难的时刻,不过做好心理准备还是应该的,该来的总是会来的。最后的最后希望这些浅显的经验总结能够给大家带来一点儿帮助,谢谢大家的阅读。 【田冰川-南京大学- 在阿里网络团队实习两年是一种怎样的体验?】 简介: 大家好!我是田冰川,南京大学2016级直博生,导师为田臣老师,研究方向为计算机网络。2018年6月,我以研究型实习生的身份入职阿里巴巴基础设施事业部网络研究团队,实习期间主要从事网络验证相关的研究工作,即通过形式化方法与灰度测试,来降低网络变更中的潜在风险。 2018年既是网络研究团队刚刚组建的一年,也是研究型实习生在阿里刚刚起步的一年。这年春天,经我导师田臣老师介绍,我参加了研究型实习生面试,加入了网络研究团队。 来到团队后,我参加的第一个研究项目是“金睛”,用以保障复杂ACL变更的正确性。ACL即访问控制列表,网络中的ACL决定着流量的连通性。网络架构演化有时会伴随着对ACL的迁移,如何保证迁移前后网络连通性是等价的,是困扰架构与运营部门的一大难题,而金睛项目则是为该问题而生。项目落地以来,金睛系统多次在骨干网ACL迁移中对变更方案进行了验证,并逐渐扩展至对边缘网络的验证。相关论文发表于SIGCOMM 2019主会,我在会场进行了20余分钟的演讲,与我们团队的另一篇文章HPCC共同成为阿里集团在网络领域top1学术会议主会中的首次亮相。 时间总是过的很快。转眼间,我来阿里已经两年了,自金睛之后,又陆续参与了多个研究课题。在阿里的时间越久,就越能切身体会到学术界研究与工业界研究的不同。在阿里实习以来,我接触到的所有研究课题,都不是凭空“想”出来的空中楼阁,更不是靠别人论文“启发”出来的二手课题,而是源自于真实业务的现阶段瓶颈与下一阶段发展趋势——这一点是高校科研很难做到的。 这两年间,我对科研这件事的心态也发生了进一步的变化。2017年,来到阿里之前,我的论文达到了学校博士毕业的最低要求,相当于没有了毕业之忧,对科研的心态从“先拿到博士学位再说”,变成了“想要做出点什么,不想让自己的博士5年就这么水过去”;在来到阿里,接触到工业界的前沿课题之后,我对科研的心态再一次发生了转变,变成“因为认可一件事的价值,所以想要去做好”——这已经成为一种内在的驱动力,让我在认真工作的同时,享受研究带来的乐趣。 如果一切顺利的话,我将于2021年6月博士毕业。能在阿里巴巴度过专属实习生的“三年醇”,想必也是人生中的一大成就了! 【吴秉哲-北京大学- 吴师傅的博士研究课题:大数据时代的数据隐私研究方向初探】 加上本科的时间,不知不觉已经在燕园里面呆了八年了,明年不出意外应该就会离开学校去业界工作。准备最近以文章的形式梳理一下博士几年的研究以及生活的心路历程。由于内容比较分散,所以决定分为几个不同的部分。这次推送封面图片是16年骑行到加乌拉山口遥看喜马拉雅山脉的图片,而我在阿里的花名是风远,意为远处的风。希望多年之后,还有一颗少年的心,投入每天永不变。这次借着阿里内部一个活动的机会,写了今天的这篇稿子,为大家介绍一下我的thesis topic。 已经在蚂蚁实习了一年了,一年时光匆匆而过,而在蚂蚁金服度过的这段时光带给了我很多研究以及生活中的体验,这一年里学到的经验也将伴随着我之后的研究之路。 我本科四年是在数院度过,在研究生阶段决定转换方向到计算机系。博士的前两年一直在跌跌撞撞地寻找自己的研究方向,尝试过很多方向均以失败告终。终于在第三年的时候,误打误撞开始研究起机器学习的隐私保护问题并找到了很多灵感,开始沉淀了一些基本的研究工作。有一天我从一个朋友那里听到了她关于金服这边隐私保护机器学习的团队介绍,当时我就决定要到业界的前沿去看一看隐私保护的真实业界需求。在此之前,我已经在谷歌,IBM等公司有过多段实习的经历,但是在蚂蚁这一次实习经历,是与我自己研究方向最接近,也是时间最长的一次。借着这次约稿的机会,以此文简单总结一下自己过去两年在这一方向的研究。 隐私保护与共享学习 目前随着各种机器学习算法在集团的业务落地,许多隐私泄露与数据滥用的风险相继而来。 尤其是在蚂蚁金服这样一个拥有很多支付数据的企业,数据安全以及隐私保护的重要性更是不言而喻。站在商业合作的角度,如何实现不同公司或者部门之间的数据共享学习也是我所在的团队现在攻坚的一个问题。在这样一个研究背景下,我来到了蚂蚁金服的共享智能团队,开始和师兄师姐们从不同的维度对上述问题展开了深入的研究。 共享学习这样一个概念听起来很美好,但是实际落地起来却困难重重,需要考虑到上层软件算法的设计以及底层系统和硬件的优化,才有可能真正在实际的业务中兼顾效率和隐私保护强度。共享智能团队在这一方向上有着得天独厚的优势。一是领先的业务场景,在国际同行好多还停留在学术研究阶段时,我们团队已经和国内多家银行有了合作。另一个则是技术沉淀的领先。因为金服自身业务的特殊性,我们团队很早就开始了隐私保护机器学习和共享学习的布局,包括很多原始的技术沉淀,强大的工程团队以及学术预研团队。这些积累也使得我们能够很快地摸清最新的一些研究成果并能将其吸入到我们自己的系统当中。 我自己关于隐私保护机器学习的研究主要是围绕着三个层面展开,分别是理论,算法设计,以及系统和硬件优化。在理论层面,我主要针对现有的各种机器学习算法,建立相应的隐私泄露分析框架,比如我们在之前的工作中,针对一种常用的贝叶斯学习的算法根据雷尼差分隐私建立了隐私泄露的定量分析框架,我们进一步使用我们的框架和已有的一些泛化误差上界做了联系,从而能从多个角度去解释该算法的隐私泄露原因。在算法设计层面,我们针对各种已有的新兴算法以及场景,比如图神经网络,推荐系统建立了相应的共享学习算法,并利用我们的理论框架,对这些算法的隐私保护强度做了定量的评估。除开上层的理论和算法设计,底层的系统和硬件的优化同样是非常重要的一环。 在我们团队,我们主打基于硬件可信执行环境 (TEE)的机器学习serving系统,我针对我们当前这套服务系统,结合神经网络计算的一些特点,定制了该系统的一系列优化措施大大提升了整个系统的吞吐量。我也将其中一些措施注册了专利,并在前几天得到了内部的专利授权。除开上述介绍的学术研究方面的成果,我也参与了IEEE共享学习标准的制定会议,这也使得我从标准制定者的角度去更深地思考如何使用技术在未来社会中实现隐私与效率的兼顾。 总之,我自己很感谢能成为共享智能团队的一员,我在这里学到的最宝贵的经验就是详细地从上到下了解了这样一个大团队的合作与分工,学习他们是如何一步步从最初的需求分析,算法设计,到最后真正的业务落地。也很高兴和各位共享智能的同事度过自己博士生涯中很重要的一年。也非常感谢我的博士导师对我研究的无条件支持。回看博士这一路的艰辛,也是感慨万千。有点像自己之前高原骑行的经历,经历了爬到坡顶的缺氧与无力,终在转角处遇见了骑行途中最美的雪山风光。

游客bnlxddh3fwntw 2020-05-19 16:05:51 0 浏览量 回答数 0

回答

作者:九章算法 链接:https://www.zhihu.com/question/22744854/answer/763206431 来源:知乎 首先,这个神仙项目请你pick: https://github.com/sindresorhus/awesome 各领域各语言资源大合集 另外,可以关注GitHub的每日榜单,看看大家都在关注些什么(虽然有国外小哥吐槽榜单上都是中文哈哈 https://github.com/trending/python?since=daily 推荐不同语言的几个项目: Python : youtube-dl这个程序是一个开源的python项目。支持MacOS、Linux和Windows平台,可以在官网直接下载编译好的程序。可以用来下载YouTube视频,国内的一些视频站也可以进行下载。 interview_internal_reference: 总结了2019年最新的阿里,腾讯,百度,美团,头条等技术面试题目以及答案,分析汇总。 sherlock: 高级机器视觉软件,可以用于广泛的自动化检测应用。它提供了最大的设计灵活性,丰富的已验证的工具和功能。 DeepFaceLab: 这是一个github上的开源项目,所有人都可以查看源代码也能免费使用。个人认为这个项目的最大优点就是安装超级简单,几乎是无需安装,使用过程也不复杂 Manim: 解释数学视频的动画引擎。可以用来创建精确的2D动画。 XSStrike:XSStrike是一个Cross Site Scripting检测套件,配备四个手写解析器,一个智能有效载荷生成器,一个强大的模糊引擎和一个非常快速的爬虫。 XSStrike不是像其他工具一样注入有效载荷并检查它的工作原理,而是通过多个解析器分析响应,然后通过与模糊引擎集成的上下文分析来保证有效载荷。 f="https://github.com/wangshub">Douyin -Bot:抖音机器人。是用于机器人算法的Python代码。教你如何在抖音上找到漂亮小姐姐~~ Photon:快速抓取工具,可以提取网址,电子邮件,文件,网站帐户等等。 google-images-download:可以实现搜索和下载数百个Google图像的Python脚本到本地。 faceswap是个基于dlib的换脸程序。模型训练速度较快,同样配置下更快的到达低loss值,而且有gui界面版本。 you-getyou-get 是py上一个方便的下载工具。这个爬虫神器能爬取视频网站和图片网站,你不用写任何代码就能很容易的把你喜欢的视频或者图片甚至音频文件给扒下来。而且支持腾讯、搜狐、新浪、B站、央视网、芒果TV,乐视网、优酷、熊猫斗鱼等等大多数的国内主流视频网站。 Java: advanced-java: Java工程师进阶知识扫盲,适合系统学习。 vhr:一个前后端分离的人力资源管理系统,采用SpringBoot+Vue开发。这个项目的权限管理模块已经开发完成,其他模块还在开发当中。可以管理角色和资源的关系,管理用户和角色的关系。 cat:作为服务端项目基础组件,cat提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。 jeecg-boot:一款基于代码生成器的JAVA快速开发平台!全新架构前后端分离:SpringBoot 2.x,Ant Design&Vue,Mybatis,Shiro,JWT。强大的代码生成器让前后端代码一键生成,无需写任何代码,绝对是全栈开发的福音!! interviews:软件工程技术面试个人指南。可以这里找到针对很多面试问题的视频解决方案以及详细说明。 p3c:是阿里巴巴p3c项目组进行研发。根据《阿里巴巴Java开发规范》转化而成的自动化插件,并且实现了部分自动编程。 SpringAll:包括了Spring Boot,Spring Boot&Shiro,Spring Cloud,Spring Boot&Spring Security&Spring Security OAuth2等系列教程。toBeTopJavaer:Java工程师成神之路。总结的很好,直接理解学习就完了。 JavaScript: quasar:Quasar Framework是MIT许可的开源项目。能在记录时间内构建高性能VueJS用户界面 Daily-Interview-Question:前端大厂面试题汇总 next.js:一个基于React的一个服务端渲染简约框架。它使用React语法,可以很好的实现代码的模块化,有利于代码的开发和维护。 javascript-algorithms:这个存储库包含许多流行算法和数据结构的基于JavaScript的示例。每个算法和数据结构都有自己独立的自述文件,包含相关说明和链接,供进一步阅读 baidu-netdisk-downloaderx:一款图形界面的百度网盘不限速下载器,支持Windows,Linux和Mac。重点在不限速! 其他好玩的项目~ ChineseBQB:国内表情包大集合~~ komeiji-satori/Dress:女装大佬项目,一张图你就懂了 chinese-poetry最全的中文诗歌古典文集数据库.包含5.5万首唐诗、26万首宋诗和2.1万首宋词。唐宋两朝近1.4万古诗人, 和两宋时期1千多位词人 thefuck该项目的主要作用是,在terminal 里输错命令之后无需修改,fuck 一下,自动帮你更正命令,既解气又实用。 加入阿里云钉钉群享福利:每周技术直播,定期群内有奖活动、大咖问答 阿里云开发者社区

茶什i 2020-01-08 10:37:26 0 浏览量 回答数 0

回答

“求知若饥,虚心若愚”——这个原本出自《全球概览》的俳句,因为乔布斯在斯坦福大学毕业演讲中的引用而备受推崇,流传成为 IT 界的至理名言之一。在编程界,亦有“代码胜于雄辩”、“Done is better than perfect”等警句,寥寥数语将编程工作者的形象特质描摹到了极致。程序员,就是技术至上、唯代码是瞻且必须不断武装自己的群体。 21 世纪,高薪、高端、高技术范儿已成为程序员的固有标签,在这个新的元年,CSDN 将基于一年一度的开发者大调查数据,以全新的视角深入发掘中国开发者群体的整体现状、应用开发技术以及开发工具/平台的发展趋势,呈现更真实、更全面且更有学习价值的开发者画像。 30 岁以下开发者人数占比超八成,全国有 19.6% 开发者月薪超过 1.7 万元; 六成开发者在使用 Java 语言,近五成开发者近期最想学 Python 语言; Spark、Redis 和 Kafka 正在成为企业大数据平台通用技术组件; 区块链技术近两年是热点,比特币和以太坊是两种主流的区块链开发平台; 人工智能技术日益受到企业和市场的关注,但 64% 企业尚未实现智能化,机器学习/深度学习算法工程师最为急缺; 近七成开发者认为未来 5G 网络的传输速率能达到 4G 网络的 10 倍以上; Apache 项目和 Linux 是开发者较为喜欢的开源项目; 半数开发者很少参与开源项目的开发、维护、运营和社区发展等。 软件开发准入门槛持续降低,近 2 成开发者月薪超过 1.7 万 30 岁以下开发者人数占比超八成,软件开发从业门槛持续降低 从 2015 年到 2019 年的调研数据来看:30 岁及以下的开发者人群占比在 8 成以上,一直是软件开发领域的主力军;全国近半数的开发者工作在一线城市(北京、上海、广州、深圳、天津);物联网、软件、IT 制造三个技术领域涵盖了国内 84% 以上的开发者;本科及以上学历占 8 成;92% 的开发者是男性。 和国外开发者年龄分布趋势大概一致,国内的软件开发群体一直呈现出越来越年轻化的特点。这是因为,一方面软件开发行业蓬勃发展,各行各业都需要软件开发相关人才,也有越来越多的毕业生选择从事该行业;另一方面,是因为编程语言、框架、云服务等基础设施的持续完善,从事软件开发的门槛在持续降低,更容易接纳新鲜血液,报告统计发现,本科学历是开发者的主力军,66% 的开发者拥有本科学历,而硕士研究生、博士研究生仅占 11%、1%。 八成以上开发者月薪在 5 千~3 万元之间,19.6% 开发者月薪超过 1.7 万元 通过结合受教育程度和薪资水平的数据特点来看,学历越高的人群中,月薪 1.7 万元以上的高收入比例越高。在一线城市(北京、上海、广州、深圳、天津)中,月薪超过 1.7 万元的开发者占比为 30%,该比例远高于国内其它城市。 开发者属于相对高薪的职业,尤其是在一线城市中,但不同开发者之间收入差距较大。软件开发是一个智力密集型的工作,不同开发者能够提供的价值差别很大,这就使得一个优秀开发者的收入远高于普通开发者:硕士和博士毕业的高收入者比率要远高于本科及以下的;金融和互联网行业的高收入比率最高。 自学是开发者持续学习的主要路径 软件开发行业日新月异,只有保持持续学习才能跟上技术变化的脚步,终身学习是现代人保持竞争力甚至是维持生存的必要手段。 从调研中可以看到,53% 的开发者会通过在未参加正式课程的情况下,自学一门新语言、框架或工具。但同时,也有半数的人参加过在职培训或者线下课程,相对于自学的灵活性而言,这类培训会更为系统和完整,对于长期的个人提升有所裨益,开发者可以适当选择。但与之相悖的是,只有不到 40% 的开发者,愿意为学习付费,这可能会导致参与的课程质量不够高。 Java 雄踞语言榜,Visual Studio 受开发者欢迎 Java 长盛:使用最多,开发者最想学 从编程语言来看,Java 是最多人使用的语言,而 JavaScript 和 SQL 分别是第二第三位。这三门语言,使用场景都很广泛,Java 一方面后端开发最常使用,生态成熟度无人可比;另一方面,Java 依然是 Android 上最重要的开发语言,与之相比 ,新兴的 Kotlin 只有 2% 的开发者在使用。而 JavaScript 不仅是前端开发的必备语言,还用在 Web 开发、小程序开发等场景下。 Java 和 Python 依然是开发者最希望学习的语言之一,只是相比之下,Python 的热度有所降低,这可能和机器学习没有去年那么火热有所关联。变化比较大的是 Go 语言,与去年相比,今年的调研中想学 Go 语言的开发者降低到了 4%,与之相似,Kotlin、R 的学习意愿也大幅降低。 从这个趋势也可以看到,如今的开发者更意愿去学习一些相对成熟度、用途更为广泛的语言,对一些代表新模式的语言乐衷程度有所降低。 七成以上在使用 Windows 操作系统,83% 在使用 MySQL 数据库 72% 开发者在使用 Windows 操作系统,18% 在使用 Linux 系列操作系统。在存储服务的使用上,MySQL 继续扩大其使用率到达了 83%,几乎是开发者必备的技能。和去年相比,Elasticsearch 出现在数据库使用的调研中,在大数据时代,Elasticsearch 作为提供搜索服务的第一选型,也必然会被越来越多的开发者学习和使用 Node.js 是相对使用普遍的技术框架 在 Web 开发上,前端使用 Vue.js 后端使用 Spring 是最常见的选型方案,与之相对应,Node.js 是最多被用到的框架,这和当今多端开发的趋势密不可分。后端用微服务架构,中间用 Node.js 粘合出适合 Web、Android、iOS 等不同端和场景使用的 APIs,是当下主流的部署方案之一,既可以前后端分离提高开发效率,又可以在保障服务稳定性的同时提升灵活性。而TensorFlow 成为开发者最期望学习的框架,这说明开发者依然对机器学习保持关注和热情。 Visual Studio 是最为普遍使用的开发环境 在开发环境的选择上,Visual Studio 是最为普遍使用的开发环境,这和微软对开发者的投入密不可分。微软投入了大量的研发力量,使得 Visual Studio 可以在各种操作系统进行各种编程语言的开发,其强大且完善的插件系统可以满足开发者的各种需求,使其可以超过 IntelliJ。 大数据平台以私有云部署为主,Spark 使用率高达 44% 私有云部署解决方案是企业构建大数据平台的主要方式 随着分布式计算和云平台的逐步成熟,目前大部分公司都有能力搭建自己的大数据平台。调研数据显示,81% 企业在进行大数据相关的开发和应用,50% 的企业选择私有云解决方案来部署大数据应用,28% 的企业选择自主研发。 仅 19% 企业使用商业发行版 Hadoop 版本搭建数据平台 调查报告发现,有 30% 以上的企业并没有使用相对成熟的 Hadoop 技术搭建数据平台,这些企业的算法性能会很大程度上受限于低效的平台,更不可能开发出更高效的数据分析算法。但幸运的是大部分企业都基于商业版或者社区版 Hadoop 搭建了数据平台,这些公司的侧重点主要在应用发现和算法的设计层面,更有可能在不久的将来实现大数据的价值。 Spark 是企业大数据平台最普遍的组件 Apache Spark 是一个处理大规模数据的快速通用引擎,它可以独立运行,也可以在 Hadoop、Mesos、云端运行,它可以访问各种数据源包括 HDFS、Cassandra、HBase 和 S3,可以提升 Hadoop 集群中的应用在内存和磁盘上的运行速度。Spark 生态系统中除了核心 API 之外,还包括其他附加库,可以为大数据分析和机器学习领域提供更多的能力。本次调研中,Spark 是使用最普遍的大数据平台组件,使用率达到44%,而MapReduce使用率仅为21%。 分布式文件系统 HDFS 作为核心组件之一,使用率也达到了 39%。企业对大数据平台应用最多的场景是统计分析、报表生成及数据可视化,38% 企业使用ELK(ElasticSearch + Logstash + Kibana)实时日志分析平台。 综上所述,目前大数据的发展热潮令人欢欣鼓舞。一个优秀的大数据团队,需要有对产品开发具有高敏感性同时对技术有一定理解的人才,同时需要理论基础极其扎实,能对实际问题进行抽象建模和算法设计的人才。只有双管齐下,在产品和技术方面进行深层次探索,才能真正实现大数据产业的繁荣。 区块链质变,比特币逆袭以太坊成 TOP 1 开发平台 22% 的开发者正在用或者准备用区块链技术解决技术问题 区块链技术的发展,是一个量变到质变的过程。相比于 2018 年,对区块链和加密货币了解的人从 22% 增长到 32%,准备尝试用区块链技术解决一些问题的人数从 14% 增长到 16%,仅有 4% 的人对区块链完全不了解。 43% 的受访者在从事公有链(比特币、以太坊等)的开发 本次调研中,43% 的受访者在从事公有链(比特币、以太坊等)的开发。目前行业侧重发展的方向为解决方案、公链及联盟链,公有链由于其自带激励机制,对于普通开发者有直接的回馈,所以上面开发者占比高也比较合情理。行业解决方案从去年的 27% 增加到今年的 36%,说明传统行业开发者对区块链的认可度在增加。 区块链本质上是技术,落地场景及实际应用才是连接社会效益的关键。 比特币和以太坊是当前两种主流的区块链开发平台 在行业开发者的印象中,以太坊一直是开发平台领域的头号玩家。但今年数据显示,以太坊从 2018 年的 44% 占比第一,降到 24%;比特币从 2018 年的 28%,上升到 35%,占比第一。比特币在行业内外仍然拥有最强共识,在闪电网络的加持下,大家也似乎感受到比特币离商用也不再遥远了。 金融是普遍认为的行业应用方向 金融行业是普遍认为的行业应用方向,占 36%。区块链本身具备的防篡改、可追溯的特点,能大大降低金融行业监管成本,不过金融的进入门槛相对也较高,需要各方面技术的配合。其次,智能硬件和物联网也被认为是主流应用方向,占 14%。不过相比其他众多已经很成熟的技术,依托区块链的解决方案在实际使用中,往往面临必要性缺失的问题,因此区块链应用发展仍任重道远。 在区块链结合行业之前,更加要重视与其他新技术的结合和协同:物联网设备能够提供大量数据,5G 能够提供高速传输,存储可以解决区块存放的问题等。 算法工程师最急缺,TensorFlow 占据 AI 深度学习框架榜首 64% 的企业尚未实现智能化 在经历了 2019 年的行业低谷期之后,无论是行业巨头还是新兴独角兽,都开始审视 AI 能够切实落地的场景。调研数据显示,14% 的企业尚无信息化基础,27% 的企业实现了事务处理数字化,22% 的企业具备商业智能基础设施,实现描述性分析。使用机器学习实现预测性分析和决策优化的企业占 16%,而在业务中全面使用 机器学习/深度学习算法工程师最急缺 在岗位分布上,由于深度学习是以大数据为基础的,而感知智能中的计算机视觉又是目前深度学习较为成熟的应用,所以,机器学习和深度学习工程师,以及数据工程师、计算机视觉工程师排行在前三位。当前最急缺的岗位也是机器学习/深度学习算法工程师、数据科学家/数据分析师/数据挖掘工程师岗位。 53% 的开发者表示其团队急缺机器学习/深度学习算法工程师,37% 表示急缺数据科学家/数据分析师/数据挖掘工程师。 TensorFlow是人工智能领域主流深度学习框架 此次调研中,TensorFlow 使用普及率达到 48%。从技术本身的角度来看,较为成熟的 TensorFlow 成为 AI 工程师的首选深度学习框架,Torch/PyTorch由于其开发效率较高,也得到了较多支持。 35% 开发者选用国产 AI 芯片应用于自己的 AI 开发 在 AI 芯片领域,国内厂商也开始弯道超车,越来越多的开发者也开始关注国内 AI 芯片的进展。调查数据显示,选用国产 AI 芯片应用于自己的 AI 开发时最看重的因素方面,对主流 AI 框架的支持能力是最普遍的因素,占 35%。 物联网云平台三足鼎立:阿里物联、华为云、百度 IoT 69% 的开发者认为未来 5G 网络的传输速率能达到 4G 的 10 倍以上 每一代新型的通信系统总是能带来更大的带宽。据报告显示,近七成开发者认为未来 5G 网络的传输速率能够达到 4G 网络的 10 倍以上。 影响 5G 普及的三大因素:5G 套餐价格未定、运营商的开发程度、需要更换手机 由于目前 5G 网络使用者较少,费用较低廉的套餐还没有推出,第一代 5G 终端不太成熟等原因,目前 87% 的开发者认为 5G 套餐费用过高,并且大部分开发者认为 5G 网络目前覆盖范围有限,因此将近 40% 的开发者正处于观望阶段。 值得一提的是,本次调查中 62% 的开发者认为,5G 时代应该加强对个人隐私的保护,这反映出目前社会对数据隐私越来越重视的整体趋势。 阿里物联和华为云是应用相对普遍的 IoT 云平台 根据调查,2019 年物联网云平台呈现三足鼎立的趋势:阿里物联、华为云、百度 IoT 成为用户最多的三种物联网平台,并且和第四名中移物联远远拉开了差距,这和我们的实际使用体验一致。 未来的基础物联网平台可能会继续呈现以偏硬件实现为主的华为云和以偏软件体验为主的阿里、百度物联平台的三足鼎立局面。 物联网技术开发:Linux 和 Windows 是使用较多的操作系统 Linux 和 Windows 是较普遍的操作系统,使用率分别为 51%、44%。目前在物联网设备开发过程中,Linux、Windows 和 Android 较为普遍,依然延续了 PC 平台的开发者操作系统份额。虽然华为、阿里等公司在 2019 年均发布了自己的物联网专用操作系统,但还并未得到开发者的大规模认可,大公司的物联网操作系统发展之路依然任重而道远。 Wi-Fi 是应用最普遍的物联网通信技术 在本次调研中,近距离通信(比如 Wi-Fi 和蓝牙)是现存物联网开发者最主要的通信方式。然而这种比重可能会随着未来 3~4 年内车联网的大规模商业化产生变化,汽车、工业物联、智能电网这类高移动性、高可靠和低延迟物联网场景会更适合需要整体规划的运营商网络。 六成开源开发者无收入,Apache 项目最受喜欢 77% 开发者每周在开源上投入时间不超过 5 小时 无论是大数据、区块链、人工智能还是物联网领域,其中最为重要的、最受欢迎的技术都是开源的。但是报告统计发现,有超过一半的开发者很少参与开源项目,每周在开源上投入不超过 5 小时的占 77%,其中,1 小时以内的占 31%。此外,65% 的开发者不曾在开源上获得收入,获得不错收入的仅占一成。 开发者最喜欢的开源项目是 Apache 25% 开发者最喜欢 Apache,24% 开发者最喜欢 Linux。作为全球最大的软件基金会,开发者用过的诸多项目,例如 Dubbo、Log4j、Maven、RocketMQ 和 Tomcat 等,均孵化自 Apache。 国内开源的现状虽然近年来已经有了很大的发展,但是一个残酷的事实是,老兵正在离开这个行业,离开一线开发的队伍:报告数据显示,30 岁以下的开发者人数超过 82%,接触开源的时间在 5 年以内的开发者超过 83%。随着那些经验丰富的老兵转行或是进入管理层,不再写代码、也不再参与开源的事实也就凸显出来.....未来开源的建设,依然任重而道远。 在数据中寻找共性,《2019 - 2020 中国开发者调查报告》全面且真实地展现中国开发者及技术现状,希望对您的学习或工作有所帮助。 ———————————————— 版权声明:本文为CSDN博主「CSDN资讯」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/csdnnews/article/details/104538091

问问小秘 2020-03-11 16:46:19 0 浏览量 回答数 0

回答

调用CreateChangeSet接口创建更改集。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 CreateChangeSet 系统规定参数。取值:CreateChangeSet。 ChangeSetName String 是 MyChangeSet 更改集的名称。更改集名称在与指定资源栈关联的所有更改集中必须是唯一的。更改集名称可以包含数字、字母(大小写敏感)、连字符和下划线,必须以数字或字母开头,长度不超过255个字符。 Parameters.N.ParameterKey String 是 Amount 参数的名称。如果未指定特定参数的名称和值,则ROS将使用模板中指定的默认值。N的最大值为200。 Parameters.N.ParameterValue String 是 12 参数的值。N的最大值为200。 RegionId String 是 cn-hangzhou 更改集所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 StackId String 否 4a6c9851-3b0f-4f5f-b4ca-a14bf691**** 创建更改集的资源栈的ID。ROS通过将此资源栈的信息与您提交的信息(例如修改的模板或不同的参数输入值)进行比较来生成更改集。当且仅当更改集类型为UPDATE时,此参数生效且为必选参数。 StackPolicyURL String 否 oss://ros/stack-policy/demo 资源栈策略的文件的位置。资源栈策略的文件最大为16384个字节。URL必须指向位于Web服务器(http、https)或阿里云OSS存储空间(例如oss://ros/stack-policy/demo、oss://ros/stack-policy/demo?RegionId=cn-hangzhou。OSS地域如未指定,默认与接口参数RegionId相同。)中的策略。您可以指定StackPolicyBody或StackPolicyURL参数,但不能同时指定两者。URL的最大长度为1350个字节。 当更改集类型为CREATE时,您可以指定StackPolicyBody或StackPolicyURL参数,但不能同时指定;当更改集类型为UPDATE时,您只能指定以下参数之一: StackPolicyBody StackPolicyURL StackPolicyDuringUpdateBody StackPolicyDuringUpdateURL StackPolicyBody String 否 {"Statement":[{"Effect":"Allow","Action":"Update:","Principal":"","Resource":"*"}]} 资源栈策略的结构,长度为1~16384个字节。当更改集类型为CREATE时,您可以指定StackPolicyBody或StackPolicyURL参数,但不能同时指定两者;当更改集类型为UPDATE时,您只能指定以下参数之一: StackPolicyBody StackPolicyURL StackPolicyDuringUpdateBody StackPolicyDuringUpdateURL StackName String 否 MyStack 创建更改集的资源栈的名称。资源栈名称可以包含数字、字母(大小写敏感)、连字符、下划线,必须以数字或字母开头,长度不超过255个字符。当且仅当更改集类型为CREATE时,此参数生效且为必选参数。 UsePreviousParameters Boolean 否 true 对于未传递的参数,是否使用上次传递的值。当且仅当更改集类型为UPDATE时,此参数生效。取值: true false 默认值:false。 ChangeSetType String 否 UPDATE 更改集的类型。当为新资源栈创建更改集时,ROS会创建具有唯一资源栈ID的资源栈,资源栈将处于REVIEW_IN_PROGRESS状态,直到您执行更改集。禁止使用UPDATE类型为新资源栈创建更改集,或使用CREATE类型为现有资源栈创建更改集。取值范围: CREATE:为新资源栈创建更改集。 UPDATE:为现有资源栈创建更改集。 默认值:UPDATE。 Description String 否 It is a demo. 更改集的描述。最大长度为1024字节。 ClientToken String 否 123e4567-e89b-12d3-a456-426655440000 保证请求的幂等性。此参数值由客户端生成,并且必须是全局唯一的。仅允许ASCII字符,最多可包含64个字符。更多详情,请参见如何保证幂等性。 TemplateURL String 否 oss://ros/template/demo 模板文件的位置。模板文件最大为524288个字节。URL必须指向位于Web服务器(http、https)或阿里云OSS存储空间(例如oss://ros/template/demo、oss://ros/template/demo?RegionId=cn-hangzhou。OSS地域如未指定,默认与接口参数RegionId相同。)中的模板。您必须指定TemplateBody或TemplateURL参数,但不能同时指定。URL的最大长度为1024个字节。 StackPolicyDuringUpdateURL String 否 oss://ros/stack-policy/demo 更新资源栈策略的文件的位置。资源栈策略的文件最大为16384个字节。URL必须指向位于Web服务器(http、https)或阿里云OSS存储空间(例如oss://ros/stack-policy/demo、oss://ros/stack-policy/demo?RegionId=cn-hangzhou。OSS地域如未指定,默认与接口参数RegionId相同。)中的策略。URL的最大长度为1350个字节。 如需更新受保护资源,请在此更新期间指定临时覆盖资源栈策略,如未指定,则将使用与资源栈关联的当前策略。当且仅当更改集类型为UPDATE时,此参数生效,您只能指定以下参数之一: StackPolicyBody StackPolicyURL StackPolicyDuringUpdateBody StackPolicyDuringUpdateURL TemplateBody String 否 {"ROSTemplateFormatVersion":"2015-09-01"} 模板主体的结构。长度为1~524288个字节。如果长度较大,则建议通过HTTP POST+Body Param的方式,将参数放在请求体中进行传递,避免URL过长而导致请求失败。您必须指定参数TemplateBody或TemplateURL,但不能同时指定。 TimeoutInMinutes Long 否 12 资源栈状态变为CREATE_FAILED或UPDATE_FAILED之前可以经过的时间量。当更改集类型为CREATE时,此参数为必选参数;当更改集类型为UPDATE时,此参数为可选参数。 单位:分钟。 取值范围:10~1440。 默认值:60。 DisableRollback Boolean 否 false 当且仅当更改集类型为CREATE时,此参数生效。取值范围: true false 默认值:false。 如果取值为true,则当资源栈创建失败时,不进行回滚删除。 StackPolicyDuringUpdateBody String 否 {"Statement":[{"Effect":"Allow","Action":"Update:","Principal":"","Resource":"*"}]} 临时覆盖资源栈策略的结构。长度为1~16384个字节。如果要更新受保护资源,请在此更新期间指定临时覆盖资源栈策略,如未指定,则将使用与资源栈关联的当前策略。当且仅当更改集类型为UPDATE时,此参数生效,您只能指定以下参数之一: StackPolicyBody StackPolicyURL StackPolicyDuringUpdateBody StackPolicyDuringUpdateURL NotificationURLs.N RepeatList 否 http://my-site.com/ros-notify 接收资源栈事件的URL回调地址。仅支持HTTP POST。N的最大值为5。每个URL的最大长度为1024个字节。 返回数据 名称 类型 示例值 描述 ChangeSetId String e85abe0c-6528-43fb-ae93-fdf8de22**** 更改集ID。 StackId String 4a6c9851-3b0f-4f5f-b4ca-a14bf691**** 资源栈ID。 RequestId String B288A0BE-D927-4888-B0F7-B35EF84B6E6F 请求ID。 示例 请求示例 http(s)://ros.aliyuncs.com/?Action=CreateChangeSet &ChangeSetName=MyChangeSet &ChangeSetType=CREATE &Description=It%20is%20a%20demo. &StackName=MyStack &TemplateURL=oss%3A//ros/template/demo &Parameters.1.ParameterKey=Amount &Parameters.1.ParameterValue=12 &TimeoutInMinutes=12 &DisableRollback=false &RegionId=cn-hangzhou &ClientToken=123e4567-e89b-12d3-a456-426655440000 &<公共请求参数> 正常返回示例 XML 格式 e85abe0c-6528-43fb-ae93-fdf8de22**** 4a6c9851-3b0f-4f5f-b4ca-a14bf691**** B288A0BE-D927-4888-B0F7-B35EF84B6E6F JSON 格式 { "ChangeSetId": "e85abe0c-6528-43fb-ae93-fdf8de22****", "StackId": "4a6c9851-3b0f-4f5f-b4ca-a14bf691****", "RequestId": "B288A0BE-D927-4888-B0F7-B35EF84B6E6F" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 HttpCode 错误码 错误信息 描述 400 CircularDependency Circular Dependency Found: {reason}. 模板包含循环引用。reason为具体原因。 400 InvalidSchema {reason}. 模板格式不正确。reason为具体原因。 400 InvalidTemplateAttribute The Referenced Attribute ({resource} {name}) is incorrect. 模板包含不正确的资源属性(输出)引用。resource为资源名,name为属性名。 400 InvalidTemplatePropertyType The specified value type of ({resource} {section}) is incorrect. 模板资源定义中的字段类型不正确。resource为资源名,section为字段名。 400 InvalidTemplateReference The specified reference "{name}" (in {referencer}) is incorrect. 模板包含不正确的引用。name为引用名,referencer为引用者。 400 InvalidTemplateSection The template section is invalid: {section}. 模板包含无效的字段。section为字段名。 400 InvalidTemplateVersion The template version is invalid: {reason}. 模板版本不正确。reason为具体原因。 400 StackPolicyValidationFailed Action denied by stack policy: {reason}. 未通过资源栈策略校验。reason为具体原因。 400 StackValidationFailed {reason}. 资源栈校验失败。reason为具体原因。 400 UnknownUserParameter The Parameter ({name}) was not defined in template. 传递的参数在模板中未定义。name为参数名。 400 UserParameterMissing The Parameter {name} was not provided. 参数在模板中已定义,但未传递值。name为参数名。 404 StackNotFound The Stack ({name}) could not be found. 资源栈不存在。name为资源栈名称或ID。 409 ActionInProgress Stack {name} already has an action ({action}) in progress. 资源栈在变更中。name为资源栈名称或ID,action为具体的变更操作。 409 ChangeSetExists The ChangeSet ({name}) of Stack ({stack}) already exists. 同名更改集已存在。name为更改集名,stack为关联的资源栈名称或ID。 409 StackExists The Stack ({name}) already exists. 同名资源栈已存在。name为资源栈名称。调用DeleteChangeSet接口删除更改集。 更改集满足如下条件才能删除: 状态为CREATE_COMPLETE、CREATE_FAILED或DELETE_FAILED 执行状态为UNAVAILABLE或AVAILABLE 执行一个更改集,将自动删除资源栈关联的其他更改集。 删除资源栈,将自动删除其关联的更改集。 当删除类型为CREATE的更改集时,需要自行删除其关联的资源栈。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 DeleteChangeSet 系统规定参数。取值:DeleteChangeSet。 RegionId String 是 cn-hangzhou 更改集所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 ChangeSetId String 是 1f6521a4-05af-4975-afe9-bc4b45ad5bd5 更改集ID。 返回数据 名称 类型 示例值 描述 RequestId String B288A0BE-D927-4888-B0F7-B35EF84B6E6F 请求ID。 示例 请求示例 http(s)://ros.aliyuncs.com/?Action=DeleteChangeSet &ChangeSetId=1f6521a4-05af-4975-afe9-bc4b45ad5bd5 &RegionId=cn-hangzhou &<公共请求参数> 正常返回示例 XML 格式 B288A0BE-D927-4888-B0F7-B35EF84B6E6F JSON 格式 { "RequestId":"B288A0BE-D927-4888-B0F7-B35EF84B6E6F" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 错误代码 错误信息 Http状态码 描述 ChangeSetNotFound The ChangeSet ({name}) of Stack ({stack}) could not be found. 404 更改集不存在,name为更改集名称或ID,stack为资源栈名称或ID。 ChangeSetNotFound The ChangeSet {ID} could not be found. 404 更改集不存在,ID为更改集ID。 StackNotFound The Stack ({name}) could not be found. 404 资源栈不存在,name为资源栈名称或ID。 ActionInProgress Stack {name} already has an action ({action}) in progress. 409 资源栈在变更中,name为资源栈名称或ID,action为变更操作。调用ExecuteChangeSet接口执行更改集。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 ExecuteChangeSet 系统规定参数。取值:ExecuteChangeSet。 RegionId String 是 cn-hangzhou 更改集所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 ChangeSetId String 是 1f6521a4-05af-4975-afe9-bc4b45ad5bd5 更改集ID。 返回数据 名称 类型 示例值 描述 RequestId String B288A0BE-D927-4888-B0F7-B35EF84B6E6F 请求ID。 示例 请求示例 http(s)://ros.aliyuncs.com/?Action=ExecuteChangeSet &ChangeSetId=1f6521a4-05af-4975-afe9-bc4b45ad5bd5 &RegionId=cn-hangzhou &<公共请求参数> 正常返回示例 XML 格式 B288A0BE-D927-4888-B0F7-B35EF84B6E6F JSON 格式 { "RequestId":"B288A0BE-D927-4888-B0F7-B35EF84B6E6F" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 错误代码 错误信息 Http状态码 描述 ChangeSetNotFound The ChangeSet ({name}) of Stack ({stack}) could not be found. 404 更改集不存在,name为更改集名称或ID,stack为资源栈名称或ID。 ChangeSetNotFound The ChangeSet {ID} could not be found. 404 更改集不存在,ID为更改集ID。 StackNotFound The Stack ({name}) could not be found. 404 资源栈不存在,name为资源栈名称或ID。 ActionInProgress Stack {name} already has an action ({action}) in progress. 409 资源栈在变更中,name为资源栈名称或ID,action为变更操作。调用ExecuteChangeSet接口执行更改集。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 ExecuteChangeSet 系统规定参数。取值:ExecuteChangeSet。 RegionId String 是 cn-hangzhou 更改集所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 ChangeSetId String 是 1f6521a4-05af-4975-afe9-bc4b45ad5bd5 更改集ID。 返回数据 名称 类型 示例值 描述 RequestId String B288A0BE-D927-4888-B0F7-B35EF84B6E6F 请求ID。 示例 请求示例 http(s)://ros.aliyuncs.com/?Action=ExecuteChangeSet &ChangeSetId=1f6521a4-05af-4975-afe9-bc4b45ad5bd5 &RegionId=cn-hangzhou &<公共请求参数> 正常返回示例 XML 格式 B288A0BE-D927-4888-B0F7-B35EF84B6E6F JSON 格式 { "RequestId":"B288A0BE-D927-4888-B0F7-B35EF84B6E6F" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 错误代码 错误信息 Http状态码 描述 ChangeSetNotFound The ChangeSet ({name}) of Stack ({stack}) could not be found. 404 更改集不存在,name为更改集名称或ID,stack为资源栈名称或ID。 ChangeSetNotFound The ChangeSet {ID} could not be found. 404 更改集不存在,ID为更改集ID。 StackNotFound The Stack ({name}) could not be found. 404 资源栈不存在,name为资源栈名称或ID。 ActionInProgress Stack {name} already has an action ({action}) in progress. 409 资源栈在变更中,name为资源栈名称或ID,action为变更操作。 调用ExecuteChangeSet接口执行更改集。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 ExecuteChangeSet 系统规定参数。取值:ExecuteChangeSet。 RegionId String 是 cn-hangzhou 更改集所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 ChangeSetId String 是 1f6521a4-05af-4975-afe9-bc4b45ad5bd5 更改集ID。 返回数据 名称 类型 示例值 描述 RequestId String B288A0BE-D927-4888-B0F7-B35EF84B6E6F 请求ID。 示例 请求示例 http(s)://ros.aliyuncs.com/?Action=ExecuteChangeSet &ChangeSetId=1f6521a4-05af-4975-afe9-bc4b45ad5bd5 &RegionId=cn-hangzhou &<公共请求参数> 正常返回示例 XML 格式 B288A0BE-D927-4888-B0F7-B35EF84B6E6F JSON 格式 { "RequestId":"B288A0BE-D927-4888-B0F7-B35EF84B6E6F" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 错误代码 错误信息 Http状态码 描述 ChangeSetNotFound The ChangeSet ({name}) of Stack ({stack}) could not be found. 404 更改集不存在,name为更改集名称或ID,stack为资源栈名称或ID。 ChangeSetNotFound The ChangeSet {ID} could not be found. 404 更改集不存在,ID为更改集ID。 StackNotFound The Stack ({name}) could not be found. 404 资源栈不存在,name为资源栈名称或ID。 ActionInProgress Stack {name} already has an action ({action}) in progress. 409 资源栈在变更中,name为资源栈名称或ID,action为变更操作。 调用GetChangeSet接口查询更改集信息。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 GetChangeSet 系统规定参数。取值:GetChangeSet。 ChangeSetId String 是 1f6521a4-05af-4975-afe9-bc4b45ad5bd5 更改集ID。 RegionId String 是 cn-hangzhou 更改集所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 ShowTemplate Boolean 否 true 是否获取模板。 默认值:false。 返回数据 名称 类型 示例值 描述 ChangeSetId String 1f6521a4-05af-4975-afe9-bc4b45ad5bd5 更改集ID。 ChangeSetName String MyChangeSet 更改集名称。 ChangeSetType String CREATE 更改集类型。 Description String It is a demo. 更改集描述。 Status String CREATE_COMPLETE 更改集状态。 ExecutionStatus String AVAILABLE 更改集执行状态。 CreateTime String 2019-08-08T12:27:44 创建时间,按照ISO8601标准表示,并需要使用UTC时间。格式为:YYYY-MM-DDThh:mm:ss。 StackId String 4a6c9851-3b0f-4f5f-b4ca-a14bf691f2ff 更改集所属资源栈ID。 StackName String MyStack 更改集所属资源栈名。 TimeoutInMinutes Integer 12 资源栈创建或更新超时时间。 DisableRollback Boolean false 资源栈在创建或更新失败时是否回滚。 TemplateBody String 参见示例 更改集对应的模板。 当ShowTemplate为true时,才会返回。 Parameters Array 资源栈参数列表。 Changes List 参见示例 更改集变更内容列表,具体参见更改集数据结构。 RegionId String cn-hangzhou 地域ID。 RequestId String D2FD94C1-33A4-41A0-ABFB-B82533940931 请求ID。 示例 请求示例 http(s)://ros.aliyuncs.com/?Action=GetChangeSet &ChangeSetId=1f6521a4-05af-4975-afe9-bc4b45ad5bd5 &ShowTemplate=true &RegionId=cn-hangzhou &<公共请求参数> 正常返回示例 XML 格式 1f6521a4-05af-4975-afe9-bc4b45ad5bd5 MyChangeSet CREATE It is a demo. CREATE_COMPLETE AVAILABLE 2019-08-08T12:27:44 4a6c9851-3b0f-4f5f-b4ca-a14bf691f2ff MyStack 12 false {"ROSTemplateFormatVersion":"2015-09-01","Parameters":{"SecurityGroupId":{"Type":"String"}},"Resources":{"WebServer":{"Type":"ALIYUN::ECS::Instance","Properties":{"ImageId":"centos_7","InstanceType":"ecs.c6.large","SecurityGroupId":{"Ref":"SecurityGroupId"}}}},"Outputs":{"InstanceId":{"Value":{"Fn:GetAtt":["WebServer","InstanceId"]}},"PublicIp":{"Value":{"Fn:GetAtt":["WebServer","PublicIp"]}}}} ALIYUN::AccountId 123456789 ALIYUN::NoValue None ALIYUN::Region cn-hangzhou ALIYUN::StackId 4a6c9851-3b0f-4f5f-b4ca-a14bf691f2ff ALIYUN::StackName MyStack SecurityGroupId sg-bp1bi13eostn1tj3z3k5 Add WebServer ALIYUN::ECS::Instance Resource cn-hangzhou D2FD94C1-33A4-41A0-ABFB-B82533940931 JSON 格式 { "ChangeSetId": "1f6521a4-05af-4975-afe9-bc4b45ad5bd5", "ChangeSetName": "MyChangeSet", "ChangeSetType": "CREATE", "Description": "It is a demo.", "Status": "CREATE_COMPLETE", "ExecutionStatus": "AVAILABLE", "CreateTime": "2019-08-08T12:27:44", "StackId": "4a6c9851-3b0f-4f5f-b4ca-a14bf691f2ff", "StackName": "MyStack", "TimeoutInMinutes": 12, "DisableRollback": false, "TemplateBody": "{"ROSTemplateFormatVersion":"2015-09-01","Parameters":{"SecurityGroupId":{"Type":"String"}},"Resources":{"WebServer":{"Type":"ALIYUN::ECS::Instance","Properties":{"ImageId":"centos_7","InstanceType":"ecs.c6.large","SecurityGroupId":{"Ref":"SecurityGroupId"}}}},"Outputs":{"InstanceId":{"Value":{"Fn:GetAtt":["WebServer","InstanceId"]}},"PublicIp":{"Value":{"Fn:GetAtt":["WebServer","PublicIp"]}}}}", "Parameters": [ { "ParameterKey": "ALIYUN::AccountId", "ParameterValue": "123456789" }, { "ParameterKey": "ALIYUN::NoValue", "ParameterValue": "None" }, { "ParameterKey": "ALIYUN::Region", "ParameterValue": "cn-hangzhou" }, { "ParameterKey": "ALIYUN::StackId", "ParameterValue": "4a6c9851-3b0f-4f5f-b4ca-a14bf691f2ff" }, { "ParameterKey": "ALIYUN::StackName", "ParameterValue": "MyStack" }, { "ParameterKey": "SecurityGroupId", "ParameterValue": "sg-bp1bi13eostn1tj3z3k5" } ], "Changes": [ { "ResourceChange": { "Action": "Add", "Details": [], "LogicalResourceId": "WebServer", "ResourceType": "ALIYUN::ECS::Instance", "Scope": [] }, "Type": "Resource" } ], "RegionId": "cn-hangzhou", "RequestId": "D2FD94C1-33A4-41A0-ABFB-B82533940931" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 错误代码 错误信息 Http状态码 描述 ChangeSetNotFound The ChangeSet ({name}) of Stack ({stack}) could not be found. 404 更改集不存在,name为更改集名称或ID,stack为资源栈名称或ID。 ChangeSetNotFound The ChangeSet {ID} could not be found. 404 更改集不存在,ID为更改集ID。 StackNotFound The Stack ({name}) could not be found. 404 资源栈不存在,name为资源栈名称或ID。 调用ListChangeSets接口查询更改集列表。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 ListChangeSets 系统规定参数。取值:ListChangeSets。 RegionId String 是 cn-hangzhou 更改集所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 StackId String 是 4a6c9851-3b0f-4f5f-b4ca-a14bf691**** 资源栈ID。 ChangeSetName.N RepeatList 否 MyChangeSet 更改集的名称。N的最大值为5。支持使用通配符*进行模糊搜索。 Status.N RepeatList 否 CREATE_COMPLETE 更改集的状态。N的最大值为5。取值: CREATE_PENDING CREATE_IN_PROGRESS CREATE_COMPLETE CREATE_FAILED DELETE_FAILED DELETE_COMPLETE ExecutionStatus.N RepeatList 否 AVAILABLE 更改集的执行状态。N的最大值为5。取值: UNAVAILABLE AVAILABLE EXECUTE_IN_PROGRESS EXECUTE_COMPLETE EXECUTE_FAILED OBSOLETE PageNumber Long 否 1 更改集列表的页码。起始值:1。默认值:1。 PageSize Long 否 10 分页查询时设置的每页行数。取值:1~50。默认值:10。 ChangeSetId String 否 1f6521a4-05af-4975-afe9-bc4b45ad**** 更改集ID。如果不需要更改集详细信息,可使用此参数代替GetChangeSet接口。 返回数据 名称 类型 示例值 描述 PageNumber Integer 1 分页查询的页码。 PageSize Integer 10 分页查询时设置的每页行数。 RequestId String B288A0BE-D927-4888-B0F7-B35EF84B6E6F 请求ID。 TotalCount Integer 1 查询到的总数。 ChangeSets Array 更改集列表。 示例 请求示例 http(s)://ros.aliyuncs.com/?Action=ListChangeSets &StackId=4a6c9851-3b0f-4f5f-b4ca-a14bf691**** &PageNumber=1 &PageSize=10 &RegionId=cn-hangzhou &<公共请求参数> 正常返回示例 XML 格式 1f6521a4-05af-4975-afe9-bc4b45ad**** MyChangeSet UPDATE It is a demo. 2019-08-01T05:16:31 CREATE_COMPLETE AVAILABLE 4a6c9851-3b0f-4f5f-b4ca-a14bf691**** MyStack cn-hangzhou 1 10 1 B288A0BE-D927-4888-B0F7-B35EF84B6E6F JSON 格式 { "ChangeSets": [ { "ChangeSetId": "1f6521a4-05af-4975-afe9-bc4b45ad****", "ChangeSetName": "MyChangeSet", "ChangeSetType": "UPDATE", "Description": "It is a demo.", "CreateTime": "2019-08-01T05:16:31", "Status": "CREATE_COMPLETE", "ExecutionStatus": "AVAILABLE", "StackId": "4a6c9851-3b0f-4f5f-b4ca-a14bf691****", "StackName": "MyStack", "RegionId": "cn-hangzhou" } ], "PageNumber": 1, "PageSize": 10, "TotalCount": 1, "RequestId": "B288A0BE-D927-4888-B0F7-B35EF84B6E6F" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 HttpCode 错误码 错误信息 描述 404 StackNotFound The Stack ({name}) could not be found. 资源栈不存在。name为资源栈名称或ID。

1934890530796658 2020-03-24 19:15:42 0 浏览量 回答数 0

回答

OpenSearch服务会对每个访问的请求进行身份验证,通过使用Access Key ID和Access Key Secret进行对称加密的方法来验证请求的发送者身份。 Access Key ID和Access Key Secret由阿里云官方颁发给访问者(可以通过阿里云官方网站申请和管理),其中Access Key ID用于标识访问者的身份。 Access Key Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密,只有阿里云和用户知道。 支持应用类型 高级版 标准版 通信协议 只支持 HTTP 协议 请求对应方式 搜索数据必须使用:GET 推送数据必须使用:POST Authorization 字段计算方法 需在 HTTP 请求 Header 头信息中,添加 Authorization(授权)来包含签名(Signature)信息,表明该请求已被授权。请求Header 中也需要包含文档下面“签名示例”部分中“请求Header”中提到的这些相关的请求Header。 请求 Header 中包含的参数都必须要参与签名(例如 Content-Md5,Content-Type,Date,Http专有 Header 等等)。 "Authorization: OPENSEARCH " + AccessKeyId + ":" + Signature Signature = base64(hmac-sha1(AccessKeySecret, VERB + "\n" + Content-Md5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedOpenSearchHeaders + CanonicalizedResource)) 按照RFC2104的定义,使用上面的用于签名的字符串计算签名HMAC值 签名的方法用 RFC 2104 中定义的 HMAC-SHA1 方法 签名的字符串必须为UTF-8格式 含有中文字符的签名字符串必须先进行UTF-8编码,再与AccessKeySecret计算最终签名 签名参数先后顺序,必须和上面保持一致 参数 描述 AccessKeyId 不能为空,请求Header 中的 Authorization 需要用到该 AccessKeyId 值,表示访问指定应用的用户 AccessKeySecret 不能为空,签名所需的秘钥 VERB 不能为空,表示请求操作方法。HTTP 请求 Method,主要有 PUT、GET、POST、HEAD、DELETE 等,不同接口Method也不同 \n 换行符 Content-MD5 请求body有内容时,不能为空。该参数值为,请求body 的MD5值。该请求头用于消息合法性的检查(消息内容是否与发送时一致),例如 4991ef0788236a8f280fed0db928e74e ,对于不发送 body 的请求,例如查询请求,此值请留空。详情参看 RFC2616 Content-MD5 Content-Type application/json Date 不能为空,表示此次操作时间,且必须为 秒级 的 ISO 格式,如2019-02-25T10:09:57Z,时间为UTC时间;如果此时间和 OpenSearch 服务器的时间差正负 15 分钟以上,服务器将拒绝该服务,并返回 HTTP 403 错误 CanonicalizedOpenSearchHeaders 不能为空,用于区分每次请求,以 X-Opensearch- 为前缀的Http专有 Header组合,例如 X-Opensearch-Nonce,在签名过程中这些Http专有 Header名必须全部小写,例如 x-opensearch-nonce,若这些Http专有Header是作为请求Header参数,则需按照原格式名显示 若请求 Header 中不包含这些Http专有 Header,该参数不参与签名计算,在签名方法中直接去掉该参数。 CanonicalizedResource 不能为空,表示用户此次请求路径,例如 /v3/openapi/apps/app_schema_demo/search?fetch_fields=name&query=query%3Dname%3A%27%E6%96%87%E6%A1%A3%27&&sort%3Did&&config%3Dformat%3Afulljson 查询请求 请求签名参数 必须 请求 Header 参数 必须 AccessKeySecret 是 Date 是 VERB 是 X-Opensearch-Nonce 是 Date 是 Authorization 是 x-opensearch-nonce 是 canonicalized_resource 是 Header 中的参数值必须要与对应签名方法中的参数值一致 建议将 Content-Md5,Content-Type,Date,CanonicalizedOpenSearchHeaders,Authorization 这些参数都添加到请求Header中,只包含必须参数可能会出现报错,需避免 请求 Header 中包含的参数都必须要参与签名 推送请求 请求签名参数 必须 请求 Header 参数 必须 AccessKeySecret 是 Content-MD5 是 VERB 是 Date 是 Content-MD5 是 Authorization 是 Date 是 canonicalized_resource 是 Header 中的参数值必须要与对应签名方法中的参数值一致 理论上 Content-Md5,Content-Type,Date,CanonicalizedOpenSearchHeaders,Authorization 这些参数都需要添加到请求Header中,只包含必须参数可能会出现报错,需避免 请求 Header 中包含的参数都必须要参与签名 构建CanonicalizedOpenSearchHeaders的方法 所有以 X-Opensearch- 为前缀的 Http专有 Header 被称为 CanonicalizedOpenSearchHeaders,其他非 Http专有 Header 将不被纳入验证 将所有以 X-Opensearch- 为前缀的Http专有 Header 对应的内容补齐,例如X-Opensearch-Nonce : 1551089397451704(该Nonce参数值,可由10位时间戳+6位随机值(100000~999999)组合而成,例如1551089397451704),再去除所有值为空的Http专有 Header 将这些有对应内容值的Http专有 Header 按照名称的字典序进行升序排序 再将这些排序后的专有 Header名,全部转换成小写字母,例如将 X-Opensearch-Nonce : 1551089397451704 转换成 x-opensearch-nonce : 1551089397451704 删除请求头和内容之间分隔符两端出现的任何空格。例如该 x-opensearch-nonce : 1551089397451704 参数,删除两端空格后为:x-opensearch-nonce:1551089397451704 最后将每个请求头及对应内容作为一个单位项,再将每一项之间用 \n 连接拼成最后的 CanonicalizedOpenSearchHeaders,注意最后一个也要有 \n 注意: 若查询请求Header中不包含此处Http专有 Header,即该参数中一个Http专有 Header都没有,则无需 \n,只需在签名方法中去掉该CanonicalizedOpenSearchHeaders签名参数即可,该参数不参与签名计算。 将Http专有 Header添加到Header中时,不能是转换后的小写形式,需按原格式显示 构建CanonicalizedResource的方法 签名的字符串必须为UTF-8格式,且含有中文字符的签名字符串必须先进行 UTF-8 编码,再与 AccessKeySecret 计算最终签名 查询 CanonicalizedResource = path + ? + query 推送 CanonicalizedResource = path 构建 path 部分 对 path 进行urlencode后,再替换 %2F 为 /,下面的app_schema_demo需替换为自己应用名,常见 path 如下所示 search查询path /v3/openapi/apps/app_schema_demo/search suggest查询path /v3/openapi/apps/app_schema_demo/suggest/suggest/search 最终查询指定应用信息查询请求串,下面“appid”需替换为待查询的应用ID,需包含Authorization授权签名参数(无需指定查询参数) /v3/openapi/apps/appid 推送数据path(tab 是要推送到应用中的某个具体表名,也需替换为自己应用表名) /v3/openapi/apps/app_schema_demo/tab/actions/bulk 构建 query 部分 query 部分由查询参数构成,参数为键值对形式 为需要指定的查询参数设置对应的参数值,并去掉value为空的参数(value为空的参数不计算签名) 再对每一个参数按照先比较参数名后比较参数值的顺序,按照字典升序 再对每一部分的参数名和参数值进行 urlencode,再将参数名和对应参数值之间通过=拼接 再将各个查询参数之间用 & 分割拼接并存储到 query 字符串中 再将该 query 字符串中的+字符,替换成%20。注意如果有&&字符,也需替换成&&。 最后按照 path + ? + query 方式拼接至CanonicalizedResource字符串中,即完成查询操作CanonicalizedResource参数构建,示例如下: /v3/openapi/apps/app_schema_demo/search?fetch_fields=name&query=query%3Dname%3A%27%E6%96%87%E6%A1%A3%27&&sort%3Did&&config%3Dformat%3Afulljson 以上请求串中主要包含的参数及参数值描述如下: fetch_fields=name 以上请求串中主要包含的query参数中各子句及参数值描述如下(第一个是query参数,第二个是query子句及其它相关子句): query=query=name:'文档'&&sort=id&&config=format:fulljson 注意: query参数中各个查询子句之间必须要用 && 进行拼接 若为推送操作,则只需将 path 部分拼接至 CanonicalizedResource 字符串中即可 构建 Authorization 字段 构建方法参考开头部分描述,需添加到请求 Header 中。假如AccessKeyId 为LTAItQcybixtR9A0,Signature为 1P7tfEh+CU5kFYRXzZ14kkJUAMc=,则python3示例代码大致如下: headers['Authorization'] = 'OPENSEARCH ' + 'LTAItQcybixtR9A0' + ':' + '1P7tfEh+CU5kFYRXzZ14kkJUAMc=' 签名示例 假如参数值如下 Authorization值为OPENSEARCH LTAItQcybixtR9A0:1P7tfEh+CU5kFYRXzZ14kkJUAMc= AccessKeySecret值为 R0OGKsMj0etgyA9nZM5ykhMqHXBfKG 请求方式为GET Content-MD5值为空,此处作为查询请求 Content-Type值为application/json Date值为2019-02-25T10:09:57Z CanonicalizedOpenSearchHeaders值为x-opensearch-nonce:1551089397451704 CanonicalizedResource值为/v3/openapi/apps/app_schema_demo/search?fetch_fields=name&query=query%3Dname%3A%27%E6%96%87%E6%A1%A3%27&&sort%3Did&&config%3Dformat%3Afulljson 请求Header 签名字符串计算公式 签名字符串 ‘Content-MD5’: ‘’, ‘Content-Type’: ‘application/json’, ‘Authorization’: ‘OPENSEARCH LTAItQcybixtR9A0:1P7tfEh+CU5kFYRXzZ14kkJUAMc=’, ‘X-Opensearch-Nonce’: ‘1551089397451704’, ‘Date’: ‘2019-02-25T10:09:57Z’ Signature = base64(hmac-sha1( AccessKeySecret, VERB + “\n” + Content-Md5 + “\n” + Content-Type + “\n” + Date + “\n” + CanonicalizedOpenSearchHeaders + CanonicalizedResource)) 1P7tfEh+CU5kFYRXzZ14kkJUAMc= , GET\n \n application/json\n 2019-02-25T10:09:57Z\n x-opensearch-nonce:1551089397451704\n /v3/openapi/apps/app_schema_demo/search?fetch_fields=name&query=query%3Dname%3A%27%E6%96%87%E6%A1%A3%27&&sort%3Did&&config%3Dformat%3Afulljson 注意: 请求Header中参数值需与签名方法中对应参数值保持一致 可用以下方法计算签名(Signature) 以 hash_hmac 和 base64_encode 编码生成加密值作为Signature python3 示例代码: import hmac import base64 signature_string = '\n'.join(['GET', '', 'application/json', '2019-02-25T10:09:57Z', 'x-opensearch-nonce:1551089397451704', '/v3/openapi/apps/app_schema_demo/search?fetch_fields=name&query=query%3Dname%3A%27%E6%96%87%E6%A1%A3%27&&sort%3Did&&config%3Dformat%3Afulljson']) signature_hmac = hmac.new('R0OGKsMj0etgyA9nZM5ykhMqHXBfKG'.encode('utf-8'), signature_string.encode('utf-8'), 'sha1') signature = base64.b64encode(signature_hmac.digest()) 假如AccessKeySecret值为 R0OGKsMj0etgyA9nZM5ykhMqHXBfKG 那么通过上面的签名方法构造出来的签名值为 1P7tfEh+CU5kFYRXzZ14kkJUAMc= 构建请求串 请求串 = host + CanonicalizedResource 需在 HTTP 请求 Header 头信息中增加 Authorization(授权)来包含签名(Signature)信息,表明该请求已被授权,同时Header中也需要包含上面提到的这些相关的请求Header。(host为应用访问API地址) 最终search查询请求串 http://host/v3/openapi/apps/app_schema_demo/search?fetch_fields=name&query=query%3Dname%3A%27%E6%96%87%E6%A1%A3%27&&sort%3Did&&config%3Dformat%3Afulljson 最终suggest查询请求串 http://host/v3/openapi/apps/app_schema_demo/suggest/suggest/search?query=%E6%A0%87%E9%A2%98&hits=10 最终查询指定应用信息查询请求串,下面最后一部分为“appid”值,假设为120001234该值,替换后如下所示,该查询请求也需包含Authorization授权签名参数(无需指定查询参数) http://host/v3/openapi/apps/120001234 最终推送数据请求串,此处推送数据需放在body体中 http://host/v3/openapi/apps/app_schema_demo/tab/actions/bulk v3API签名Demo 目前已对外公开 v3版官方Java SDK 和 PHP SDK,且PHP SDK已包含v3API签名过程实现源码,直接调用这些方法即可使用,也可参考 PHP SDK 签名实现过程源码,或参考本文档v3API签名过程来实现其它语言SDK。 因目前OpenSearch官方,没有正式对外提供官方的 python版 和 C#版 SDK,为方便用户参考实现该文档描述签名过程,此处提供 python及C#版查询和推送签名Demo,以供用户参考实现本文档签名操作。 注意: 此处提供 Demo 仅供参考,后续用户参考此 Demo 实现的 SDK 由用户自己维护。

保持可爱mmm 2020-03-26 21:56:23 0 浏览量 回答数 0

回答

OpenSearch服务会对每个访问的请求进行身份验证,通过使用Access Key ID和Access Key Secret进行对称加密的方法来验证请求的发送者身份。 Access Key ID和Access Key Secret由阿里云官方颁发给访问者(可以通过阿里云官方网站申请和管理),其中Access Key ID用于标识访问者的身份。 Access Key Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密,只有阿里云和用户知道。 支持应用类型 高级版 标准版 通信协议 只支持 HTTP 协议 请求对应方式 搜索数据必须使用:GET 推送数据必须使用:POST Authorization 字段计算方法 需在 HTTP 请求 Header 头信息中,添加 Authorization(授权)来包含签名(Signature)信息,表明该请求已被授权。请求Header 中也需要包含文档下面“签名示例”部分中“请求Header”中提到的这些相关的请求Header。 请求 Header 中包含的参数都必须要参与签名(例如 Content-Md5,Content-Type,Date,Http专有 Header 等等)。 "Authorization: OPENSEARCH " + AccessKeyId + ":" + Signature Signature = base64(hmac-sha1(AccessKeySecret, VERB + "\n" + Content-Md5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedOpenSearchHeaders + CanonicalizedResource)) 按照RFC2104的定义,使用上面的用于签名的字符串计算签名HMAC值 签名的方法用 RFC 2104 中定义的 HMAC-SHA1 方法 签名的字符串必须为UTF-8格式 含有中文字符的签名字符串必须先进行UTF-8编码,再与AccessKeySecret计算最终签名 签名参数先后顺序,必须和上面保持一致 参数 描述 AccessKeyId 不能为空,请求Header 中的 Authorization 需要用到该 AccessKeyId 值,表示访问指定应用的用户 AccessKeySecret 不能为空,签名所需的秘钥 VERB 不能为空,表示请求操作方法。HTTP 请求 Method,主要有 PUT、GET、POST、HEAD、DELETE 等,不同接口Method也不同 \n 换行符 Content-MD5 请求body有内容时,不能为空。该参数值为,请求body 的MD5值。该请求头用于消息合法性的检查(消息内容是否与发送时一致),例如 4991ef0788236a8f280fed0db928e74e ,对于不发送 body 的请求,例如查询请求,此值请留空。详情参看 RFC2616 Content-MD5 Content-Type application/json Date 不能为空,表示此次操作时间,且必须为 秒级 的 ISO 格式,如2019-02-25T10:09:57Z,时间为UTC时间;如果此时间和 OpenSearch 服务器的时间差正负 15 分钟以上,服务器将拒绝该服务,并返回 HTTP 403 错误 CanonicalizedOpenSearchHeaders 不能为空,用于区分每次请求,以 X-Opensearch- 为前缀的Http专有 Header组合,例如 X-Opensearch-Nonce,在签名过程中这些Http专有 Header名必须全部小写,例如 x-opensearch-nonce,若这些Http专有Header是作为请求Header参数,则需按照原格式名显示 若请求 Header 中不包含这些Http专有 Header,该参数不参与签名计算,在签名方法中直接去掉该参数。 CanonicalizedResource 不能为空,表示用户此次请求路径,例如 /v3/openapi/apps/app_schema_demo/search?fetch_fields=name&query=query%3Dname%3A%27%E6%96%87%E6%A1%A3%27&&sort%3Did&&config%3Dformat%3Afulljson 查询请求 请求签名参数 必须 请求 Header 参数 必须 AccessKeySecret 是 Date 是 VERB 是 X-Opensearch-Nonce 是 Date 是 Authorization 是 x-opensearch-nonce 是 canonicalized_resource 是 Header 中的参数值必须要与对应签名方法中的参数值一致 建议将 Content-Md5,Content-Type,Date,CanonicalizedOpenSearchHeaders,Authorization 这些参数都添加到请求Header中,只包含必须参数可能会出现报错,需避免 请求 Header 中包含的参数都必须要参与签名 推送请求 请求签名参数 必须 请求 Header 参数 必须 AccessKeySecret 是 Content-MD5 是 VERB 是 Date 是 Content-MD5 是 Authorization 是 Date 是 canonicalized_resource 是 Header 中的参数值必须要与对应签名方法中的参数值一致 理论上 Content-Md5,Content-Type,Date,CanonicalizedOpenSearchHeaders,Authorization 这些参数都需要添加到请求Header中,只包含必须参数可能会出现报错,需避免 请求 Header 中包含的参数都必须要参与签名 构建CanonicalizedOpenSearchHeaders的方法 所有以 X-Opensearch- 为前缀的 Http专有 Header 被称为 CanonicalizedOpenSearchHeaders,其他非 Http专有 Header 将不被纳入验证 将所有以 X-Opensearch- 为前缀的Http专有 Header 对应的内容补齐,例如X-Opensearch-Nonce : 1551089397451704(该Nonce参数值,可由10位时间戳+6位随机值(100000~999999)组合而成,例如1551089397451704),再去除所有值为空的Http专有 Header 将这些有对应内容值的Http专有 Header 按照名称的字典序进行升序排序 再将这些排序后的专有 Header名,全部转换成小写字母,例如将 X-Opensearch-Nonce : 1551089397451704 转换成 x-opensearch-nonce : 1551089397451704 删除请求头和内容之间分隔符两端出现的任何空格。例如该 x-opensearch-nonce : 1551089397451704 参数,删除两端空格后为:x-opensearch-nonce:1551089397451704 最后将每个请求头及对应内容作为一个单位项,再将每一项之间用 \n 连接拼成最后的 CanonicalizedOpenSearchHeaders,注意最后一个也要有 \n 注意: 若查询请求Header中不包含此处Http专有 Header,即该参数中一个Http专有 Header都没有,则无需 \n,只需在签名方法中去掉该CanonicalizedOpenSearchHeaders签名参数即可,该参数不参与签名计算。 将Http专有 Header添加到Header中时,不能是转换后的小写形式,需按原格式显示 构建CanonicalizedResource的方法 签名的字符串必须为UTF-8格式,且含有中文字符的签名字符串必须先进行 UTF-8 编码,再与 AccessKeySecret 计算最终签名 查询 CanonicalizedResource = path + ? + query 推送 CanonicalizedResource = path 构建 path 部分 对 path 进行urlencode后,再替换 %2F 为 /,下面的app_schema_demo需替换为自己应用名,常见 path 如下所示 search查询path /v3/openapi/apps/app_schema_demo/search suggest查询path /v3/openapi/apps/app_schema_demo/suggest/suggest/search 最终查询指定应用信息查询请求串,下面“appid”需替换为待查询的应用ID,需包含Authorization授权签名参数(无需指定查询参数) /v3/openapi/apps/appid 推送数据path(tab 是要推送到应用中的某个具体表名,也需替换为自己应用表名) /v3/openapi/apps/app_schema_demo/tab/actions/bulk 构建 query 部分 query 部分由查询参数构成,参数为键值对形式 为需要指定的查询参数设置对应的参数值,并去掉value为空的参数(value为空的参数不计算签名) 再对每一个参数按照先比较参数名后比较参数值的顺序,按照字典升序 再对每一部分的参数名和参数值进行 urlencode,再将参数名和对应参数值之间通过=拼接 再将各个查询参数之间用 & 分割拼接并存储到 query 字符串中 再将该 query 字符串中的+字符,替换成%20。注意如果有&&字符,也需替换成&&。 最后按照 path + ? + query 方式拼接至CanonicalizedResource字符串中,即完成查询操作CanonicalizedResource参数构建,示例如下: /v3/openapi/apps/app_schema_demo/search?fetch_fields=name&query=query%3Dname%3A%27%E6%96%87%E6%A1%A3%27&&sort%3Did&&config%3Dformat%3Afulljson 以上请求串中主要包含的参数及参数值描述如下: fetch_fields=name 以上请求串中主要包含的query参数中各子句及参数值描述如下(第一个是query参数,第二个是query子句及其它相关子句): query=query=name:'文档'&&sort=id&&config=format:fulljson 注意: query参数中各个查询子句之间必须要用 && 进行拼接 若为推送操作,则只需将 path 部分拼接至 CanonicalizedResource 字符串中即可 构建 Authorization 字段 构建方法参考开头部分描述,需添加到请求 Header 中。假如AccessKeyId 为LTAItQcybixtR9A0,Signature为 1P7tfEh+CU5kFYRXzZ14kkJUAMc=,则python3示例代码大致如下: headers['Authorization'] = 'OPENSEARCH ' + 'LTAItQcybixtR9A0' + ':' + '1P7tfEh+CU5kFYRXzZ14kkJUAMc=' 签名示例 假如参数值如下 Authorization值为OPENSEARCH LTAItQcybixtR9A0:1P7tfEh+CU5kFYRXzZ14kkJUAMc= AccessKeySecret值为 R0OGKsMj0etgyA9nZM5ykhMqHXBfKG 请求方式为GET Content-MD5值为空,此处作为查询请求 Content-Type值为application/json Date值为2019-02-25T10:09:57Z CanonicalizedOpenSearchHeaders值为x-opensearch-nonce:1551089397451704 CanonicalizedResource值为/v3/openapi/apps/app_schema_demo/search?fetch_fields=name&query=query%3Dname%3A%27%E6%96%87%E6%A1%A3%27&&sort%3Did&&config%3Dformat%3Afulljson 请求Header 签名字符串计算公式 签名字符串 ‘Content-MD5’: ‘’, ‘Content-Type’: ‘application/json’, ‘Authorization’: ‘OPENSEARCH LTAItQcybixtR9A0:1P7tfEh+CU5kFYRXzZ14kkJUAMc=’, ‘X-Opensearch-Nonce’: ‘1551089397451704’, ‘Date’: ‘2019-02-25T10:09:57Z’ Signature = base64(hmac-sha1( AccessKeySecret, VERB + “\n” + Content-Md5 + “\n” + Content-Type + “\n” + Date + “\n” + CanonicalizedOpenSearchHeaders + CanonicalizedResource)) 1P7tfEh+CU5kFYRXzZ14kkJUAMc= , GET\n \n application/json\n 2019-02-25T10:09:57Z\n x-opensearch-nonce:1551089397451704\n /v3/openapi/apps/app_schema_demo/search?fetch_fields=name&query=query%3Dname%3A%27%E6%96%87%E6%A1%A3%27&&sort%3Did&&config%3Dformat%3Afulljson 注意: 请求Header中参数值需与签名方法中对应参数值保持一致 可用以下方法计算签名(Signature) 以 hash_hmac 和 base64_encode 编码生成加密值作为Signature python3 示例代码: import hmac import base64 signature_string = '\n'.join(['GET', '', 'application/json', '2019-02-25T10:09:57Z', 'x-opensearch-nonce:1551089397451704', '/v3/openapi/apps/app_schema_demo/search?fetch_fields=name&query=query%3Dname%3A%27%E6%96%87%E6%A1%A3%27&&sort%3Did&&config%3Dformat%3Afulljson']) signature_hmac = hmac.new('R0OGKsMj0etgyA9nZM5ykhMqHXBfKG'.encode('utf-8'), signature_string.encode('utf-8'), 'sha1') signature = base64.b64encode(signature_hmac.digest()) 假如AccessKeySecret值为 R0OGKsMj0etgyA9nZM5ykhMqHXBfKG 那么通过上面的签名方法构造出来的签名值为 1P7tfEh+CU5kFYRXzZ14kkJUAMc= 构建请求串 请求串 = host + CanonicalizedResource 需在 HTTP 请求 Header 头信息中增加 Authorization(授权)来包含签名(Signature)信息,表明该请求已被授权,同时Header中也需要包含上面提到的这些相关的请求Header。(host为应用访问API地址) 最终search查询请求串 http://host/v3/openapi/apps/app_schema_demo/search?fetch_fields=name&query=query%3Dname%3A%27%E6%96%87%E6%A1%A3%27&&sort%3Did&&config%3Dformat%3Afulljson 最终suggest查询请求串 http://host/v3/openapi/apps/app_schema_demo/suggest/suggest/search?query=%E6%A0%87%E9%A2%98&hits=10 最终查询指定应用信息查询请求串,下面最后一部分为“appid”值,假设为120001234该值,替换后如下所示,该查询请求也需包含Authorization授权签名参数(无需指定查询参数) http://host/v3/openapi/apps/120001234 最终推送数据请求串,此处推送数据需放在body体中 http://host/v3/openapi/apps/app_schema_demo/tab/actions/bulk v3API签名Demo 目前已对外公开 v3版官方Java SDK 和 PHP SDK,且PHP SDK已包含v3API签名过程实现源码,直接调用这些方法即可使用,也可参考 PHP SDK 签名实现过程源码,或参考本文档v3API签名过程来实现其它语言SDK。 因目前OpenSearch官方,没有正式对外提供官方的 python版 和 C#版 SDK,为方便用户参考实现该文档描述签名过程,此处提供 python及C#版查询和推送签名Demo,以供用户参考实现本文档签名操作。 注意: 此处提供 Demo 仅供参考,后续用户参考此 Demo 实现的 SDK 由用户自己维护。

保持可爱mmm 2020-03-26 21:56:35 0 浏览量 回答数 0

回答

调用CreateTemplate接口创建自定义模板。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 CreateTemplate 系统规定参数。取值:CreateTemplate。 TemplateName String 是 MyTemplate 模板的名称。模板名称可以包含数字、字母(大小写敏感)、连字符、下划线,必须以数字或字母开头,长度不超过255个字符。 TemplateURL String 否 oss://ros/template/demo 模板文件的位置。模板文件最大为524288个字节。URL必须指向位于Web服务器(http、https)或阿里云OSS存储空间(例如oss://ros/template/demo、oss://ros/template/demo?RegionId=cn-hangzhou。OSS地域如未指定,默认与接口参数RegionId相同。)中的模板。您必须指定TemplateBody或TemplateURL参数,但不能同时指定。URL的最大长度为1024个字节。 Description String 否 It is a demo. 模板的描述。最大长度为256个字符。 TemplateBody String 否 {"ROSTemplateFormatVersion":"2015-09-01"} 模板主体的结构。长度为1~524,288个字节。如果长度较大,则建议通过HTTP POST+Body Param的方式,将参数放在请求体中进行传递,避免URL过长而导致请求失败。您必须指定参数TemplateBody或TemplateURL,但不能同时指定。 返回数据 名称 类型 示例值 描述 RequestId String 8C5D90E1-66B6-496C-9371-3807F8DA80A8 请求ID。 TemplateId String 5ecd1e10-b0e9-4389-a565-e4c15efc**** 模板ID。 示例 请求示例 http(s)://[Endpoint]/?Action=CreateTemplate &TemplateName=MyTemplate &<公共请求参数> 正常返回示例 XML 格式 8C5D90E1-66B6-496C-9371-3807F8DA80A8 5ecd1e10-b0e9-4389-a565-e4c15efc**** JSON 格式 { "RequestId": "8C5D90E1-66B6-496C-9371-3807F8DA80A8", "TemplateId": "5ecd1e10-b0e9-4389-a565-e4c15efc****" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 HttpCode 错误码 错误信息 描述 400 InvalidSchema {reason}. 模板格式不正确。reason为具体原因。 400 InvalidTemplateAttribute The Referenced Attribute ({resource} {name}) is incorrect. 模板包含不正确的资源属性(输出)引用。resource为资源名,name为属性名。 400 InvalidTemplatePropertyType The specified value type of ({resource} {section}) is incorrect. 模板资源定义中的字段类型不正确。resource为资源名,section为字段名。 400 InvalidTemplateReference The specified reference "{name}" (in {referencer}) is incorrect. 模板包含不正确的引用。name为引用名,referencer为引用者。 400 InvalidTemplateSection The template section is invalid: {section}. 模板包含无效的字段。section为字段名。 400 InvalidTemplateVersion The template version is invalid: {reason}. 模板版本不正确。reason为具体原因。 调用DeleteTemplate接口删除模板。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 DeleteTemplate 系统规定参数。取值:DeleteTemplate。 TemplateId String 是 5ecd1e10-b0e9-4389-a565-e4c15efc**** 模板ID。 返回数据 名称 类型 示例值 描述 RequestId String 8C5D90E1-66B6-496C-9371-3807F8DA80A8 请求ID。 示例 请求示例 http(s)://[Endpoint]/?Action=DeleteTemplate &TemplateId=5ecd1e10-b0e9-4389-a565-e4c15efc**** &<公共请求参数> 正常返回示例 XML 格式 8C5D90E1-66B6-496C-9371-3807F8DA80A8 JSON 格式 { "RequestId":"8C5D90E1-66B6-496C-9371-3807F8DA80A8" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 HttpCode 错误码 错误信息 描述 404 TemplateNotFound The Tempalte ({ ID }) could not be found. 模板不存在。调用GetTemplate接口查询资源栈、更改集、自定义模板的模板详情。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 RegionId String 是 cn-hangzhou 模板所属资源栈的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 Action String 是 GetTemplate 系统规定参数。取值:GetTemplate。 StackId String 否 4a6c9851-3b0f-4f5f-b4ca-a14bf691**** 资源栈ID。 ChangeSetId String 否 1f6521a4-05af-4975-afe9-bc4b45ad**** 更改集ID。 TemplateId String 否 5ecd1e10-b0e9-4389-a565-e4c15efc**** 模板ID。 返回数据 名称 类型 示例值 描述 RequestId String B288A0BE-D927-4888-B0F7-B35EF84B6E6 请求ID。 TemplateBody String {"ROSTemplateFormatVersion": "2015-09-01"} 模板的结构。 示例 请求示例 http(s)://[Endpoint]/?Action=GetTemplate &RegionId=cn-hangzhou &<公共请求参数> 正常返回示例 XML 格式 {"ROSTemplateFormatVersion": "2015-09-01", "Resources": {"dummy2": {"Type": "ALIYUN::DEBUG::Dummy", "Properties": {"Map": {"Ref": "param_has_default"}, "List": {"Ref": "param_list"}}}, "dummy": {"Type": "ALIYUN::DEBUG::Dummy", "Properties": {"Map": {"Ref": "param_json_dict"}, "String": {"Ref": "param_str"}, "List": {"Ref": "param_json_list"}, "Number": {"Ref": "param_float"}, "Bool": {"Ref": "param_bool"}, "Integer": {"Ref": "param_integer"}}}, "nested": {"Type": "ALIYUN::ROS::Stack", "Properties": {"TemplateURL": "oss://nested-stack/simple/nested_demo", "TimeoutMins": 16}}, "WaitConditionHandle": {"Type": "ALIYUN::ROS::WaitConditionHandle", "Properties": {"UpdateVersion": {"Ref": "UpdateVersion"}}}}, "Parameters": {"param_integer": {"Type": "Number"}, "param_float": {"Type": "Number"}, "param_bool": {"Type": "Boolean"}, "param_json_list": {"Type": "Json"}, "param_has_default": {"Default": "{"c": []}", "Type": "Json"}, "UpdateVersion": {"Type": "Number"}, "param_str": {"Type": "String"}, "param_list": {"Type": "CommaDelimitedList"}, "param_json_dict": {"Type": "Json"}}, "Outputs": {"param_integer": {"Value": {"Ref": "param_integer"}}, "param_float": {"Value": {"Ref": "param_float"}}, "param_bool": {"Value": {"Ref": "param_bool"}}, "param_json_list": {"Value": {"Ref": "param_json_list"}}, "param_has_default": {"Value": {"Ref": "param_has_default"}}, "param_str": {"Value": {"Ref": "param_str"}}, "CurlCli": {"Value": {"Fn::GetAtt": ["WaitConditionHandle", "CurlCli"]}}, "param_list": {"Value": {"Ref": "param_list"}}, "param_json_dict": {"Value": {"Ref": "param_json_dict"}}}} B288A0BE-D927-4888-B0F7-B35EF84B6E6F JSON 格式 { "TemplateBody":"{"ROSTemplateFormatVersion": "2015-09-01", "Resources": {"dummy2": {"Type": "ALIYUN::DEBUG::Dummy", "Properties": {"Map": {"Ref": "param_has_default"}, "List": {"Ref": "param_list"}}}, "dummy": {"Type": "ALIYUN::DEBUG::Dummy", "Properties": {"Map": {"Ref": "param_json_dict"}, "String": {"Ref": "param_str"}, "List": {"Ref": "param_json_list"}, "Number": {"Ref": "param_float"}, "Bool": {"Ref": "param_bool"}, "Integer": {"Ref": "param_integer"}}}, "nested": {"Type": "ALIYUN::ROS::Stack", "Properties": {"TemplateURL": "oss://nested-stack/simple/nested_demo", "TimeoutMins": 16}}, "WaitConditionHandle": {"Type": "ALIYUN::ROS::WaitConditionHandle", "Properties": {"UpdateVersion": {"Ref": "UpdateVersion"}}}}, "Parameters": {"param_integer": {"Type": "Number"}, "param_float": {"Type": "Number"}, "param_bool": {"Type": "Boolean"}, "param_json_list": {"Type": "Json"}, "param_has_default": {"Default": "{\"c\": []}", "Type": "Json"}, "UpdateVersion": {"Type": "Number"}, "param_str": {"Type": "String"}, "param_list": {"Type": "CommaDelimitedList"}, "param_json_dict": {"Type": "Json"}}, "Outputs": {"param_integer": {"Value": {"Ref": "param_integer"}}, "param_float": {"Value": {"Ref": "param_float"}}, "param_bool": {"Value": {"Ref": "param_bool"}}, "param_json_list": {"Value": {"Ref": "param_json_list"}}, "param_has_default": {"Value": {"Ref": "param_has_default"}}, "param_str": {"Value": {"Ref": "param_str"}}, "CurlCli": {"Value": {"Fn::GetAtt": ["WaitConditionHandle", "CurlCli"]}}, "param_list": {"Value": {"Ref": "param_list"}}, "param_json_dict": {"Value": {"Ref": "param_json_dict"}}}}", "RequestId":"B288A0BE-D927-4888-B0F7-B35EF84B6E6F" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 HttpCode 错误码 错误信息 描述 404 ChangeSetNotFound The ChangeSet ({name}) of Stack ({stack}) could not be found. 更改集不存在。name为更改集名称或ID,stack为资源栈名称或ID。 404 ChangeSetNotFound The ChangeSet {ID} could not be found. 更改集不存在。ID为更改集ID。 404 StackNotFound The Stack ({name}) could not be found. 资源栈不存在。name为资源栈名称或ID。 404 TemplateNotFound The Tempalte ({ ID }) could not be found. 模板不存在。ID为模板ID。调用GetTemplateEstimateCost接口查询模板中创建资源的预估价格。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Parameters.N.ParameterKey String 是 InstanceId 参数的名称。如果未指定特定参数的名称和值,则ROS将使用模板中指定的默认值。N的最大值为200。 Parameters.N.ParameterValue String 是 i-m5e3tfdbinchnexh**** 参数值。N的最大值为200。 RegionId String 是 cn-beijing 资源栈所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 TemplateURL String 否 oss://ros-template/demo 模板文件的位置。模板文件最大为524288个字节。URL必须指向位于Web服务器(http、https)或阿里云OSS存储空间(例如oss://ros/template/demo、oss://ros/template/demo?RegionId=cn-hangzhou。OSS地域如未指定,默认与接口参数RegionId相同。)中的模板。您必须指定TemplateBody或TemplateURL参数,但不能同时指定。URL的最大长度为1024个字节。 TemplateBody String 否 {"ROSTemplateFormatVersion": "2015-09-01"} 模板主体的结构。长度为1~524288个字节。如果长度较大,则建议通过HTTP POST+Body Param的方式,将参数放在请求体中进行传递,避免URL过长而导致请求失败。您必须指定参数TemplateBody或TemplateURL,但不能同时指定。 ClientToken String 否 123e4567-e89b-12d3-a456-426655440000 保证请求的幂等性。此参数值由客户端生成,并且必须是全局唯一的。仅允许ASCII字符,最多可包含64个字符。更多详情,请参见如何保证幂等性。 返回数据 名称 类型 示例值 描述 Resources Map 请参见返回示例中的Resources字段 资源详情。 RequestId String B288A0BE-D927-4888-B0F7-B35EF84B6E6F 请求ID。 Resources各字段含义如下所示。 名称 类型 示例值 描述 Order 订单信息。 Currency String CNY 货币单位。 DiscountAmount Long 100. 折扣。 HandlingFeeAmount Long 0 手续费金额。 OptionalMixPromotions Array [] 可选的混合促销。 OptionalPromotions Array [] 可选促销。 OrderLines String 订单信息。 OriginalAmount Long 200 原价。 RiCycleAmount Long 0 抵扣金额。 RuleIds Array [1000000000] 活动规则列表。 TaxAmount Long 0 税额。 TradeAmount Long 100 最终价,为原价减去折扣。 Rules 活动规则。 Name String 买满1年,立享官网价格8.5折优惠 活动规则名称。 RuleDescId Long 1000000000 活动ID。 示例 请求示例 http(s)://ros.aliyuncs.com/?Action=GetTemplateEstimateCost &RegionId=cn-beijing &Parameters.1.ParameterKey=InstanceId &Parameters.1.ParameterValue=i-m5e3tfdbinchnexh**** &<公共请求参数> 正常返回示例 XML 格式 CNY 2.4 0 2.4 0 1000000000 0 0 买满1年,立享官网价格8.5折优惠 1000000000 true ALIYUN::VPC::EIP B288A0BE-D927-4888-B0F7-B35EF84B6E6F JSON 格式 { "Resources": { "NewEip": { "Result": { "Order": { "Currency": "CNY", "DiscountAmount": 2.4, "HandlingFeeAmount": 0, "OptionalMixPromotions": [], "OptionalPromotions": [], "OrderLines": null, "OriginalAmount": 2.4, "RiCycleAmount": 0, "RuleIds": [ 1000000000 ], "TaxAmount": 0, "TradeAmount": 0 }, "Rules": { "Rule": [ { "Name": "买满1年,立享官网价格8.5折优惠", "RuleDescId": 1000000000 } ] } }, "Success": true, "Type": "ALIYUN::VPC::EIP" } }, "RequestId": "B288A0BE-D927-4888-B0F7-B35EF84B6E6F" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 HttpCode 错误码 错误信息 描述 400 CircularDependency Circular Dependency Found: {reason}. 模板包含循环引用。reason为具体原因。 400 InvalidSchema {reason}. 模板格式不正确。reason为具体原因。 400 InvalidTemplateAttribute The Referenced Attribute ({resource} {name}) is incorrect. 模板包含不正确的资源属性(输出)引用。resource为资源名,name为属性名。 400 InvalidTemplatePropertyType The specified value type of ({resource} {section}) is incorrect. 模板资源定义中的字段类型不正确。resource为资源名,section为字段名。 400 InvalidTemplateReference The specified reference "{name}" (in {referencer}) is incorrect. 模板包含不正确的引用。name为引用名,referencer为引用者。 400 InvalidTemplateSection The template section is invalid: {section}. 模板包含无效的字段。section为字段名。 400 InvalidTemplateVersion The template version is invalid: {reason}. 模板版本不正确。reason为具体原因。 400 StackValidationFailed {reason}. 资源栈校验失败。reason为具体原因。 400 UnknownUserParameter The Parameter ({name}) was not defined in template. 传递的参数在模板中未定义。name为参数名。 400 UserParameterMissing The Parameter {name} was not provided. 参数在模板中已定义,但未传递值。name为参数名。 调用ListTemplates接口查询模板列表。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 ListTemplates 系统规定参数。取值:ListTemplates。 TemplateName String 否 MyTemplate 模板名称。可以包含数字、字母(大小写敏感)、连字符、下划线。必须以数字或字母开头,且长度不超过255个字符。 PageNumber Long 否 10 模板列表的页码,起始值:1。默认值:1。 PageSize Long 否 1 分页查询时设置的每页行数。取值范围:1~50。默认值:10。 返回数据 名称 类型 示例值 描述 RequestId String C3A8413B-1F16-4DED-AC3E-61A00718DE8A 请求ID。 PageSize Integer 10 分页查询时设置的每页行数。 PageNumber Integer 1 查询模板列表的页码,起始值:1。 TotalCount Integer 3 查询到的模板总数。 Templates Array 模板列表。 示例 请求示例 http(s)://[Endpoint]/?Action=ListTemplates &<公共请求参数> 正常返回示例 XML 格式 1 10 C3A8413B-1F16-4DED-AC3E-61A00718DE8A 2019-10-15T08:17:15.000000 test-description-update c8b8bd07-c488-4302-ac15-b88ef073**** test-template-name-update 2019-10-15T08:17:15.000000 2019-10-15T08:17:15.000000 test-description 4d4f5aa2-3260-4e47-863b-763fbb12**** test-list-templates-2 2019-10-15T08:17:15.000000 2019-10-15T08:17:14.000000 test-description 1e808bb6-c2d1-4196-98a3-3b2cb2a4**** test-list-templates-1 2019-10-15T08:17:14.000000 3 JSON 格式 { "PageNumber":1, "TotalCount":3, "PageSize":10, "RequestId":"C3A8413B-1F16-4DED-AC3E-61A00718DE8A", "Templates":[ { "TemplateName":"test-template-name-update", "Description":"test-description-update", "CreateTime":"2019-10-15T08:17:15.000000", "UpdateTime":"2019-10-15T08:17:15.000000", "TemplateId":"c8b8bd07-c488-4302-ac15-b88ef073****" }, { "TemplateName":"test-list-templates-2", "Description":"test-description", "CreateTime":"2019-10-15T08:17:15.000000", "UpdateTime":"2019-10-15T08:17:15.000000", "TemplateId":"4d4f5aa2-3260-4e47-863b-763fbb12****" }, { "TemplateName":"test-list-templates-1", "Description":"test-description", "CreateTime":"2019-10-15T08:17:14.000000", "UpdateTime":"2019-10-15T08:17:14.000000", "TemplateId":"1e808bb6-c2d1-4196-98a3-3b2cb2a4****" } ] } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。调用UpdateTemplate接口更新模板。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 UpdateTemplate 系统规定参数。取值:UpdateTemplate。 TemplateId String 是 5ecd1e10-b0e9-4389-a565-e4c15efc**** 模板ID。 TemplateURL String 否 oss://ros/template/demo 包含模板主体的文件的位置。URL必须指向位于http Web服务器(http、https),或指向与资源栈在同一地域的OSS存储空间(例如oss:// ros/template/demo)中的模板(最大大小为524288字节)。您必须指定TemplateBody或TemplateURL参数,但不能同时指定。 TemplateName String 否 MyTemplate 模板名称。可以包含数字、字母(大小写敏感)、连字符、下划线。必须以数字或字母开头,且长度不超过255个字符。 Description String 否 It is a demo. 模板描述。最大长度为256个字符。 TemplateBody String 否 {"ROSTemplateFormatVersion":"2015-09-01"} 模板主体的结构。长度为1~524288个字节。如果长度较大,则建议通过HTTP POST+Body Param的方式,将参数放在请求体中进行传递,避免URL过长而导致请求失败。您必须指定参数TemplateBody或TemplateURL,但不能同时指定。 返回数据 名称 类型 示例值 描述 RequestId String 8C5D90E1-66B6-496C-9371-3807F8DA80A8 请求ID。 TemplateId String 5ecd1e10-b0e9-4389-a565-e4c15efc**** 模板ID。 示例 请求示例 http(s)://[Endpoint]/?Action=UpdateTemplate &TemplateId=5ecd1e10-b0e9-4389-a565-e4c15efc**** &<公共请求参数> 正常返回示例 XML 格式 8C5D90E1-66B6-496C-9371-3807F8DA80A8 5ecd1e10-b0e9-4389-a565-e4c15efc**** JSON 格式 { "RequestId": "8C5D90E1-66B6-496C-9371-3807F8DA80A8", "TemplateId": "5ecd1e10-b0e9-4389-a565-e4c15efc****" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 HttpCode 错误码 错误信息 描述 404 TemplateNotFound The Tempalte ({ ID }) could not be found. 模板不存在。 400 InvalidSchema {reason}. 模板格式不正确。reason为具体原因。 400 InvalidTemplateAttribute The Referenced Attribute ({resource} {name}) is incorrect. 模板包含不正确的资源属性(输出)引用。resource为资源名,name为属性名。 400 InvalidTemplatePropertyType The specified value type of ({resource} {section}) is incorrect. 模板资源定义中的字段类型不正确。resource为资源名,section为字段名。 400 InvalidTemplateReference The specified reference "{name}" (in {referencer}) is incorrect. 模板包含不正确的引用。name为引用名,referencer为引用者。 400 InvalidTemplateSection The template section is invalid: {section}. 模板包含无效的字段。section为字段名。 400 InvalidTemplateVersion The template version is invalid: {reason}. 模板版本不正确。reason为具体原因。调用ValidateTemplate接口验证将要创建资源栈的模板。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试 请求参数 名称 类型 是否必选 示例值 描述 Action String 是 ValidateTemplate 系统规定参数。取值:ValidateTemplate。 TemplateURL String 否 oss://ros/template/demo 包含模板主体的文件的位置。 URL必须指向位于Web服务器(http,https),或阿里云OSS存储桶(例如oss://ros/template/demo、oss://ros/template/demo?RegionId=cn-hangzhou。oss地域如未指定,默认与接口参数RegionId相同。)中的模板(最大大小:524288字节)。 您必须指定TemplateBody或TemplateURL参数,但不能同时指定。 RegionId String 否 cn-hangzhou 资源栈模板所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 TemplateBody String 否 {"ROSTemplateFormatVersion":"2015-09-01"} 模板主体的结构。长度为1~524288个字节。如果长度较大,则建议通过HTTP POST+Body Param的方式,将参数放在请求体中进行传递,避免URL过长而导致请求失败。您必须指定参数TemplateBody或TemplateURL,但不能同时指定。 返回数据 名称 类型 示例值 描述 Description String No description 描述此资源栈模板的相关信息。 Parameters List [{"Description": "", "Label": "param_integer", "NoEcho": "false", "ParameterKey": "param_integer", "Type": "Number"},{ "Description": "", "Label": "param_float", "NoEcho": "false", "ParameterKey": "param_float", "Type": "Number"}] 输入参数。输入参数中,定义了通过此模板创建资源栈时需要指定的参数,这些参数用来订制每次资源栈创建的细节,例如:用户名、密码,环境相关的ECS规格等。 RequestId String B288A0BE-D927-4888-B0F7-B35EF84B6E6 请求ID。 示例 请求示例 http(s)://ros.aliyuncs.com/?Action=ValidateTemplate &<公共请求参数> 正常返回示例 XML 格式 No description param_integer false param_integer Number param_float false param_float Number param_bool false param_bool Boolean param_json_list false param_json_list Json param_has_default false param_has_default Json UpdateVersion false UpdateVersion Number param_str false param_str String param_list false param_list CommaDelimitedList param_json_dict false param_json_dict Json B288A0BE-D927-4888-B0F7-B35EF84B6E6F JSON 格式 { "Description": "No description", "Parameters": [ { "Description": "", "Label": "param_integer", "NoEcho": "false", "ParameterKey": "param_integer", "Type": "Number" }, { "Description": "", "Label": "param_float", "NoEcho": "false", "ParameterKey": "param_float", "Type": "Number" }, { "Description": "", "Label": "param_bool", "NoEcho": "false", "ParameterKey": "param_bool", "Type": "Boolean" }, { "Description": "", "Label": "param_json_list", "NoEcho": "false", "ParameterKey": "param_json_list", "Type": "Json" }, { "Default": { "c": [] }, "Description": "", "Label": "param_has_default", "NoEcho": "false", "ParameterKey": "param_has_default", "Type": "Json" }, { "Description": "", "Label": "UpdateVersion", "NoEcho": "false", "ParameterKey": "UpdateVersion", "Type": "Number" }, { "Description": "", "Label": "param_str", "NoEcho": "false", "ParameterKey": "param_str", "Type": "String" }, { "Description": "", "Label": "param_list", "NoEcho": "false", "ParameterKey": "param_list", "Type": "CommaDelimitedList" }, { "Description": "", "Label": "param_json_dict", "NoEcho": "false", "ParameterKey": "param_json_dict", "Type": "Json" } ], "RequestId": "B288A0BE-D927-4888-B0F7-B35EF84B6E6F" } 错误码 访问错误中心查看更多错误码。 访问公共错误码查看更多错误码。 错误代码 错误信息 Http状态码 描述 InvalidTemplate {reason}. 400 模板不正确,reason为具体原因。

1934890530796658 2020-03-25 10:04:36 0 浏览量 回答数 0

问题

荆门开诊断证明-scc

游客5k2abgdj3m2ti 2019-12-01 22:09:00 1 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播