Len*_*enB 8 php amazon-s3 amazon-web-services
我已经建立了AWS帐户.我正在尝试将我的第一个程序化PUT转换为S3.我用控制台创建了一个桶并把东西放在那里.我还创建了一个子目录(myFolder)并将其公之于众.我创建了我的.aws/credentials文件并尝试使用示例代码,但是我收到以下错误:
在" https://s3.amazonaws.com/gps-photo.org/mykey.txt " 上执行"PutObject"时出错; AWS HTTP错误:客户端错误:
PUT https://s3.amazonaws.com/gps-photo.org/mykey.txt导致403 Forbidden响应:PUT https://s3.amazonaws.com/gps-photo.org/mykey.txt访问DeniedFC49CD(截断...)AccessDenied(客户端):访问被拒绝 -403 Forbidden访问被拒绝 FC49CD15567FB9CD1GTYxjzzzhcL + YyYsuYRx4UgV9wzTCQJX6N4jMWwA39PFaDkK2B9R + FZf8GVM6VvMXfLyI/4abo =
我的代码是
<?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";
}
Run Code Online (Sandbox Code Playgroud)
如果有人能帮助我,那就太好了.谢谢.--Len
小智 14
看起来我遇到了同样的问题.将AmazonS3FullAccess策略添加到您的AWS账户.
布拉登的方法会起作用,但这很危险.用户可以完全访问所有S3存储桶并能够登录控制台.如果网站中使用的凭据受到损害,那么......
更安全的方法是:
通过这种方式,您将拥有仅具有所需访问权限的用户.
小智 2
403 表明您的密钥不正确,或者密钥的路径不正确。您是否已验证该软件包正在加载正确的密钥/myFolder/$keyname?
尝试更简单的方法(而不用担心上传文件类型、路径、权限等)进行调试可能会有所帮助。
$result = $client->listBuckets();
foreach ($result['Buckets'] as $bucket) {
// Each Bucket value will contain a Name and CreationDate
echo "{$bucket['Name']} - {$bucket['CreationDate']}\n";
}
Run Code Online (Sandbox Code Playgroud)
摘自http://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-s3.html另请查看那里的服务构建器。
| 归档时间: |
|
| 查看次数: |
20870 次 |
| 最近记录: |