Dify Cloud Kit is a unified abstraction library for integrating various cloud object storage services in Go. It simplifies switching between providers and supports local testing and multi-cloud deployments.
- Supports multiple backends: Local FS, Aliyun OSS, AWS S3, Azure Blob, Tencent COS, Huawei OBS, Google GCS
- Unified and clean interface
- Factory pattern to dynamically load drivers
- Easy to write tests with local and in-memory backends
go get github.com/langgenius/dify-cloud-kitimport (
"github.com/langgenius/dify-cloud-kit/oss"
"github.com/langgenius/dify-cloud-kit/oss/factory"
)
func main() {
store, err := factory.Load("local", oss.OSSArgs{
Local: &oss.Local{
Path: "/tmp/files",
},
})
if err != nil {
panic(err)
}
files, _ := store.List("/")
fmt.Println(files)
}| Provider | Module Path | Required Fields |
|---|---|---|
| Local | oss/local/localfile.go |
Path |
| Aliyun OSS | oss/aliyun/aliyun.go |
Endpoint, AccessKey, SecretKey, Bucket |
| AWS S3 | oss/s3/s3.go |
Region, AccessKey, SecretKey, Bucket |
| Azure Blob | oss/azureblob/blob.go |
AccountName, AccountKey, Container |
| Google GCS | oss/gcsblob/gcs.go |
CredentialsJSON, Bucket |
| Tencent COS | oss/tencentcos/cos.go |
SecretId, SecretKey, Bucket, Region |
| Huawei OBS | oss/huaweiobs/obs.go |
AK, SK, Endpoint, Bucket |
| Volcengine TOS | oss/volcenginetos/tos.go |
Endpoint, AccessKey, SecretKey, Bucket |
You can dynamically load a storage backend using the factory:
store, err := factory.Load("s3", oss.OSSArgs{
S3: &oss.S3{
Region: "us-west-2",
AccessKey: "AKIA...",
SecretKey: "SECRET...",
Bucket: "my-bucket",
},
})Unit tests are located in tests/oss/oss_test.go.
Some providers require credentials to be passed via environment variables. Set them as needed:
export OSS_AWS_ACCESS_KEY=your-access-key
export OSS_AWS_SECRET_KEY=your-secret-key
export OSS_AWS_REGION=your-region
export OSS_S3_BUCKET=test-bucket
export OSS_ALIYUN_ENDPOINT=your-endpoint
export OSS_ALIYUN_ACCESS_KEY=your-access-key
export OSS_ALIYUN_SECRET_KEY=your-secret-key
export OSS_ALIYUN_BUCKET=test-bucket
go test ./...This project is licensed under the Apache 2.0 License.
Some parts of the code in this project originate from dify-plugin-daemon
| Provider | Author | PR |
|---|---|---|
| Aliyun OSS | bravomark | langgenius/dify-plugin-daemon#261 |
| Azure Blob | techan | langgenius/dify-plugin-daemon#172 |
| Google GCS | Hironori Yamamoto | langgenius/dify-plugin-daemon#237 |
| Local | lengyhua | langgenius/dify-plugin-daemon#157 |
| AWS S3 | Yeuoly | https://github.com/langgenius/dify-plugin-daemon/commit/9ad9d7d4de1d123956ab07955e541bc4053e5170 |
| Tencent COS | quicksand | langgenius/dify-plugin-daemon#97 |
| Volcengine TOS | quicksand | #2 |