我已經建立了AWS ACCT。並且正在嘗試將我的第一個編程PUT寫入S3。我已經使用控制檯創建一個存儲桶並將其放置在那裏。我還創建了一個子目錄(myFolder)並將其公開。我創造了我.aws /憑證文件,然後使用示例代碼都試過,但我得到了以下錯誤:錯誤執行「PutObject」在AWS上,上傳失敗
Error executing "PutObject" on "https://s3.amazonaws.com/gps-photo.org/mykey.txt"; AWS HTTP error: Client error: `PUT https://s3.amazonaws.com/gps-photo.org/mykey.txt` resulted in a `403 Forbidden` response:
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>FC49CD (truncated...)
AccessDenied (client): Access Denied - <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message <RequestId>FC49CD15567FB9CD</RequestId><HostId>1GTYxjzzzhcL+YyYsuYRx4UgV9wzTCQJX6N4jMWwA39PFaDkK2B9R+FZf8GVM6VvMXfLyI/4abo=</HostId></Error>
我的代碼是
<?php
// Include the AWS SDK using the Composer autoloader.
require '/home/berman/vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
$bucket = 'gps-photo.org';
$keyname = 'my-object-key';
// Instantiate the client.
$s3 = S3Client::factory(array(
'profile' => 'default',
'region' => 'us-east-1',
'version' => '2006-03-01'
));
try {
// Upload data.
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => "myFolder/$keyname",
'Body' => 'Hello, world!',
'ACL' => 'public-read'
));
// Print the URL to the object.
echo $result['ObjectURL'] . "\n";
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}
如果有人能幫助我,那將是巨大的。謝謝。 --Len
我檢查了aws_access_key_id,它是正確的。我嘗試了上面給出的簡化請求,並得到了同樣的錯誤。我不知道如何檢查密鑰是否正確,但是由於它是通過剪切和粘貼完成的,所以我沒有理由懷疑它是不正確的。看起來像一個配置問題給我。 – LenB
您是否嘗試過'file_get_contents'和'echo'鍵?你正在從'myFolder/my-object-key'加載它。那是正確的道路嗎?你應該能夠'print_r(file_get_contents('myFolder/my-object-key'))'這個問題不一定是關鍵是不正確的(但是如果你複製和粘貼經常會產生不正確的字符'不安全),這是鑰匙的路徑可能不正確。 – Denault