• 关于

    func和action

    的搜索结果

回答

简介 本文档主要介绍运维编排 Go SDK 的安装和使用,适用于 1.0 版本。请确保您已经开通了阿里云运维编排服务,并创建了 AccessKeyId 和 AccessKeySecret。 如果您还没有开通或者还不了解阿里云运维编排服务,请登录运维编排的产品主页进行了解。 如果您还没有创建 AccessKeyId 和 AccessKeySecret,请到阿里云 Access Key 的管理控制台创建 Access Key。 源码地址 请访问 GitHub 获取源码。 本文介绍如何按照 Golang SDK。 环境准备 适用于 Golang 1.10 及以上版本。 安装 OOS GO SDK 集成在阿里云 Go SDK中。 执行以下命令,安装阿里云Go SDK: go get -u github.com/aliyun/alibaba-cloud-sdk-go/sdk 快速入门 本节介绍如何快速使用OOS Go SDK完成常见操作,如创建模板、启动执行、查询执行等。 创建模板 以下代码用于创建模板: package main import ( "fmt" "github.com/aliyun/alibaba-cloud-sdk-go/services/oos" ) var client, err = oos.NewClientWithAccessKey("cn-hangzhou", " ", " ") var content = { "FormatVersion": "OOS-2019-06-01", "Description": "Descirbe instances of given status", "Parameters": { "Status": { "Type": "String", "Description": "(Required) The status of the Ecs instance." } }, "Tasks": [ { "Properties": { "Parameters": { "Status": "{{ Status }}" }, "API": "DescribeInstances", "Service": "ECS" }, "Name": "describeInstances", "Action": "ACS::ExecuteAPI" } ] } func CreateTemplate(name string, content string) (response *oos.CreateTemplateResponse, err error) { request := oos.CreateCreateTemplateRequest() request.TemplateName = name request.Content = content response, err = client.CreateTemplate(request) return } func main() { response, err := CreateTemplate("MyTemplate", content) fmt.Println(response) fmt.Println(err) } 启动执行 以下代码用于启动执行: package main import ( "fmt" "github.com/aliyun/alibaba-cloud-sdk-go/services/oos" ) var client, err = oos.NewClientWithAccessKey("cn-hangzhou", " ", " ") func StartExecution(templateName string, parameters string) (response *oos.StartExecutionResponse, err error) { request := oos.CreateStartExecutionRequest() request.TemplateName = templateName request.Parameters = parameters response, err = client.StartExecution(request) return } func main() { response, err := StartExecution("MyTemplate", "{"Status": "Running"}") fmt.Println(response) fmt.Println(err) } 查询执行 以下代码用于查询执行: package main import ( "fmt" "github.com/aliyun/alibaba-cloud-sdk-go/services/oos" ) var client, err = oos.NewClientWithAccessKey("cn-hangzhou", " ", " ") func ListExecutions(executionId string) (response *oos.ListExecutionsResponse, err error) { request := oos.CreateListExecutionsRequest() request.ExecutionId = executionId response, err = client.ListExecutions(request) return } func main() { response, err := ListExecutions(" ") fmt.Println(response) fmt.Println(err) }

1934890530796658 2020-03-24 11:57:46 0 浏览量 回答数 0

回答

和验证码差不多一个意思吧。。客户端有可能修改过这个值。可以增加别人用curl进行模拟登陆的难度1.首先先申明一个函数 /** * _check_uniqid * @param unknown_type $_first_uniqid * @param unknown_type $_end_uniqid */ function _check_uniqid($_first_uniqid,$_end_uniqid) { if ((strlen($_first_uniqid) != 40) || ($_first_uniqid != $_end_uniqid)) { _alert_back('唯一标识符异常'); } return _mysql_string($_first_uniqid); }2.在代码中调用该函数//判断是否提交了 if ($_GET['action'] == 'register') { //为了防止恶意注册,跨站攻击 _check_code($_POST['code'],$_SESSION['code']); //引入验证文件 include ROOT_PATH.'includes/register.func.php'; //创建一个空数组,用来存放提交过来的合法数据 $_clean = array(); //可以通过唯一标识符来防止恶意注册,伪装表单跨站攻击等。 //这个存放入数据库的唯一标识符还有第二个用处,就是登录cookies验证 $_clean['uniqid'] = _check_uniqid($_POST['uniqid'],$_SESSION['uniqid']); //active也是一个唯一标识符,用来刚注册的用户进行激活处理,方可登录。 $_clean['active'] = _sha1_uniqid(); print_r($_clean); } else { $_SESSION['uniqid'] = $_uniqid = _sha1_uniqid(); } 3.在global.func.php调用function _sha1_uniqid() { return _mysql_string(sha1(uniqid(rand(),true))); }

