Browse Source

fix(storage): 🐛 Create S3 bucket if it doesn't exist (#7514)

Co-authored-by: 莫岳恒 <moyueheng@datagrand.com>
Vimpas 8 months ago
parent
commit
0006c6f0fd
1 changed files with 10 additions and 0 deletions
  1. 10 0
      api/extensions/storage/s3_storage.py

+ 10 - 0
api/extensions/storage/s3_storage.py

@@ -28,6 +28,16 @@ class S3Storage(BaseStorage):
                 region_name=app_config.get("S3_REGION"),
                 config=Config(s3={"addressing_style": app_config.get("S3_ADDRESS_STYLE")}),
             )
+        # create bucket
+        try:
+            self.client.head_bucket(Bucket=self.bucket_name)
+        except ClientError as e:
+            # if bucket not exists, create it
+            if e.response["Error"]["Code"] == "404":
+                self.client.create_bucket(Bucket=self.bucket_name)
+            else:
+                # other error, raise exception
+                raise
 
     def save(self, filename, data):
         self.client.put_object(Bucket=self.bucket_name, Key=filename, Body=data)