Эх сурвалжийг харах

修改S3获取预签名URL

zhangdongming 1 жил өмнө
parent
commit
69a395dd6d

+ 23 - 8
Controller/UserDevice/UserDeviceShareController.py

@@ -9,6 +9,9 @@
 import logging
 import time
 
+import boto3
+import botocore
+from botocore import client
 from django.db import transaction
 from django.db.models import Q
 from django.views import View
@@ -200,7 +203,6 @@ class UserDeviceShareView(View):
             UserDeviceShareView.qrcode_share_channel_permission_save(item['userID_id'], item['UID'])
         return response.json(0)
 
-
     @classmethod
     def get_wallpaper_list(cls, request_dict, response):
         """
@@ -232,17 +234,30 @@ class UserDeviceShareView(View):
             wallpaper_list = []
             if def_wallpaper_qs.exists() or user_wallpaper_qs.exists():
                 # 初始化存储桶客户端
-                s3 = AmazonS3Util(AWS_ACCESS_KEY_ID[0], AWS_SECRET_ACCESS_KEY[0], AWS_IOT_SES_ACCESS_CHINA_REGION) \
-                    if CONFIG_CN == CONFIG_INFO or CONFIG_TEST == CONFIG_INFO \
-                    else AmazonS3Util(AWS_ACCESS_KEY_ID[1], AWS_SECRET_ACCESS_KEY[1], AWS_SES_ACCESS_REGION)
-
-                bucket_name = "ansjerfilemanager"
+                if CONFIG_CN == CONFIG_INFO or CONFIG_TEST == CONFIG_INFO:
+                    s3 = boto3.client(
+                        's3',
+                        aws_access_key_id=AWS_ACCESS_KEY_ID[0],
+                        aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
+                        config=botocore.client.Config(signature_version='s3v4'),
+                        region_name='cn-northwest-1'
+                    )
+                else:
+                    s3 = boto3.client(
+                        's3',
+                        aws_access_key_id=AWS_ACCESS_KEY_ID[1],
+                        aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1],
+                        config=botocore.client.Config(signature_version='s3v4'),
+                        region_name='us-east-1'
+                    )
 
                 # 处理系统默认壁纸和用户自定义壁纸
                 all_wallpapers_qs = def_wallpaper_qs.union(user_wallpaper_qs)
                 for item in all_wallpapers_qs:
                     obj_key = item.obj_prefix + item.obj_name
-                    response_url = s3.generate_file_obj_url(bucket_name, obj_key)
+                    params = {'Key': obj_key, 'Bucket': 'ansjerfilemanager'}
+                    response_url = s3.generate_presigned_url(
+                        'get_object', Params=params, ExpiresIn=3600)
                     wallpaper = {
                         'id': item.id,
                         'url': response_url,
@@ -255,4 +270,4 @@ class UserDeviceShareView(View):
 
         except Exception as e:
             LOGGER.error('查询设备壁纸异常:errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
-            return response.json(5)
+            return response.json(5)