При попытке загрузить файл в Amazon S3 с помощью invoke-restmethod в PowerShell 5.1 возникает ошибка (412) Precondition Failed. Я считаю, что у меня есть проблема с информацией заголовка в моем скрипте, но я не могу понять, что нужно изменить.
Поставщик, которому я отправляю файл, успешно создает местоположение S3 и возвращает form_data, url, bucket, key, policy и т. Д. Я использую эту информацию для создания заголовка при передаче в invoke-restmethod.
Есть идеи о том, что мне не хватает? Заранее спасибо!
$header = @{
'acl' = 'authenticated-read'
'key' = $s3tempfile.form_data.key
'policy' = $s3tempfile.form_data.policy
'x-amz-credential' = $s3tempfile.form_data.'x-amz-credential'
'x-amz-algorithm' = $s3tempfile.form_data.'x-amz-algorithm'
'x-amz-signature' = $s3tempfile.form_data.'x-amz-signature'
'x-amz-date' = $s3tempfile.form_data.'x-amz-date'
'x-amz-security-token' = $s3tempfile.form_data.'x-amz-security-token'
'bucket' = $s3tempfile.bucket
}
$body = @{
'file' = Get-Item -Path 'C:\scripts\upload\data.csv'
}
$s3upload = Invoke-restmethod -UseBasicParsing -uri $s3tempfile.url -header
$header -body $body -Method Post -ContentType 'text/csv'
Я ожидал, что файл csv будет загружен в $ s3tempfile.url, но я получаю сообщение об ошибке ниже:
Invoke-restmethod: удаленный сервер возвратил ошибку: (412) Сбой предварительного условия.