访问函数计算 FC 非匿名 HTTP 函数

简介: 访问函数计算 FC 非匿名 HTTP 函数

签名认证相关文档
Java 访问非匿名 HTTP 函数示例
Python 访问非匿名 HTTP 函数示例
NodeJS 访问非匿名 HTTP 函数示例
PHP 访问非匿名 HTTP 函数示例

"use strict";

const https = require("https");
const crypto = require("crypto");

const AK = "YOUR_AK";
const SK = "YOUR_SK";
const HOST_NAME = "xxxxx.cn-beijing.fcapp.run";
const PATH = "/list";
const METHOD = "GET";

exports.handler = async (event, context, callback) => {
   
  const date = new Date().toUTCString();
  const headers = {
   
    "content-type": "application/json",
    //"x-fc-security-token": "FOR_STS_SECURITY_TOKEN",
    date: date,
    host: HOST_NAME,
  };
  const signature = signString(
    composeStringToSign(METHOD, PATH, headers, {
    a: "b" }),
    SK
  );
  const options = {
   
    hostname: HOST_NAME,
    port: 443,
    path: PATH + "?a=b",
    method: METHOD,
    headers: {
   
      ...headers,
      Authorization: `FC ${
     AK}:${
     signature}`,
    },
  };

  const req = https.request(options, (res) => {
   
    console.log(`statusCode: ${
     res.statusCode}`);
    res.on("data", (d) => {
   
      console.log(d.toString());
      callback(null, res.statusCode);
    });
  });

  req.on("error", (error) => {
   
    console.error(error);
  });

  req.end();
};

function buildCanonicalHeaders(headers, prefix) {
   
  var list = [];
  var keys = Object.keys(headers);

  var fcHeaders = {
   };
  for (let i = 0; i < keys.length; i++) {
   
    let key = keys[i];

    var lowerKey = key.toLowerCase().trim();
    if (lowerKey.startsWith(prefix)) {
   
      list.push(lowerKey);
      fcHeaders[lowerKey] = headers[key];
    }
  }
  list.sort();

  var canonical = "";
  for (let i = 0; i < list.length; i++) {
   
    const key = list[i];
    canonical += `${
     key}:${
     fcHeaders[key]}\n`;
  }

  return canonical;
}

function composeStringToSign(method, path, headers, queries) {
   
  const contentMD5 = headers["content-md5"] || "";
  const contentType = headers["content-type"] || "";
  const date = headers["date"];
  const signHeaders = buildCanonicalHeaders(headers, "x-fc-");

  var str = `${
     method}\n${
     contentMD5}\n${
     contentType}\n${
     date}\n${
     signHeaders}${
     path}`;

  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 (Array.isArray(values)) {
   
        queries[key].forEach(function (value) {
   
          params.push(`${
     key}=${
     value}`);
        });
      }
    });
    params.sort();
    str += "\n" + params.join("\n");
  }
  return str;
}

function signString(source, secret) {
   
  const buff = crypto
    .createHmac("sha256", secret)
    .update(source, "utf8")
    .digest();
  return Buffer.from(buff, "binary").toString("base64");
}
相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
973 31
|
10月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
1083 0
|
运维 负载均衡 Serverless
函数计算产品使用问题之在同一地域同一时刻最多可以同时运行多少个函数实例
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
消息中间件 缓存 监控
在FaaS中,如何设计无状态的函数来确保数据处理的一致性?
在FaaS中,如何设计无状态的函数来确保数据处理的一致性?
|
人工智能 开发框架 运维
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
Serverless MCP 运行时业界首发,函数计算支持阿里云百炼 MCP 服务!阿里云百炼发布业界首个全生命周期 MCP 服务,无需用户管理资源、开发部署、工程运维等工作,5 分钟即可快速搭建一个连接 MCP 服务的 Agent(智能体)。作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力。
 Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
|
Cloud Native 关系型数据库 Serverless
基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
本文带大家了解一下如何使用阿里云Serverless计算产品函数计算构建生产级别的LLM Chat应用。该最佳实践会指导大家基于开源WebChat组件LobeChat和阿里云函数计算(FC)构建企业生产级别LLM Chat应用。实现同一个WebChat中既可以支持自定义的Agent,也支持基于Ollama部署的开源模型场景。
2040 118
|
机器学习/深度学习 监控 物联网
函数即服务(FaaS)
函数即服务(FaaS)
946 6
|
弹性计算 关系型数据库 Serverless
告别资源瓶颈,函数计算驱动多媒体文件处理方案:https://www.aliyun.com/solution/tech-solution/fc-drive-file
本文介绍了一种基于阿里云的一键部署解决方案,利用云服务器ECS、RDS MySQL、OSS、函数计算FC及MNS等服务,实现高效的多媒体文件处理。方案通过事件驱动机制,将文件处理任务解耦,并自动弹性扩展,按需付费,简化部署流程,提高处理效率。本文还提供了详细的部署步骤与体验反馈,展示了从配置到文件处理的全过程。
|
运维 Serverless 调度
函数计算产品使用问题之怎么在HTTP触发的函数里添加或读取自定义头部
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
Serverless API 异构计算
函数计算产品使用问题之gpu实例函数该如何创建
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。

热门文章

最新文章