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!