函数计算非匿名的 HTTP 函数怎么调用?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
函数计算中非匿名的 HTTP 函数调用需要进行身份认证,通常建议使用 SDK 或签名认证的方式进行调用。以下是详细的调用步骤和说明:
在调用非匿名 HTTP 函数之前,确保已正确配置 HTTP 触发器,并启用了身份认证方式(如签名认证或 JWT 认证)。具体配置包括: - 认证方式:选择“签名认证”或“JWT 认证”。 - 请求方法:指定允许的 HTTP 方法(如 GET、POST 等)。 - 公网访问 URL:确保未禁用公网访问 URL(除非通过自定义域名访问)。
如果需要修改触发器配置,可以在函数计算控制台的触发器管理页面进行编辑。
在函数详情页面的触发器配置中,找到 HTTP 触发器的公网访问地址(或内网访问地址)。该地址是调用函数的入口点。
根据是否使用 SDK,可以选择以下两种方式进行调用:
推荐使用阿里云提供的 SDK 进行调用,SDK 会自动处理签名认证等复杂逻辑。以下是支持的 SDK 语言及调用示例:
以 Python SDK 为例,调用代码如下:
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
# 初始化客户端
client = AcsClient('<your-access-key-id>', '<your-access-key-secret>', 'cn-hangzhou')
# 创建请求
request = CommonRequest()
request.set_domain('http-trigger-url') # 替换为实际的HTTP触发器URL
request.set_uri_pattern('/path') # 替换为实际路径
request.set_method('POST') # 指定HTTP方法
request.add_header('Content-Type', 'application/json')
request.set_content(b'{"key": "value"}') # 请求体
# 发送请求
response = client.do_action_with_exception(request)
print(response)
如果不使用 SDK,可以通过手动实现签名算法来调用非匿名 HTTP 函数。签名认证的核心步骤包括: 1. 生成签名字符串:根据请求方法、路径、时间戳等信息生成签名字符串。 2. 计算签名值:使用 HMAC-SHA256 算法对签名字符串进行加密。 3. 添加签名到请求头:将签名值添加到 Authorization 请求头中。
示例请求头:
Authorization: FC <access-key-id>:<signature>
Date: <current-date>
Content-Type: application/json
具体签名算法的实现可以参考官方文档中的签名校验算法说明。
完成配置后,可以通过以下方式测试函数调用是否成功: - 同步调用:使用 curl 命令测试同步调用。
curl -v https://<http-trigger-url>/<path>
X-Fc-Invocation-Type: Async。
curl -v -H "X-Fc-Invocation-Type: Async" https://<http-trigger-url>/<path>
HTTP 403 错误。通过以上步骤,您可以成功调用函数计算中非匿名的 HTTP 函数。如果有更多疑问,可以参考相关文档或联系技术支持。