tongchenkeji 发表于:2023-11-21 23:52:180次点击 已关注取消关注 关注 私信 阿里函数计算中层可以引用sdk不?[阿里云] 暂停朗读为您朗读 阿里函数计算中层可以引用sdk不? 「点点赞赏,手留余香」 赞赏 还没有人赞赏,快来当第一个赞赏的人吧! 海报 阿里云# Serverless2886# 函数计算2686# 开发工具825
vohelonAM 2023-12-3 11:52:45 1 可以,层可以为您提供公共依赖库、运行时环境及函数扩展等发布与部署能力。您可以将函数依赖的公共库提炼到层或者使用函数计算官方公共层,以减少部署或更新函数时的代码包体积。本文介绍层的功能原理、各运行时使用层说明、如何构建层的ZIP包以及如何创建、删除自定义层。https://help.aliyun.com/zh/fc/user-guide/create-a-custom-layer?spm=a2c4g.11186623.0.i498
sun20AM 2023-12-3 11:52:45 2 是的,阿里云函数计算支持在中层中使用SDK。您可以将函数依赖的公共库提炼到层中,或者使用函数计算官方提供的公共层,这样可以有效地减少部署或更新函数时的代码包体积。此外,自2021年1月起,阿里云函数计算还推出了“自定义层”功能,允许用户自行创建和管理自定义层,从而实现跨函数的共享。当您在层中引用了SDK后,每次函数调用时,阿里云函数计算都会将对应的层与函数代码一起加载,从而确保了功能的正常运行。
穿过生命散发芬芳AM 2023-12-3 11:52:45 4 可以,使用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("GetLayerVersion, request ID " + gvResp.getRequestId() + ", LayerName: " + gvResp.getLayerName() + ", LayerVersion: " + gvResp.getVersion()); // 获取层列表。 String nextToken = ""; System.out.println("ListLayerResponse:"); 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("ListLayerVersionResponse:"); 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("DeleteLayerVersion, request ID " + dlvResp.getRequestId() + ", LayerName: " + gvResp.getLayerName() + ", LayerVersion: " + gvResp.getVersion()); }} ——参考来源于阿里云官方文档。
可以,层可以为您提供公共依赖库、运行时环境及函数扩展等发布与部署能力。您可以将函数依赖的公共库提炼到层或者使用函数计算官方公共层,以减少部署或更新函数时的代码包体积。本文介绍层的功能原理、各运行时使用层说明、如何构建层的ZIP包以及如何创建、删除自定义层。https://help.aliyun.com/zh/fc/user-guide/create-a-custom-layer?spm=a2c4g.11186623.0.i498
是的,阿里云函数计算支持在中层中使用SDK。您可以将函数依赖的公共库提炼到层中,或者使用函数计算官方提供的公共层,这样可以有效地减少部署或更新函数时的代码包体积。此外,自2021年1月起,阿里云函数计算还推出了“自定义层”功能,允许用户自行创建和管理自定义层,从而实现跨函数的共享。当您在层中引用了SDK后,每次函数调用时,阿里云函数计算都会将对应的层与函数代码一起加载,从而确保了功能的正常运行。
这个要您把sdk打包到层里。此回答来自钉群阿里函数计算官网客户。
可以,使用SDK对层版本执行发布、查询及删除等操作的代码示例如下:
——参考来源于阿里云官方文档。