开发者社区 > 云原生 > Serverless > 正文

阿里函数计算中层可以引用sdk不?

阿里函数计算中层可以引用sdk不?

展开
收起
小小鹿鹿鹿 2023-11-21 23:52:18 43 0
5 条回答
写回答
取消 提交回答
  • 可以,层可以为您提供公共依赖库、运行时环境及函数扩展等发布与部署能力。您可以将函数依赖的公共库提炼到层或者使用函数计算官方公共层,以减少部署或更新函数时的代码包体积。本文介绍层的功能原理、各运行时使用层说明、如何构建层的ZIP包以及如何创建、删除自定义层。https://help.aliyun.com/zh/fc/user-guide/create-a-custom-layer?spm=a2c4g.11186623.0.i498

    2023-11-22 16:37:33
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    阿里函数计算可以引用SDK。以下是具体的步骤:

    1. 在函数计算控制台上创建一个新的函数。
    2. 将所需要的SDK从npm或其他开源仓库安装到函数目录中。

    在Node.js中,可以使用如下命令进行安装:

    npm install --save @aliyun/oss-sdk
    

    其中,“@aliyun/oss-sdk”表示所要安装的SDK名称。

    1. 引入SDK

    在JavaScript函数代码中,可以像下面这样引入SDK:

    const OSS = require('@aliyun/oss-sdk');
    

    请注意,您需要根据实际需求更改 SDK 的名称。

    1. 使用SDK进行编码

    接下来,可以使用引入的SDK进行编码,实现预期的功能。

    2023-11-22 13:50:31
    赞同 展开评论 打赏
  • 是的,阿里云函数计算支持在中层中使用SDK。您可以将函数依赖的公共库提炼到层中,或者使用函数计算官方提供的公共层,这样可以有效地减少部署或更新函数时的代码包体积。此外,自2021年1月起,阿里云函数计算还推出了“自定义层”功能,允许用户自行创建和管理自定义层,从而实现跨函数的共享。当您在层中引用了SDK后,每次函数调用时,阿里云函数计算都会将对应的层与函数代码一起加载,从而确保了功能的正常运行。

    2023-11-22 11:05:23
    赞同 展开评论 打赏
  • 这个要您把sdk打包到层里。此回答来自钉群阿里函数计算官网客户。

    2023-11-22 08:23:08
    赞同 展开评论 打赏
  • 可以,使用SDK对层版本执行发布、查询及删除等操作的代码示例如下:

    package com.mycompany.FcSample;
    
    import com.aliyuncs.fc.client.FunctionComputeClient;
    import com.aliyuncs.fc.model.Code;
    import com.aliyuncs.fc.model.Layer;
    import com.aliyuncs.fc.request.*;
    import com.aliyuncs.fc.response.*;
    
    import org.apache.commons.lang.ArrayUtils;
    
    import java.io.IOException;
    
    
    public class FcSample {
        private static final String REGION = "cn-hangzhou";
    
        public static void main(final String[] args) throws IOException {
            /*
            阿里云账号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环境变量会自动被设置。
            */
            String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
            String accessSecretKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
            String accountId = System.getenv("ACCOUNT_ID");
    
            String layerName = "test-layer";
            String[] compatibleRuntime = {"python3", "node12"};
            String layerDir = "layer";
    
            // 初始化客户端。
            FunctionComputeClient fcClient = new FunctionComputeClient(REGION, accountId, accessKey, accessSecretKey);
    
            // 设置函数客户端接入点Endpoint:http://{accountId}.{regionId}.fc.aliyuncs.com。
    
            // 发布层版本。
            PublishLayerVersionRequest plvReq = new PublishLayerVersionRequest();
            Code code = new Code().setDir(layerDir);
            plvReq.setCode(code);
            plvReq.setCompatibleRuntime(compatibleRuntime);
            plvReq.setDescription("FC layer test");
            plvReq.setLayerName(layerName);
            PublishLayerVersionResponse plvResp = fcClient.publishLayerVersion(plvReq);
            System.out.println("PublishLayerVersion, request ID " + plvResp.getRequestId() +
                ", LayerName: " + plvResp.getLayerName() + ", LayerVersion: " + plvResp.getVersion());
    
            // 查询指定层版本信息。
            GetLayerVersionRequest gvReq = new GetLayerVersionRequest();
            gvReq.setLayerName(layerName);
            gvReq.setVersion(plvResp.getVersion().toString());
            GetLayerVersionResponse gvResp = fcClient.getLayerVerion(gvReq);
            System.out.println("\nGetLayerVersion, request ID " + gvResp.getRequestId() +
                ", LayerName: " + gvResp.getLayerName() + ", LayerVersion: " + gvResp.getVersion());
    
            // 获取层列表。
            String nextToken = "";
            System.out.println("\nListLayerResponse:");
            Layer[] layers = new Layer[]{};
            while (true) {
                ListLayerRequest llReq = new ListLayerRequest();
                llReq.setLimit("100");
                llReq.setNextToken(nextToken);
                ListLayerResponse llResp = fcClient.listLayer(llReq);
                Layer[] tmpLayers = llResp.getLayers();
                layers = (Layer[])ArrayUtils.addAll(layers, tmpLayers);
                if (llResp.getNextToken() == null) {
                    break;
                }
                nextToken = llResp.getNextToken();
            }
            for(Layer layer : layers) {
                System.out.println("- LayerName: " + (String)layer.getLayerName() +
                    ", LayerMaxVersion: " + (String)layer.getVersion());
            }
    
            // 获取层版本列表。
            ListLayerVersionRequest llvReq = new ListLayerVersionRequest();
            llvReq.setLayerName(layerName);
            llvReq.setLimit(100);
            ListLayerVersionResponse llvResp = fcClient.listLayerVersion(llvReq);
            System.out.println("\nListLayerVersionResponse:");
           layers = llvResp.getLayers();
            for(Layer layer : layers) {
                System.out.println("LayerName: " + layer.getLayerName() +
                    ", LayerVersion: " + layer.getVersion());
            }
    
            // 删除层版本。
            DeleteLayerVersionRequest dlvReq = new DeleteLayerVersionRequest();
            dlvReq.setLayerName(layerName);
            String deleteLayerVersion = plvResp.getVersion().toString();
            dlvReq.setVersion(deleteLayerVersion);
            DeleteLayerVersionReponse dlvResp = fcClient.deleteLayerVersion(dlvReq);
            System.out.println("\nDeleteLayerVersion, request ID " + dlvResp.getRequestId() +
                ", LayerName: " + gvResp.getLayerName() + ", LayerVersion: " + gvResp.getVersion());
        }
    }
    

    ——参考来源于阿里云官方文档。

    2023-11-22 08:21:19
    赞同 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 热门讨论

    热门文章

    相关电子书

    更多
    Hologres Serverless之路:揭秘弹性计算组 立即下载
    Serverless开发平台: 让研发效能再提升 立即下载
    Serverless 引领云上研发新范式 立即下载