本文介绍如何使用不同语言的SDK提供的接口执行HTTP触发器(需要身份认证)函数。
背景信息
函数计算服务会根据请求头部的Authorization字段来校验每一个请求是否合法。
说明 设置了HTTP触发器的允许匿名访问的函数不可以校验。
您须使用与函数计算服务端一致的签名算法才能通过验证。未包含签名字段或者签名错误的请求,函数计算服务将会返回HTTP 403
错误。具体信息,请参见签名认证。
函数计算提供的SDK中已经提供了接口执行HTTP触发器函数,无需您手动计算。具体信息,请参见SDK列表。
Java
Python
PHP
Node.js
.NET Core
Go
代码示例如下:
import (
"fmt"
"io"
"net/http"
"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) {
fcClient, _ := fc.NewClient("<Your Endpoint>", "2016-08-15", "<Your AccessKeyID>", "<Your 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源码。