diff --git a/internal/data/backup.go b/internal/data/backup.go
index 699f7aa3..ec5c0b06 100644
--- a/internal/data/backup.go
+++ b/internal/data/backup.go
@@ -400,6 +400,7 @@ func (r *backupRepo) getStorage(backupStorage biz.BackupStorage) (storage.Storag
return storage.NewLocal(backupStorage.Info.Path)
case biz.BackupStorageTypeS3:
return storage.NewS3(storage.S3Config{
+ Region: backupStorage.Info.Region,
Bucket: backupStorage.Info.Bucket,
AccessKeyID: backupStorage.Info.AccessKey,
SecretAccessKey: backupStorage.Info.SecretKey,
diff --git a/internal/service/backup_storage.go b/internal/service/backup_storage.go
index c5269e89..80756fad 100644
--- a/internal/service/backup_storage.go
+++ b/internal/service/backup_storage.go
@@ -124,6 +124,7 @@ func (s *BackupStorageService) validateStorage(accountType string, info types.Ba
switch biz.BackupStorageType(accountType) {
case biz.BackupStorageTypeS3:
client, err = storage.NewS3(storage.S3Config{
+ Region: info.Region,
Bucket: info.Bucket,
AccessKeyID: info.AccessKey,
SecretAccessKey: info.SecretKey,
diff --git a/pkg/storage/s3_test.go b/pkg/storage/s3_test.go
new file mode 100644
index 00000000..7ae303f5
--- /dev/null
+++ b/pkg/storage/s3_test.go
@@ -0,0 +1,9 @@
+package storage
+
+import "testing"
+
+func TestS3(t *testing.T) {
+ s3, err := NewS3(S3Config{
+ Region: "us-west-1",
+ })
+}
diff --git a/pkg/types/backup.go b/pkg/types/backup.go
index 1505b12f..f14602e2 100644
--- a/pkg/types/backup.go
+++ b/pkg/types/backup.go
@@ -7,6 +7,7 @@ type BackupStorageInfo struct {
AccessKey string `json:"access_key"` // 访问密钥
SecretKey string `json:"secret_key"` // 私钥
Style string `json:"style" validate:"required|in:path,virtual-hosted"` // virtual-hosted, path
+ Region string `json:"region"` // 地区
Endpoint string `json:"endpoint" validate:"required"` // 端点
Scheme string `json:"scheme" validate:"required|in:http,https"` // http, https
Bucket string `json:"bucket" validate:"required"` // 存储桶
diff --git a/web/src/views/backup/StorageView.vue b/web/src/views/backup/StorageView.vue
index 94a553fc..e551ea8b 100644
--- a/web/src/views/backup/StorageView.vue
+++ b/web/src/views/backup/StorageView.vue
@@ -37,7 +37,8 @@ const defaultModel = {
info: {
access_key: '',
secret_key: '',
- style: 'virtual_hosted',
+ style: 'virtual-hosted',
+ region: '',
endpoint: '',
scheme: 'https',
bucket: '',
@@ -246,6 +247,12 @@ onMounted(() => {
+
+
+