赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 函数计算 FC 2.0
  4. 开发参考
  5. SDK参考
  6. SDK参考(2016-08-15不推荐)
  7. 使用SDK执行HTTP触发器函数

使用SDK执行HTTP触发器函数

  • SDK参考(2016-08-15不推荐)
  • 发布于 2025-04-16
  • 0 次阅读
文档编辑
文档编辑

本文介绍如何使用不同语言SDK提供的接口执行HTTP触发器(需要身份认证)函数。

背景信息

函数计算服务会根据请求头部的Authorization字段来校验每一个请求是否合法。
说明 设置了HTTP触发器的允许匿名访问的函数不可以校验。

您必须使用与函数计算服务端一致的签名算法才能通过验证。未包含签名字段或者签名错误的请求,函数计算将会返回HTTP 403错误。具体信息,请参见签名认证。

函数计算提供的SDK中已经提供了接口执行HTTP触发器函数,无需您手动计算。具体信息,请参见SDK列表。

Java

  1. 执行以下代码,将Maven依赖项添加到pom.xml中。
        <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>aliyun-java-sdk-fc</artifactId>
          <version>1.8.32</version>
        </dependency>
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>2.0.20</version>
        </dependency>
  2. 代码示例。更多接口信息,请参见SDK源码。
    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 = "<Your serviceName>";
        private static final String FUNCTION_NAME = "<Your functionName>";
        /*
        阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        本示例以将AccessKey和AccessSecretKey保存在环境变量中实现身份验证为例。
        运行本示例前请先在本地环境中设置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        在FC Runtime运行环境下,配置执行权限后,ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量会自动被设置。
        */
        public static void main(final String[] args) throws IOException, InvalidKeyException, IllegalStateException {
            String accountId = "XXX";
            String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
            String accessSecretKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
            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()));
        }
    }

Python

  1. 执行以下代码安装依赖。
    pip install aliyun-fc2
  2. 代码示例。更多接口信息,请参见SDK源码。
    # -*- coding: utf-8 -*-
    import fc2
    import os
    
    # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    # 建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    # 本示例以将AccessKeyID和AccessKeySecret保存在环境变量中实现身份验证为例。
    # 运行本示例前请先在本地环境中设置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    # 在FC Runtime运行环境下,配置执行权限后,ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量会自动被设置。
    accessKeyID=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID')
    accessKeySecret=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
    
    endpoint='<Your Endpoint>'
    
    client = fc2.Client(
        endpoint=endpoint,
        accessKeyID=accessKeyID,
        accessKeySecret=accessKeySecret)
    req = client.do_http_request( "method", "serviceName", "functionName",
             "path", headers={}, params=None, body=bytes('hello_world'.encode('utf-8')))
    print (req.status_code)

    关于Endpoint的设置,请参见服务接入地址。

PHP

  1. 您可以通过以下两种方式安装依赖。
    • 执行Composer命令安装依赖。
      composer require aliyunfc/fc-php-sdk
    • 在composer.json文件中声明对Alibaba Cloud FC SDK for PHP的依赖关系。
      "require":{
          "aliyunfc/fc-php-sdk": "~1.2"
      }
  2. 运行composer install安装依赖项。安装Composer依赖关系管理器后,在PHP代码中导入依赖关系。
    require_once __DIR__ . '/vendor/autoload.php';
  3. 代码示例。更多接口信息,请参见SDK源码。
    <?php
    require_once __DIR__ . '/vendor/autoload.php';
    use AliyunFC\Client;
    
    # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    # 建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    # 本示例以将AccessKeyID和AccessKeySecret保存在环境变量中实现身份验证为例。
    # 运行本示例前请先在本地环境中设置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    # 在FC Runtime运行环境下,配置执行权限后,ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量会自动被设置。
    
    $fcClient = new Client([
      "endpoint" => '<Your Endpoint>',
      "accessKeyID" => getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
      "accessKeySecret" => getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
    ]);
    $res = $fcClient->doHttpRequest("method", "serviceName", "functionName", "path", $headers = [], $unescapedQueries = [], $data = null);
    $s = $res->getStatusCode();
    $data = $res->getBody()->getContents();
    var_dump($s);
    var_dump($data);

    关于Endpoint的设置,请参见服务接入地址。

