开发者社区> 问答> 正文

如何使用函数计算 SDK 执行 HTTP 触发器函数?

如何使用函数计算 SDK 执行 HTTP 触发器函数?

展开
收起
小天使爱美 2020-03-27 17:50:33 1736 0
1 条回答
写回答
取消 提交回答
  • 对于每一个请求,函数计算服务会根据请求头部的 Authorization 字段来校验是否合法(设置了 HTTP 触发器的允许匿名访问的函数除外)。客户端须使用与函数计算服务端一致的签名算法才能通过验证,对于未包含签名字段或者签名错误的请求,函数计算服务将会返回 HTTP 403 错误。详细签名规则可以参考 签名认证。函数计算提供的 SDK 中有签名方法,可以使用 SDK 提供的接口执行 HTTP 触发器(需要身份认证)函数,下面进行详细介绍具体调用。

    Java 1. 安装依赖

    将 Maven 依赖项添加到 pom.xml 中

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-fc</artifactId>
        <version>1.7.1</version>
    </dependency>
    
    1. 代码示例

    import com.alibaba.fastjson.JSONObject; import com.aliyuncs.fc.client.FunctionComputeClient; import com.aliyuncs.fc.model.HttpAuthType; import com.aliyuncs.fc.model.HttpMethod; import com.aliyuncs.fc.request.; import com.aliyuncs.fc.response.; import java.io.IOException; import java.security.InvalidKeyException; public class testJavaSDK { private static final String REGION = "cn-hangzhou"; private static final String SERVICE_NAME = "XXX"; private static final String FUNCTION_NAME = "XXX"; public static void main(final String[] args) throws IOException, InvalidKeyException, IllegalStateException { String accountId = "XXX"; String accessKey = "XXX"; String accessSecretKey = "XXX"; FunctionComputeClient fcClient = new FunctionComputeClient(REGION, accountId, accessKey, accessSecretKey); HttpInvokeFunctionRequest request = new HttpInvokeFunctionRequest(SERVICE_NAME,FUNCTION_NAME, HttpAuthType.FUNCTION, HttpMethod.POST, null); JSONObject object = new JSONObject(); object.put("string","string"); object.put("int","123"); String payload = object.toJSONString(); request.setPayload(payload.getBytes()); request.setHeader("Content-Type", "application/json"); InvokeFunctionResponse invkResp = fcClient.invokeFunction(request); System.out.println(new String(invkResp.getContent())); } } 接口详细入参可以查看 SDK 源码。

    Python 1. 安装依赖

    pip install aliyun-fc2 2. 代码示例

    -- coding: utf-8 --

    import fc2 client = fc2.Client( endpoint=' ', accessKeyID=' ', accessKeySecret=' ') req = client.do_http_request( "method", "serviceName", "functionName", "path", headers={}, params=None, body=bytes('hello_world'.encode('utf-8'))) print (req.status_code) 接口详细入参可以查看 SDK 源码。

    PHP 1. 安装依赖

    可以通过 Composer 命令安装依赖: $ composer require aliyunfc/fc-php-sdk 您还可以在 composer.json 文件中声明对 Alibaba Cloud FC SDK for PHP 的依赖关系。 "require": { "aliyunfc/fc-php-sdk": "~1.2" } 然后运行 composer install——no dev 来安装依赖项。安装 Composer 依赖关系管理器后,在 PHP 代码中导入依赖关系:

    require_once DIR . '/vendor/autoload.php'; 2. 代码示例

    ' ', "accessKeyID" =>' ', "accessKeySecret" =>' ' ]); $res = $fcClient->doHttpRequest("method", "serviceName", "functionName", "path", $headers = [], $unescapedQueries = [], $data = null); $s = $res->getStatusCode(); $data = $res->getBody()->getContents(); var_dump($s); var_dump($data); 接口详细入参可以查看 SDK 源码。 Node.js 1. 安装依赖 npm install @alicloud/fc2 --save 2. 代码示例 'use strict'; var FCClient = require('@alicloud/fc2'); var client = new FCClient(' ', { accessKeyID: ' ', accessKeySecret: ' ', region: 'cn-shanghai', }); async function test () { try { var resp = await client.get('/proxy/${serviceName}/${functionName}/${path}',null,headers ) console.log('invoke function: %j', resp); } catch (err) { console.error(err); } } test().then(); 上述是 GET 请求调用示例,其他请求方式接口详情可以查看 SDK 源码。 .Net Core 1. 安装依赖 在 .csproj 文件中添加如下 package: 2. 代码示例 using System; using System.Collections.Generic; using Aliyun.FunctionCompute.SDK.Client; using Aliyun.FunctionCompute.SDK.Request; namespace mynetcore { class Program { static void Main(string[] args) { var fcClient = new FCClient("region", " ", " ", " "); var customHeaders = new Dictionary { }; Dictionary unescapedQueries = new Dictionary { }; var resposnse = fcClient.InvokeHttpFunction(new HttpInvokeFunctionRequest(string serviceName, string functionName, string method, string path = null, string qualifier = null, byte[] payload = null, unescapedQueries , Dictionary customHeaders = null)); Console.WriteLine(resposnse.StatusCode); } } } 接口详细入参可以查看 SDK 源码。
    2020-03-27 17:58:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
跨平台的云服务SDK需要什么 立即下载
CDN助力企业网站进入HTTPS时代 立即下载
一个跨平台的云服务SDK需要什么 立即下载