小旋风柴进 2019-12-02 02:00:17 0 浏览量 回答数 0

问题

RDS偶发无法连接,错误提示为:等待的操作超时

冀州友联 2019-12-01 20:28:21 2048 浏览量 回答数 1

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

问题

计时器不会在快速计时器上停止

游客5akardh5cojhg 2019-12-25 16:28:50 0 浏览量 回答数 1

回答

对于每一个请求,函数计算服务会根据请求头部的 Authorization 字段来校验是否合法(设置了 HTTP 触发器的允许匿名访问的函数除外)。客户端须使用与函数计算服务端一致的签名算法才能通过验证,对于未包含签名字段或者签名错误的请求,函数计算服务将会返回 HTTP 403 错误。 本文对函数计算的签名校验算法进行介绍。 签名算法 signature = base64(hmac-sha256(HTTP_METHOD + "\n" + CONTENT-MD5 + "\n" + CONTENT-TYPE + "\n" + DATE + "\n" + CanonicalizedFCHeaders + CanonicalizedResource)) // Authorization字段介绍 Authorization = "FC " + accessKeyID + ":" + signature HTTP_METHOD 表示大写的 HTTP Method (如:PUT, GET, POST, DELETE) CONTENT-MD5 表示请求内容数据的 MD5 值。如果请求的 Header 中没有传 Content-MD5,则此处填入空串 CONTENT-TYPE 表示请求内容的类型 DATE 表示此次操作的时间,不能为空,目前只支持 GMT 格式 注意:客户端需要保证生成的时间与函数计算服务端的时间相差不超过15分钟,否则函数服务将拒绝此请求 CanonicalizedFCHeaders 表示所有以 x-fc- 为前缀的 HTTP 头组成的字符串,生成方式见下文 CanonicalizedResource 表示请求的 URL 的 Path ,一般来说是先对收到的 Path decode,再去掉请求的 Path 里的 Params 内容。 Path 的结构为:$api-version/api-path api-version:API 版本,当前版本为 2016-08-15。 api-path:访问各个接口的路径,例如创建 service 为 /services,其他 path 请参考 API 定义。 需要认证的 HTTP 触发器的CanonicalizedResource 与其他请求的CanonicalizedResource 不同,下面对两种情况分别进行介绍。 普通请求的 CanonicalizedResource (普通请求为除了需要访问带认证的 HTTP 触发器的请求外的所有请求): 首先对收到的 Path 进行 url 解码,普通请求的 CanonicalizedResource 会只取到?前面的内容,即舍弃传入的各个Params 需要认证的 HTTP 触发器的CanonicalizedResource :如果有 Params ,则以回车符 \n 分隔各个参数,Params 中的各个参数 key - value 对按照字母序进行排序(如果 Params 里的 key 对应多个 value ,即对 key - value 整体进行排序)。如果没有 Params,最后也以 \n 结束。例如 // 需要认证的 HTTP 触发器的 url 的真实 path /2016-08-15/proxy/service-name/func-name/path-with-%20-space/action?x=1&a=2&x=3&with%20space=foo%20bar // url decode 后的结果 /2016-08-15/proxy/service-name/func-name/path-with- -space/action?x=1&a=2&x=3&with space=foo bar // 需要认证的 HTTP 触发器的 CanonicalizedResource /2016-08-15/proxy/service-name/func-name/path-with- -space/action\na=2\nwith space=foo bar\nx=1\nx=3 // 普通请求的 url 的真实 path /2016-08-15/service-name/func-name/path-with-%20-space/action?x=1&a=2&x=3&with%20space=foo%20bar // url decode 后的结果 /2016-08-15/service-name/func-name/path-with- -space/action?x=1&a=2&x=3&with space=foo bar // 普通请求的 CanonicalizedResource /2016-08-15/service-name/func-name/path-with- -space/action hmac-sha256需要以用户的 AccessKeySecret 为 Key 伪代码如下: // 构造字符串的过程 function composeStringToSign(method, path, headers, queries) { var contentMD5 = headers['content-md5'] || ''; var contentType = headers['content-type'] || ''; var date = headers['date']; var signHeaders = buildCanonicalHeaders(headers, 'x-fc-'); var u = url.parse(path); var pathUnescaped = decodeURIComponent(u.pathname); var str = ${method}\n${contentMD5}\n${contentType}\n${date}\n${signHeaders}${pathUnescaped}; if (queries) { var params = []; Object.keys(queries).forEach(function (key) { var values = queries[key]; var type = typeof values; if (type === 'string') { params.push(${key}=${values}); return; } if (type === 'object' && values instanceof Array) { queries[key].forEach(function (value) { params.push(${key}=${value}); }); } }); params.sort(); str += '\n' + params.join('\n'); } return str; } // 使用 hmac-sha256 和 base64 计算签名的过程,其中 source 参数为构造出的字符串 function signString(source, secret) { const buff = crypto.createHmac('sha256', secret) .update(source, 'utf8') .digest(); return new Buffer(buff, 'binary').toString('base64'); } CanonicalizedFCHeaders 生成步骤如下: 找出请求头中所有以 x-fc- 开头的字段(不区分大小写) 对于符合前缀的字段,先将字段名转换成小写 对于每一个字段,生成一个子串 ${key}:${value}\n , ${key} 是 HTTP 头的名称(转换成小写) ${value} 是 HTTP 头的值 例如:X-Fc-Invocation-Type:Sync 变成 x-fc-invocation-type:Sync\n 然后将这些字段按字段名从小到大排序 将上述生成的子串连接成一个整串 伪代码如下: // javascript // prefix = 'x-fc-' function buildCanonicalHeaders(headers, prefix) { var list = []; var keys = Object.keys(headers); var fcHeaders = {}; for (var i = 0; i < keys.length; i++) { var key = keys[i]; var lowerKey = key.toLowerCase().trim(); if (lowerKey.startsWith(prefix)) { list.push(lowerKey); fcHeaders[lowerKey] = headers[key]; } } list.sort(); var canonical = ''; for (var _i = 0; _i < list.length; _i++) { var _key = list[_i]; canonical += ${_key}:${fcHeaders[_key]}\n; } return canonical; } Authorization 字段 Authorization 可由上文计算得出的 signature 构造出来,构造方法如下: Authorization = "FC " + accessKeyID + ":" + signature 请求示例 请求: GET /2016-08-15/services?limit=100&nextToken=&prefix=&startKey= HTTP/1.1 Host: 1237050315505682.fc.cn-shanghai.aliyuncs.com User-Agent: go-sdk-0.1 Accept: application/json Authorization: FC LTAIUyt0Yeq1rgqo:GBmoz6OwC7bobTlD1jboBZ9PkaZ1e4cKsQ+5/dlLTns= Date: Mon, 08 May 2017 03:08:31 GMT X-User-Agent: go-resty v0.11 - https://github.com/go-resty/resty Accept-Encoding: gzip 响应: HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 X-Fc-Request-Id: ab7c7602-0922-f04f-b4ee-923cd7df7fb0 Date: Mon, 08 May 2017 03:08:31 GMT Transfer-Encoding: chunked 代码示例 可以参考我们已经发布的SDK中签名部分的代码: fc-nodejs-sdk

