Я очень старался реализовать этот учебник в моем проекте Django, но безуспешно. Я думаю, что функция, которую я использую для подписи сообщения, не работает должным образом.
Это моя функция:
def sign_s3(request,*args, **kwargs):
S3_BUCKET = getattr(settings, 'FILEMANAGER_AWS_S3_BUCKET_NAME')
file_name = request.GET.get('file_name')
file_type = request.GET.get('file_type')
s3 = boto3.client('s3',
config = S3ClientCfg(signature_version = 's3v4'),
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
)
# s3 = get_aws_s3_client()
presigned_post = s3.generate_presigned_post(
Bucket = S3_BUCKET,
Key = file_name,
Fields = {"acl": "public-read", "Content-Type": file_type},
Conditions = [
{"acl": "public-read"},
{"Content-Type": file_type}
],
ExpiresIn = 3600
)
response_dict = {
'data': presigned_post,
'url': 'https://%s.s3.amazonaws.com/%s' % (S3_BUCKET, file_name)
}
mimetype = 'application/json'
return HttpResponse(json.dumps(response_dict), mimetype)
На самом деле, когда я смотрю в веб-консоль, я вижу:
Cross-Origin Request Blocked. (Reason: CORS request did not succeed)