我已经建立了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 =
我的代码是
'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
看起来我遇到了同样的问题.将AmazonS3FullAccess策略添加到您的AWS账户.
登录AWS.
在服务下选择IAM.
选择用户> [您的用户]
打开Permissoins标签
将AmazonS3FullAccess策略附加到该帐户
布拉登的方法会起作用,但这很危险.用户可以完全访问所有S3存储桶并能够登录控制台.如果网站中使用的凭据受到损害,那么......
更安全的方法是:
AWS控制台 - > IAM - >策略 - >创建策略
服务= S3
动作=(仅限所需的最小值,例如列表和读取)
资源 - >特定 - >桶 - >添加ARN(只需要所需的桶的ARN)
资源 - >特定 - >对象 - >检查任何或放置特定对象的ARN
查看并保存以创建策略
AWS控制台 - > IAM - >用户 - >添加用户
访问类型 - >仅检查"程序访问"
下一页:权限 - >直接附加现有策略
搜索并选择新创建的策略
查看并保存以创建用户
通过这种方式,您将拥有仅具有所需访问权限的用户.
我遇到了同样的问题,并找到了以下解决方案。
删除线
'ACL'=>'公共读取'
具有列表,读取和写入的默认权限,但没有更改对象特定权限的许可(AWS策略中的PutObjectAcl)。