SDK Connector 开发指南
⚠️ 注意:如果你不了解connector,请先快速浏览下http-connector,会告诉你connector如何使用。
SDK Connector 是一种插件式 connector,由 connectorType 和 action 两部分组成:
- connectorType:描述插件并执行初始化工作
- action:利用初始化信息执行具体操作
- Base:请选择sdk
- 性能:请尽量使用缓存
关于 connectorType 和 action 的详细定义、使用方法及基础配置,请参考 http-connector 相关文档。
SDK Connector 开发方式
SDK Connector 的开发有两种方式:
- 使用 GitHub 提供的 Maven Archetype 项目(推荐 Java 开发者)
- 直接上传第三方 JAR 包
⚡ 推荐方式一,优势包括:
- 打包时自动引入依赖 JAR
- 在本地 IDE(如 IntelliJ IDEA)中开发调试方便
- 项目结构更规范
方式一:使用 GitHub Maven Archetype 创建 SDK Connector(推荐)
项目地址: https://github.com/zljxh/ceta-archetype-plugin
请先阅读仓库中的 README.md 文件,其中说明了:
- 如何构建 plugin 项目
- 构建后的项目中 README.md 指导如何创建
connectorType与action
方式二:直接上传第三方 JAR 包
如果选择直接上传第三方 JAR 包,请注意:
⚠️ 注意:如果该 JAR 的 POM 中依赖其他 JAR,ceta-connector 不会自动加载,你需要将所有依赖包一起上传。
1. 构建 connectorType
⚠️ 注意:为了性能,请尽量使用缓存,
cache,expires,timeUnit在http-connector篇有介绍。
编写 connectorType 用于描述插件并进行初始化工作。
例如:
return [
"cache": true,
"expires": 15000,
"timeUnit": "HOURS",
executeScriptResult: [
"accessKey": inputs.accessKey,
"secretKey": inputs.secretKey
]
]
示例截图:

2. 构建 action
根据 connectorType 初始化信息实现实际业务逻辑。例如:
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
import software.amazon.awssdk.core.sync.RequestBody;
import java.nio.file.Path;
import software.amazon.awssdk.regions.Region;
// connectorInstance 是 ConnectorInstance.buildInstance 的返回值
def accessKey = connectorInstance.executeScriptResult.accessKey
def secretKey = connectorInstance.executeScriptResult.secretKey
AwsBasicCredentials credentials = AwsBasicCredentials.create(accessKey, secretKey)
StaticCredentialsProvider credentialsProvider = StaticCredentialsProvider.create(credentials)
S3Client s3 = S3Client.builder()
.region(Region.AP_SOUTHEAST_1)
.credentialsProvider(credentialsProvider)
.build()
try {
PutObjectRequest putObjectRequest = PutObjectRequest.builder()
.bucket(inputs.bucketName)
.key(inputs.keyName)
.build()
s3.putObject(putObjectRequest, RequestBody.fromFile(Path.of(inputs.filePath)))
} finally {
s3.close()
}
示例截图:
