Tigris AWS credential setup for python app

I have a python app running on a fly.io machine and a Tigris storage bucket setup. I would like the python app periodically (every few days) pull a pre-signed PUT URL for a Tigris file object. The PUT URL will be pushed to an embedded hardware device for uploading a file (this is already working by manually creating pre-signed PUT URLs). Note, due to the embedded device constrains, I cannot use the Browser-Based Uploads method.

My question: I have tried using the Python SDK Method here. However, on fly.io with the correct Bucket and Key (object name), but I receive this error:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.11/site-packages/botocore/signers.py", line 823, in generate_presigned_url
    return request_signer.generate_presigned_url(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/botocore/signers.py", line 350, in generate_presigned_url
    self.sign(
  File "/usr/local/lib/python3.11/site-packages/botocore/signers.py", line 198, in sign
    auth.add_auth(request)
  File "/usr/local/lib/python3.11/site-packages/botocore/auth.py", line 1004, in add_auth
    raise NoCredentialsError
botocore.exceptions.NoCredentialsError: Unable to locate credentials

I take this to mean I do not have the Tigris AWS credentials setup correctly in my fly.io instance. What is the proper why to accomplish this?

Thanks!

Hi @sensa,

Take a look here fly secrets set · Fly Docs on how to set the secrets.
For future reference, if you create the bucket as documented here Bucket Management with Flyctl | Tigris Object Storage Documentation it will automatically add the secrets.

Cheers
Garren

1 Like

@garrensmith thanks! I suspected I missed something simple in the documentation.