2013-05-07 3 views
8

나는이 시도했습니다다운로드를 트리거하는 S3의 서명 된 URL을 생성하려면 어떻게해야합니까?

connection = S3Connection(
    aws_access_key_id=settings.AWS_ACCESS_KEY_ID, 
    aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY) 

url = connection.generate_url(
    60, 
    'GET', 
    settings.AWS_STORAGE_BUCKET_NAME, 
    self.get_object().image, 
    headers={'Content-Type': 'application/octet-stream'}) 

을하지만 난이 메시지가 서명 된 URL을 방문 할 때 :

우리는 당신이 제공하는 서명과 일치하지 않습니다 계산 요청 서명. 키와 서명 방법을 확인하십시오.

반면에 headers 속성을 제거하면 이미지에 잘 액세스 할 수 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

7

문제는 generate_url을 사용하여 임의의 헤더를 설정할 수없고, response_headers 옵션이있는 동안 AWS는 설정할 수있는 옵션이 제한적이라는 것입니다. 이 경우에 예상되는 작업이 수행됩니다.

url = connection.generate_url(
    60, 
    'GET', 
    settings.AWS_STORAGE_BUCKET_NAME, 
    self.get_object().image, 
    response_headers={ 
     'response-content-type': 'application/octet-stream' 
    })