프랑크푸르트 S3 버킷 (비단뱀 라이브러리 boto 사용)의 객체에 대해 서명 된 CloudFront URL을 만들려고합니다. 이는 유럽 연합 (EU) - 서 - 1 양동이와 아주 잘 작동하는 데 사용하지만, 지금은 다음과 같은 오류 메시지가 받고 있어요 :S3 버켓의 서명 CloudFront URL
<Error>
<Code>InvalidRequest</Code>
<Message>
The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.
</Message>
...
내가 새로운 S3 위치가 AWS4-HMAC-SHA256을 사용하여 서명 할 API 요청이 필요하다는 것을 이해를 하지만이 서명 CloudFront를 URL을
의 생성을 변경하는 방법 AWS 문서에서 아무것도 찾을 수없는 편집:
명확하게는, 다음과 같은 코드가 오류를 발생시키지 않고 서명 된 URL을 생산 ... 나중에 브라우저에서 생성 된 URL을 열면 오류가 발생합니다.
cf = cloudfront.CloudFrontConnection(aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY)
distribution_summary = cf.get_all_distributions()[0]
distribution = distribution_summary.get_distribution()
return distribution.create_signed_url(url,
settings.CLOUDFRONT_KEY_ID,
int(time()) + expiration,
private_key_file=settings.PRIVATE_KEY_FILE)
'boto'의 어떤 버전을 사용하고 있습니까? [SignatureV4 지원은 v2.13.2에 추가 된 것으로 보입니다.] (https://github.com/boto/boto/commit/c9342baad5ed2da7be76e8498dcae54a5906e486). –
가장 최신 버전을 사용하고 있지만 문제는 API 요청 자체가 아니라 (생각합니다) ... 서명 된 URL의 서명 – Jann
그래서 문제를 명확히하기 위해 생성 된 서명 된 URL에 'Key -Pair-Id = ...'? 아니면'AWSAccessKeyID = ... '를 사용합니까? 또한,'Server :'http 응답 헤더는 무엇을 말하고 있는가? "서버 : Amazon S3"또는 다른 것? –