Node.js

  1. 执行以下代码安装依赖。
    npm install @alicloud/fc2 --save
  2. 代码示例。GET请求调用示例如下,更多接口信息,请参见SDK源码。
    'use strict';
    var FCClient = require('@alicloud/fc2');
    /*
    阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    本示例以将AccessKey和AccessSecretKey保存在环境变量中实现身份验证为例。
    运行本示例前请先在本地环境中设置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    在FC Runtime运行环境下,配置执行权限后,ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量会自动被设置。
    */
    var client = new FCClient('<Your AccountID>', {
      accessKeyID: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
      region: '<Your Region>',
    });
    async function test () {
      try {
          var headers ={}
          var resp = await client.get('/proxy/${serviceName}/${functionName}/${path}',null,headers )
          console.log('invoke function: %j', resp);
      } catch (err) {
          console.error(err);
        }
    }
    test().then();

.NET Core

  1. 执行以下代码,在.csproj文件中添加如下package安装依赖。
    <ItemGroup>
        <PackageReference Include="Aliyun.FC.SDK.NetCore" Version="1.0.0" />
    </ItemGroup>
  2. 代码示例。更多接口信息,请参见SDK源码。
    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)
            {
                /*
                阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
                建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
                本示例以将AccessKey和AccessSecretKey保存在环境变量中实现身份验证为例。
                运行本示例前请先在本地环境中设置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                在FC Runtime运行环境下,配置执行权限后,ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量会自动被设置。
                */
                var accessKeyID = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
                var accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    
                var fcClient = new FCClient("<Your Region>", "<Your AccountID>", accessKeyID, accessKeySecret);
                var customHeaders = new Dictionary<string, string> {
    
                };
                Dictionary<string, string[]> unescapedQueries = new Dictionary<string, string[]> {
    
                };
                byte[] payload = new byte[]{
    
                };
    
               var resposnse = fcClient.InvokeHttpFunction(new HttpInvokeFunctionRequest("serviceName", "functionName", "method", "path", "qualifier", payload, unescapedQueries ,customHeaders));
                Console.WriteLine(resposnse.StatusCode);
            }
        }
    }

Go

  1. 执行以下代码安装依赖。
    go get -u github.com/aliyun/fc-go-sdk
  2. 代码示例。更多接口信息,请参见SDK源码。
    import (
        "io"
        "net/http"
        "os"
        "time"
        fc "github.com/aliyun/fc-go-sdk"
    )
    
    func doPost(serviceName, functionName, qualifier, path string,
        headers http.Header, queries map[string][]string, bodyReader io.Reader) (*http.Response, error) {
    
        /*
            阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
            建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
            本示例以将AccessKey和AccessSecretKey保存在环境变量中实现身份验证为例。
            运行本示例前请先在本地环境中设置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
            在FC Runtime运行环境下,配置执行权限后,ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET环境变量会自动被设置。
       */
        accessKeyID := os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
        accessKeySecret := os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
    
        fcClient, _ := fc.NewClient("<Your AccountID>", "2016-08-15", accessKeyID, accessKeySecret)
        method := http.MethodPost
        expires := time.Now().Add(5 * time.Minute)
        input := fc.NewSignURLInput(method, serviceName, functionName, expires)
        input.WithQualifier(qualifier).WithHeader(headers).WithQueries(queries).WithEscapedPath(path)
        url, err := fcClient.SignURL(input)
        if err != nil {
            return nil, err
        }
        req, err := http.NewRequest(method, url, bodyReader)
        for k, values := range headers {
            for _, v := range values {
                req.Header.Add(k, v)
            }
        }
        c := &http.Client{}
        return c.Do(req)
    }
相关文章

SDK列表 2025-04-16 14:21

本文介绍函数计算支持的SDK。

使用SDK执行HTTP触发器函数 2025-04-16 14:21

本文介绍如何使用不同语言SDK提供的接口执行HTTP触发器(需要身份认证)函数。 背景信息 函数计

版本说明 2025-04-16 14:21

本文介绍函数计算Go SDK的版本信息。 2022年

安装Go SDK 2025-04-16 14:21

本文介绍如何安装函数计算Go SDK。 环境准备 安装Golang。更多信息,请参见安装Golang</

快速入门 2025-04-16 14:21

本文介绍如何通过Go SDK快速调用API获取服务、创建函数和调用函数等。 前提条件 您已完成以下操作:

设置实例类型 2025-04-16 14:21

本文介绍如何使用Go SDK中的示例代码设置实例类型。 您可以通过SDK在创建函数或更新函数时指定使用弹性实例还是性能实例,系统后端会将您的请求路由至设置的实例类型中。 实例类型参数为:

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号