私はs3バケットからファイルをダウンロードして、それにいくつかの変更を加える予定のスクリプトを作成しています。 問題は、自分のスクリプトがrootとして実行されたときに正常に実行されますが、専用ユーザーで実行されたときには実行されないということです。ここでHTTPコード400 from object from AWS S3バケット(Boto3 with Python)
は、我々が興味を持っているコードです:
s3 = boto3.client('s3', aws_access_key_id='xxx', aws_secret_access_key='xxx')
s3.download_file('my-bucket', 'my_file.csv', '/my/path/to/file.csv')
私はrootとしてスクリプトを実行すると、何の問題は、ファイルがダウンロードされず、スクリプトは続行されますが、私の専用のユーザーで実行されます。
logstash:x:501:501::/home/logstash:/sbin/nologin
、動作しません。
私はrootとして、そしてlogstashとしてPythonインタプリタを実行しようとしましたが、コマンドでscriptコマンドを実行しましたが、rootとして動作しますが、logstashとして動作しません。ここにエラーがあります:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/boto3/s3/inject.py", line 126, in download_file
extra_args=ExtraArgs, callback=Callback)
File "/usr/local/lib/python2.7/site-packages/boto3/s3/transfer.py", line 299, in download_file
future.result()
File "/usr/local/lib/python2.7/site-packages/s3transfer/futures.py", line 73, in result
return self._coordinator.result()
File "/usr/local/lib/python2.7/site-packages/s3transfer/futures.py", line 233, in result
raise self._exception
botocore.exceptions.ClientError: An error occurred (400) when calling the HeadObject operation: Bad Request
私はGoogleで多くを検索しましたが、この特別な「ユーザー切り替え」のケースに関するトピックはありません。
[手順](https://boto3.readthedocs.io/en/latest/guide/quickstart.html#configuration)に続いてlogstashとしてログインしましたか? – rocksteady
いいえ、私はrootとしてそれらを使用しないので(そして私はしたくありません)。私は移植性のためにハードコードされた証明書を使用しています(私はそれが悪い習慣であることを知っています)...資格証明はboto3.clientの引数にあります – Kuaaaly
非常に奇妙なことに、私のために働いています。 – rocksteady