You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OCI Java SDK创建OCI函数时,如何添加Zip包形式源码?

使用OCI Java SDK通过Zip包创建OCI函数的方案

你当前使用的PreBuiltFunctionSourceDetails是用于基于预构建镜像创建函数的,若要通过Zip包(源码/代码包)创建函数,需改用ZipUploadFunctionSourceDetails类,具体方案如下:

关键修改点

  • 替换sourceDetails的实现类:从PreBuiltFunctionSourceDetails改为ZipUploadFunctionSourceDetails
  • 移除image和imageDigest参数(使用Zip包时,OCI会自动构建并托管镜像)
  • 添加Zip包的Base64编码内容、运行时类型等必要参数

示例代码

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Base64;

// 1. 读取Zip文件并转换为Base64编码字符串
byte[] zipBytes = Files.readAllBytes(Paths.get("/path/to/your/function-code.zip"));
String zipBase64 = Base64.getEncoder().encodeToString(zipBytes);

// 2. 构建CreateFunctionDetails
CreateFunctionDetails createFunctionDetails = CreateFunctionDetails.builder()
        .displayName(lambdaFunctionResponse.configuration().functionName())
        .applicationId("ocid1.test.oc1..<unique_ID>EXAMPLE-applicationId-Value")
        // 替换为对应运行时,比如"java17"、"python311"等,需与Zip包代码匹配
        .runtime("java17")
        .sourceDetails(ZipUploadFunctionSourceDetails.builder()
                .zipFileBase64Encoded(zipBase64)
                .memoryInMBs(298L)
                .config(functionConfigMap)
                .timeoutInSeconds(30)
                .provisionedConcurrencyConfig(ConstantProvisionedConcurrencyConfig.builder()
                        .count(615).build())
                .traceConfig(FunctionTraceConfig.builder()
                        .isEnabled(true).build())
                .build())
        .build();

注意事项

  • Zip包结构要求:需符合OCI Functions对应运行时的规范,比如Java函数需包含func.yaml配置文件和编译后的JAR包;Python函数需包含入口文件(如handler.py)和依赖包等
  • Base64编码:确保Zip文件转换为Base64时无编码错误,大文件需注意内存占用,若Zip过大可考虑使用OCI Object Storage存储后通过ObjectStorageFunctionSourceDetails引用
  • 权限验证:确保SDK使用的身份凭证拥有functions-function:create及相关存储服务的权限

内容的提问来源于stack exchange,提问作者Javid Muhammed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 23:25:22