2016-12-22 2 views
2

내 s3 버킷에서 파일을 다운로드 한 다음 스크립트를 변경해야하는 스크립트 작업 중입니다. 문제는 내 스크립트 이 루트로 실행될 때 제대로 실행되지만 전용 사용자과 실행될 때는 실행되지 않습니다. 내가 루트, 아무 문제, 파일이 다운로드하고 스크립트가 계속되지만 내 전용 사용자로 실행되는 등의 스크립트를 실행하면HTTP 코드 400 from object from AWS S3 버킷 (Boto3 포함)

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') 

: 여기

우리가 관심있는 코드의 조각

logstash:x:501:501::/home/logstash:/sbin/nologin, 작동하지 않습니다.

나는 파이썬 인터프리터를 root로 실행하고 logstash로 실행하고 명령으로 스크립트 명령을 실행했지만 루트로 작동하지만 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

아니요, 루트로 사용하지 않기 때문에 (그리고 나는 원하지 않습니다). 나는 이식성을 위해 하드 코딩 된 자격 증명을 사용한다. (나쁜 습관이라는 것을 알고있다.) ... 자격증은 boto3.client 인수에있다. – Kuaaaly

+0

매우 이상하다. 그것은 나를 위해 일하고있다. – rocksteady

답변

0

내가 처음이야 :)

는로 다운로드 디렉토리에 대해 올바르게 설정 한 사용자 logstash에 대한 사용 권한이 있습니까?

-Rchown -R logstash에 놓친 적이 있으십니까?

+0

슬프게도 해결책이 아니 었습니다. 왜냐하면 나는'chown -R'을했을 때 이미 다운로드 디렉토리에'file.csv' 파일을 가지고 있었기 때문에 (이전에 루트로 다운로드되었다). 그래서 나는 그것에 대한 허가도 바꿨지 만, logstash로 실행 된 스크립트는 그 자체로 파일을 다운로드하지 못했고 이전 파일을 루트와 변경된 소유자로 사용하여 프로세스를 계속 진행하지 못했습니다 ... – Kuaaaly

+0

'chown -R logstash : 사용자 및 그룹에 대한 logstash'? – rocksteady

+0

네, 이전 질문에'chown -R logstash :'라고 적어 두었습니다. – Kuaaaly