当前位置:  开发笔记 > 编程语言 > 正文

在AWS上执行"PutObject"时出错,上载失败

如何解决《在AWS上执行"PutObject"时出错,上载失败》经验,为你挑选了3个好方法。

我已经建立了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



1> 小智..:

看起来我遇到了同样的问题.将AmazonS3FullAccess策略添加到您的AWS账户.

登录AWS.

在服务下选择IAM.

选择用户> [您的用户]

打开Permissoins标签

将AmazonS3FullAccess策略附加到该帐户


我不建议授予S3FullAccess,从安全角度和人为错误错误来看,这是一种不好的做法.您应该将策略限制为您正在使用的特定存储桶.

2> MrG..:

布拉登的方法会起作用,但这很危险.用户可以完全访问所有S3存储桶并能够登录控制台.如果网站中使用的凭据受到损害,那么......

更安全的方法是:

    AWS控制台 - > IAM - >策略 - >创建策略

    服务= S3

    动作=(仅限所需的最小值,例如列表和读取)

    资源 - >特定 - >桶 - >添加ARN(只需要所需的桶的ARN)

    资源 - >特定 - >对象 - >检查任何或放置特定对象的ARN

    查看并保存以创建策略

    AWS控制台 - > IAM - >用户 - >添加用户

    访问类型 - >仅检查"程序访问"

    下一页:权限 - >直接附加现有策略

    搜索并选择新创建的策略

    查看并保存以创建用户

通过这种方式,您将拥有仅具有所需访问权限的用户.



3> 小智..:

我遇到了同样的问题,并找到了以下解决方案。

删除线

'ACL'=>'公共读取'

具有列表,读取和写入的默认权限,但没有更改对象特定权限的许可(AWS策略中的PutObjectAcl)。

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有