首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >亚马逊S3 copyObject权限

亚马逊S3 copyObject权限
EN

Stack Overflow用户
提问于 2013-06-03 23:22:22
回答 2查看 37.6K关注 0票数 27

我有一个拥有所有权限的用户。

代码语言:javascript
复制
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*"
    }
  ]
}

我正在使用aws-sdk-php-2在存储桶中放置和复制对象。

http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.S3.S3Client.html

Put代码运行完美

代码语言:javascript
复制
                $client->putObject(array(
                'Bucket'     => 'kiosk',
                'Key'        => 'test/orders/test.csv',
                'SourceFile' => $sourcePath,
            ));

在通过https://console.aws.amazon.com/s3检查对象是否在S3上创建后,我将执行下一个脚本。

代码语言:javascript
复制
        $result = $client->copyObject(array(
        'Bucket' => 'kiosk',
        'CopySource' => 'test/orders/test.csv',
        'Key' => 'test/test.csv',
    ));

我得到了致命的错误:

代码语言:javascript
复制
Fatal error: Uncaught Aws\S3\Exception\S3Exception: AWS Error Code: AllAccessDisabled, Status Code: 403, AWS Request ID: XXX, AWS Error Type: client, AWS Error Message: All access to this object has been disabled, User-Agent: aws-sdk-php2/2.2.1 Guzzle/3.3.1 curl/7.19.7 PHP/5.4.13 thrown in phar:///usr/share/pear/AWSSDKforPHP/aws.phar/src/Aws/Common/Exception/NamespaceExceptionFactory.php on line 89

手动上传文件console.aws.amazon.com/s3后,我在尝试复制时看到不同的错误:

代码语言:javascript
复制
Fatal error: Uncaught Aws\S3\Exception\AccessDeniedException: AWS Error Code: AccessDenied, Status Code: 403, AWS Request ID: XXX, AWS Error Type: client, AWS Error Message: Access Denied, User-Agent: aws-sdk-php2/2.2.1 Guzzle/3.3.1 curl/7.19.7 PHP/5.4.13 thrown in phar:///usr/share/pear/AWSSDKforPHP/aws.phar/src/Aws/Common/Exception/NamespaceExceptionFactory.php on line 89

我还尝试通过console.aws.amazon.com/s3设置文件和文件夹的权限:被授权者: Everyone、打开/下载和查看权限以及编辑权限

但仍然是同样的错误。

EN

回答 2

Stack Overflow用户

发布于 2013-08-31 08:03:29

我发现了这里的问题所在;作为一名AWS新手,我在这里挣扎了一段时间,直到我意识到您为用户设置的每个策略都需要明确允许您正在使用的服务。

在这种情况下,我没有将用户设置为允许进入S3。

转到IAM,然后转到用户,然后单击拥有您正在使用的凭据的特定用户。从那里转到Permissions选项卡,然后单击Attach User Policy并在select policy template下找到S3策略。这应该可以解决您的问题。

希望这能有所帮助!

票数 25
EN

Stack Overflow用户

发布于 2019-05-08 07:44:28

流行的答案是中肯的,但仍然有问题。必须包含ACL选项。

代码语言:javascript
复制
$this->client->copyObject([
  'Bucket'        => $this->bucket,
  // Added the bucket name to the copy source
  'CopySource'    => $this->bucket.'/'.$file,
  'Key'           => str_replace($source, $destination, $file),
  'ACL'           => 'public-read'
]);

ACL可以是这些值之一'ACL‘=> 'private|public-read|public-read-write|authenticated-read|aws-exec-read|bucket-owner-read|bucket-owner-full-control',

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16900245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档