-
Notifications
You must be signed in to change notification settings - Fork 28
Open
Description
I am trying to store a docx file in S3 and its query metadata in postgres using sqlalchemy-media
. My S3 provider is not AWS. I use Minio for testing and a private cloud provider, both of which are advertised as "S3 compatible".
However, my attempts so far have failed with the following signature mismatch error:
The request signature we calculated does not match the signature you provided. Check your Secret Access Key and signing method.
It works fine if I provide an alternative store backed by the filesystem instead, so I suppose the issue has to be with the S3 store rather than the model.
My model looks similar to this:
from sqlalchemy_media import File
class MyDocument(File):
__directory__ = "my-directory"
__prefix__ = "my-document"
class MyReport(Base):
__tablename__ = "my_report"
id = Column(Integer, primary_key=True, autoincrement=True)
year = Column(Integer, nullable=False)
document = Column(MyDocument.as_mutable(JSON), nullable=False)
And the store setup:
from sqlalchemy_media import StoreManager
from sqlalchemy_media import S3Store, FileSystemStore
def get_s3_store():
return S3Store(
bucket=None, # Bucket name prefixed to endpoint
access_key=my_access_key,
secret_key=my_secret_key,
region=None, # No region support, also tried with eu-west-1
base_url=some_base_url,
prefix=my_bucket_name,
)
def get_fs_store():
return FileSystemStore(
root_path="/tmp/sqlalchemy-media",
base_url="static.mydomain.com",
)
# File upload works with this setup
StoreManager.register("fs", get_fs_store, default=True)
# File upload fails with this setup
StoreManager.register("s3", get_s3_store, default=True)
Metadata
Metadata
Assignees
Labels
No labels