1
Я пытаюсь загрузить файл в свой ведро S3. Ниже я установил свой запрос с учетными данными. У меня возникают проблемы с выводом того, что должно быть в заголовках и в теле. Секретный ключ доступа находится внутри подписи. Что мне не хватает?Загрузить файл на S3 с помощью Faraday
def params
{
:key => key_prefix + file_name,
:aws_access_key_id => access_key_id,
:acl => "private",
:policy => encoded_policy,
:signature => encoded_signature
}
end
def headers
{
"Content-Type" => mime_type,
"x-amz-security-token" => session_token
}
end
def upload
connection.post do |req|
req.headers = headers
req.body = params.to_json
end
end
def connection
Faraday.new(:url => bucket_url) do |builder|
builder.request :multipart
builder.request :url_encoded
builder.adapter :typhoeus
end
end
Ошибка я получаю это:
<Error><Code>PreconditionFailed</Code><Message>At least one of the pre-conditions you
specified did not hold</Message><Condition>Bucket POST must be of the enclosure-type
multipart/form-data</Condition>
Является ли Фарадей строгим требованием для вашего проекта? Потому что было бы намного проще использовать жемчужину AWS. –
@MarcoSandrini Да, Фарадей является обязательным. Любая помощь или руководство будут оценены. – jozwright
Если Faraday - единственный способ пойти, то я бы рекомендовал посмотреть спецификации для метода PUT Object (http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html), что немного проще, чем строить вручную многостраничный запрос POST. –