2016-12-22 18 views
2

私は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で多くを検索しましたが、この特別な「ユーザー切り替え」のケースに関するトピックはありません。

+0

[手順](https://boto3.readthedocs.io/en/latest/guide/quickstart.html#configuration)に続いてlogstashとしてログインしましたか? – rocksteady

+0

いいえ、私はrootとしてそれらを使用しないので(そして私はしたくありません)。私は移植性のためにハードコードされた証明書を使用しています(私はそれが悪い習慣であることを知っています)...資格証明はboto3.clientの引数にあります – Kuaaaly

+0

非常に奇妙なことに、私のために働いています。 – rocksteady

答えて

0

私が最初だよ:)

は、あなたがにダウンロードしているディレクトリに正しく設定されているユーザlogstashの権限はありますか?

-Rchown -R logstashに逃してしまいましたか?

+0

悲しいことに、それは解決策ではありませんでした。 'chown -R'を実行したとき、私は既にダウンロードディレクトリに' file.csv'を持っていました(以前はrootとしてダウンロードされていました)。だから、私もその許可を変更しましたが、logstashとして実行されたスクリプトは、ファイルを単独でダウンロードして処理を続行するために以前のファイルを(root&変更された所有者として)失敗しました... – Kuaaaly

+0

'chown -R logstash:ユーザーとグループのための「logstash」? – rocksteady

+0

はい、それは前回の回答 'chown -R logstash:'でコメントしたことと同じです。 – Kuaaaly