0

프랑크푸르트 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) 
+0

'boto'의 어떤 버전을 사용하고 있습니까? [SignatureV4 지원은 v2.13.2에 추가 된 것으로 보입니다.] (https://github.com/boto/boto/commit/c9342baad5ed2da7be76e8498dcae54a5906e486). –

+0

가장 최신 버전을 사용하고 있지만 문제는 API 요청 자체가 아니라 (생각합니다) ... 서명 된 URL의 서명 – Jann

+0

그래서 문제를 명확히하기 위해 생성 된 서명 된 URL에 'Key -Pair-Id = ...'? 아니면'AWSAccessKeyID = ... '를 사용합니까? 또한,'Server :'http 응답 헤더는 무엇을 말하고 있는가? "서버 : Amazon S3"또는 다른 것? –

답변

0

문제점을 발견했습니다. 실제로 클라우드 프론트 배포판이었습니다. 미국 버킷에서 이미 오래 동안 존재하던 배급의 원산지를 EU 버킷으로 옮기는 것이 효과가없는 것 같습니다.

동일한 설정 (새 Origin Access Identity 제외)으로 새 것을 작성했으며 아무런 문제없이 작동했습니다.

관련 문제