mirror of
https://github.com/AlistGo/alist.git
synced 2025-12-19 11:00:06 +08:00
Introduces a new 'storage_class' configuration option for S3 providers. Users can now specify the desired storage class (e.g., Standard, GLACIER, DEEP_ARCHIVE) for objects uploaded to S3-compatible services like AWS S3 and Tencent COS. The input storage class string is normalized to match AWS SDK constants, supporting various common aliases. If an unknown storage class is provided, it will be used as a raw value with a warning. This enhancement provides greater control over storage costs and data access patterns.
49 lines
1.8 KiB
Go
49 lines
1.8 KiB
Go
package s3
|
|
|
|
import (
|
|
"github.com/alist-org/alist/v3/internal/driver"
|
|
"github.com/alist-org/alist/v3/internal/op"
|
|
)
|
|
|
|
type Addition struct {
|
|
driver.RootPath
|
|
Bucket string `json:"bucket" required:"true"`
|
|
Endpoint string `json:"endpoint" required:"true"`
|
|
Region string `json:"region"`
|
|
AccessKeyID string `json:"access_key_id" required:"true"`
|
|
SecretAccessKey string `json:"secret_access_key" required:"true"`
|
|
SessionToken string `json:"session_token"`
|
|
CustomHost string `json:"custom_host"`
|
|
EnableCustomHostPresign bool `json:"enable_custom_host_presign"`
|
|
SignURLExpire int `json:"sign_url_expire" type:"number" default:"4"`
|
|
Placeholder string `json:"placeholder"`
|
|
ForcePathStyle bool `json:"force_path_style"`
|
|
ListObjectVersion string `json:"list_object_version" type:"select" options:"v1,v2" default:"v1"`
|
|
RemoveBucket bool `json:"remove_bucket" help:"Remove bucket name from path when using custom host."`
|
|
AddFilenameToDisposition bool `json:"add_filename_to_disposition" help:"Add filename to Content-Disposition header."`
|
|
StorageClass string `json:"storage_class" type:"select" options:",standard,standard_ia,onezone_ia,intelligent_tiering,glacier,glacier_ir,deep_archive,archive" help:"Storage class for new objects. AWS and Tencent COS support different subsets (COS uses ARCHIVE/DEEP_ARCHIVE)."`
|
|
}
|
|
|
|
func init() {
|
|
op.RegisterDriver(func() driver.Driver {
|
|
return &S3{
|
|
config: driver.Config{
|
|
Name: "S3",
|
|
DefaultRoot: "/",
|
|
LocalSort: true,
|
|
CheckStatus: true,
|
|
},
|
|
}
|
|
})
|
|
op.RegisterDriver(func() driver.Driver {
|
|
return &S3{
|
|
config: driver.Config{
|
|
Name: "Doge",
|
|
DefaultRoot: "/",
|
|
LocalSort: true,
|
|
CheckStatus: true,
|
|
},
|
|
}
|
|
})
|
|
}
|