Dies schlägt fehl, wenn ich es in einem Docker-Container ausführen, aber funktioniert, wenn ich es innerhalb eines virtualenv in OS X ausführen. Eine Idee, was könnte schief gehen? Gibt es bekannte Probleme mit Docker + Boto?Herunterladen der Datei von S3 mit Boto3 in Docker schlägt fehl
>>> import boto3
>>> s3 = boto3.client('s3')
>>> s3.download_file("mybucket", "myfile.txt", "myfile2.txt")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/conda/lib/python2.7/site-packages/boto3/s3/inject.py", line 104, in download_file
extra_args=ExtraArgs, callback=Callback)
File "/opt/conda/lib/python2.7/site-packages/boto3/s3/transfer.py", line 666, in download_file
object_size = self._object_size(bucket, key, extra_args)
File "/opt/conda/lib/python2.7/site-packages/boto3/s3/transfer.py", line 729, in _object_size
Bucket=bucket, Key=key, **extra_args)['ContentLength']
File "/opt/conda/lib/python2.7/site-packages/botocore/client.py", line 258, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/opt/conda/lib/python2.7/site-packages/botocore/client.py", line 548, in _make_api_call
raise ClientError(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden
Ich bin Verwenden einer Berechtigungsdatei (~/.aws/credentials) anstelle von Umgebungsvariablen. –
Dann übergeben Sie es in den Container mit '-v ~/.aws/credentials:/root/.aws/credentials'. – ZeissS
Es ist bereits im Container. Soll Boto nicht davon lesen? –