我正在使用适用于 PHP 的 AWS 开发工具包 1.6.2,并且希望能够将文件上传到存储桶,默认情况下将其设为私有,然后允许某些 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 用户以及使用完整的 Amazon 资源名称(aRN,例如arn:aws:iam::{account_no}:user/{username}
),在这种情况下,我会收到相应的“无效 ID”错误。
我是否误解了 IAM/SDK 文档中的某些内容,或者我做错了什么?