내 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에서 많이 검색했지만이 특별한 '사용자 전환'사례에 대한 주제는 없습니다.
[단계] (https://boto3.readthedocs.io/en/latest/guide/quickstart.html#configuration)을 logstash로 로그인 했습니까? – rocksteady
아니요, 루트로 사용하지 않기 때문에 (그리고 나는 원하지 않습니다). 나는 이식성을 위해 하드 코딩 된 자격 증명을 사용한다. (나쁜 습관이라는 것을 알고있다.) ... 자격증은 boto3.client 인수에있다. – Kuaaaly
매우 이상하다. 그것은 나를 위해 일하고있다. – rocksteady