Я играю с назначенными URL-адресами Amazon S3 всю ночь, пытаясь поместить файл. Я генерирую назначенный URL-адрес в Java-коде.
AWSCredentials credentials = new BasicAWSCredentials( accessKey, secretKey );
client = new AmazonS3Client( credentials );
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest( bucketName, "myfilename", HttpMethod.PUT);
request.setExpiration( new Date( System.currentTimeMillis() + (120 * 60 * 1000) ));
return client.generatePresignedUrl( request ).toString();
Затем я хочу использовать сгенерированный, назначенный URL для PUT файла с помощью curl.
curl -v -H "content-type:image/jpg" -T mypicture.jpg https://mybucket.s3.amazonaws.com/myfilename?Expires=1334126943&AWSAccessKeyId=<accessKey>&Signature=<generatedSignature>
Я предположил, что, подобно GET, это будет работать на ведро, которое не является общедоступным (что точка назначенного, правильно?) Ну, я получил доступ к отказам при каждой попытке. Наконец, из-за разочарования я изменил разрешение ведра, чтобы позволить КАЖДОМУ писать. Разумеется, тогда работал назначенный URL. Я быстро удалил разрешение EVERYONE из ведра. Теперь у меня нет разрешения удалять элемент, который был загружен в мое ведро, по моему собственному предварительно подписанному URL. я см. Сейчас, что я, вероятно, должен был разместить заголовок x-amz-acl на том, что я загрузил. Я подозреваю, что я создам еще несколько объектов, способных к восстановлению, прежде чем я получу это.
Это приводит к нескольким вопросам:
- Как я могу загрузить с помощью curl с помощью PUT и сгенерированного назначенного URL?
- Как удалить загруженный файл и созданное ядро для его проверки?
Конечная цель заключается в том, что мобильный телефон будет использовать этот назначенный URL для PUT изображений. Я пытаюсь сделать это в curl как доказательство концепции.
Обновление: Я задал вопрос о форумах amazon. Если ответ будет предоставлен, я отвечу здесь как ответ.