使用 PHP 开发工具包 (1.6.2) 将特定于文件的 ACL 添加到 S3 上传


Adding file-specific ACL to S3 upload using PHP SDK (1.6.2)

我正在使用适用于 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。