使用PHP SDK(1.6.2)将特定于文件的ACL添加到S3上载

时间:2013-11-07 13:16:48

标签: php amazon-web-services amazon-s3 acl

我正在使用AWS SDK 1.6.2 for PHP,并希望能够将文件上传到存储桶,默认情况下将其设为私有,然后允许对某些IAM用户进行读取访问。

我创建了一个IAM用户“blah@test.com”,并按如下方式调用上传功能:

$response = $s3->create_object('my-bucket', 'filename.ext', array(
    'fileUpload' => '/path/to/local/file',
    'headers'    => array('Cache-Control' => 'max-age=0'),
    'acl'        => array(
        array('id' => 'blah@test.com', 'permission' => AmazonS3::GRANT_READ)
    ),
));

这会按预期添加标头x-amz-grant-read:emailAddress="blah@test.com",但在执行此操作时,我在响应中收到错误:

Code -> "UnresolvableGrantByEmailAddress"
Message -> "The e-mail address you provided does not match any account on record."

我还尝试使用非电子邮件用户名的IAM用户,并使用完整的亚马逊资源名称(aRN,例如arn:aws:iam::{account_no}:user/{username}),在这种情况下,我收到相应的“无效ID”错误。< / p>

我是否误解了IAM / SDK文档中的某些内容,或者我是否在做其他错误的操作?

1 个答案:

答案 0 :(得分:0)

在传递ACL ID的地方,它应该是IAM用户的实际访问密钥ID。