我正在使用适用于 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 文档中的某些内容,或者我做错了其他事情?
在您传递 ACL ID 的位置,它应该是 IAM 用户的实际访问密钥 ID。