1934890530796658 2020-03-27 17:55:35 0 浏览量 回答数 0

问题

Golang 调用 AliDNS API,得到`SignatureDoesNotMatch`错误

laowang554 2019-12-01 19:34:58 1085 浏览量 回答数 5

问题

单击导航栏自定义按钮失败

游客5akardh5cojhg 2019-12-25 16:13:13 0 浏览量 回答数 1

问题

MaxCompute用户指南:安全指南:用户及授权管理:授权

行者武松 2019-12-01 22:05:45 1372 浏览量 回答数 0

问题

MaxCompute准备工作:用户授权及权限查看

行者武松 2019-12-01 22:01:31 1400 浏览量 回答数 0

问题

Media-C-SDK之如何实现使用场景?

青衫无名 2019-12-01 21:48:47 1114 浏览量 回答数 0

回答

官方文档上列举共有32种常见算子,包括Transformation的20种操作和Action的12种操作。 Transformation: 1.map map的输入变换函数应用于RDD中所有元素,而mapPartitions应用于所有分区。区别于mapPartitions主要在于调用粒度不同。如parallelize(1 to 10, 3),map函数执行10次,而mapPartitions函数执行3次。 ​ 2.filter(function) 过滤操作,满足filter内function函数为true的RDD内所有元素组成一个新的数据集。如:filter(a == 1)。 3.flatMap(function) map是对RDD中元素逐一进行函数操作映射为另外一个RDD,而flatMap操作是将函数应用于RDD之中的每一个元素,将返回的迭代器的所有内容构成新的RDD。而flatMap操作是将函数应用于RDD中每一个元素,将返回的迭代器的所有内容构成RDD。 flatMap与map区别在于map为“映射”,而flatMap“先映射,后扁平化”,map对每一次(func)都产生一个元素,返回一个对象,而flatMap多一步就是将所有对象合并为一个对象。 4.mapPartitions(function) 区于foreachPartition(属于Action,且无返回值),而mapPartitions可获取返回值。与map的区别前面已经提到过了,但由于单独运行于RDD的每个分区上(block),所以在一个类型为T的RDD上运行时,(function)必须是Iterator => Iterator 类型的方法(入参)。 5.mapPartitionsWithIndex(function) 与mapPartitions类似,但需要提供一个表示分区索引值的整型值作为参数,因此function必须是(int, Iterator )=>Iterator 类型的。 ​ 6.sample(withReplacement, fraction, seed) 采样操作,用于从样本中取出部分数据。withReplacement是否放回,fraction采样比例,seed用于指定的随机数生成器的种子。(是否放回抽样分true和false,fraction取样比例为(0, 1]。seed种子为整型实数。) ​ 7.union(otherDataSet) 对于源数据集和其他数据集求并集,不去重。 ​ 8.intersection(otherDataSet) 对于源数据集和其他数据集求交集,并去重,且无序返回。 ​ 9.distinct([numTasks]) 返回一个在源数据集去重之后的新数据集,即去重,并局部无序而整体有序返回。 ​ ​ 10.groupByKey([numTasks]) 在一个PairRDD或(k,v)RDD上调用,返回一个(k,Iterable )。主要作用是将相同的所有的键值对分组到一个集合序列当中,其顺序是不确定的。groupByKey是把所有的键值对集合都加载到内存中存储计算,若一个键对应值太多,则易导致内存溢出。 在此,用之前求并集的union方法,将pair1,pair2变为有相同键值的pair3,而后进行groupByKey ​ 11.reduceByKey(function,[numTasks]) 与groupByKey类似,却有不同。如(a,1), (a,2), (b,1), (b,2)。groupByKey产生中间结果为( (a,1), (a,2) ), ( (b,1), (b,2) )。而reduceByKey为(a,3), (b,3)。 reduceByKey主要作用是聚合,groupByKey主要作用是分组。(function对于key值来进行聚合) ​ 12.aggregateByKey(zeroValue)(seqOp, combOp, [numTasks]) 类似reduceByKey,对pairRDD中想用的key值进行聚合操作,使用初始值(seqOp中使用,而combOpenCL中未使用)对应返回值为pairRDD,而区于aggregate(返回值为非RDD) ​ 13.sortByKey([ascending], [numTasks]) 同样是基于pairRDD的,根据key值来进行排序。ascending升序,默认为true,即升序;numTasks 14.join(otherDataSet,[numTasks]) 加入一个RDD,在一个(k,v)和(k,w)类型的dataSet上调用,返回一个(k,(v,w))的pair dataSet。 ​ 15.cogroup(otherDataSet,[numTasks]) 合并两个RDD,生成一个新的RDD。实例中包含两个Iterable值,第一个表示RDD1中相同值,第二个表示RDD2中相同值(key值),这个操作需要通过partitioner进行重新分区,因此需要执行一次shuffle操作。(若两个RDD在此之前进行过shuffle,则不需要) ​ 16.cartesian(otherDataSet) 求笛卡尔乘积。该操作不会执行shuffle操作。 ​ 17.pipe(command,[envVars]) 通过一个shell命令来对RDD各分区进行“管道化”。通过pipe变换将一些shell命令用于Spark中生成的新RDD,如: ​ 18.coalesce(numPartitions) 重新分区,减少RDD中分区的数量到numPartitions。 ​ 19.repartition(numPartitions) repartition是coalesce接口中shuffle为true的简易实现,即Reshuffle RDD并随机分区,使各分区数据量尽可能平衡。若分区之后分区数远大于原分区数,则需要shuffle。 ​ 20.repartitionAndSortWithinPartitions(partitioner) 该方法根据partitioner对RDD进行分区,并且在每个结果分区中按key进行排序。 Action: 1.reduce(function) reduce将RDD中元素两两传递给输入函数,同时产生一个新值,新值与RDD中下一个元素再被传递给输入函数,直到最后只有一个值为止。 ​ 2.collect() 将一个RDD以一个Array数组形式返回其中的所有元素。 ​ 3.count() 返回数据集中元素个数,默认Long类型。 ​ 4.first() 返回数据集的第一个元素(类似于take(1)) ​ 5.takeSample(withReplacement, num, [seed]) 对于一个数据集进行随机抽样,返回一个包含num个随机抽样元素的数组,withReplacement表示是否有放回抽样,参数seed指定生成随机数的种子。 该方法仅在预期结果数组很小的情况下使用,因为所有数据都被加载到driver端的内存中。 ​ 6.take(n) 返回一个包含数据集前n个元素的数组(从0下标到n-1下标的元素),不排序。 ​ 7.takeOrdered(n,[ordering]) 返回RDD中前n个元素,并按默认顺序排序(升序)或者按自定义比较器顺序排序。 ​ 8.saveAsTextFile(path) 将dataSet中元素以文本文件的形式写入本地文件系统或者HDFS等。Spark将对每个元素调用toString方法,将数据元素转换为文本文件中的一行记录。 若将文件保存到本地文件系统,那么只会保存在executor所在机器的本地目录。 ​ 9.saveAsSequenceFile(path)(Java and Scala) 将dataSet中元素以Hadoop SequenceFile的形式写入本地文件系统或者HDFS等。(对pairRDD操作) ​ 10.saveAsObjectFile(path)(Java and Scala) 将数据集中元素以ObjectFile形式写入本地文件系统或者HDFS等。 ​ ​ 11.countByKey() 用于统计RDD[K,V]中每个K的数量,返回具有每个key的计数的(k,int)pairs的hashMap。 ​ 12.foreach(function) 对数据集中每一个元素运行函数function。

bigbigtree 2020-03-19 19:21:30 0 浏览量 回答数 0

问题

centos6.8服务器突然崩溃,并且无法输入指令,求大神帮忙。

mcxzadmin 2019-12-01 19:56:58 2812 浏览量 回答数 2

问题

求助一个php正则表达式的问题

小旋风柴进 2019-12-01 20:12:29 1703 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板