通过AWS PHP SDK授予IAM用户对AWS S3文件的权限

通过AWS PHP SDK授予IAM用户对AWS S3文件的权限,php,amazon-web-services,amazon-s3,amazon-iam,Php,Amazon Web Services,Amazon S3,Amazon Iam,有没有办法通过AWS PHP SDK授予特定IAM用户或组对AWS S3文件的完全权限 我尝试了以下命令: // Grant permissions via user id $s3->putObjectAcl(array( 'Bucket' => '[Bucket name]', 'Key' => '[File location in bucket]', 'Grants' => array( array

有没有办法通过AWS PHP SDK授予特定IAM用户或组对AWS S3文件的完全权限

我尝试了以下命令:

// Grant permissions via user id
$s3->putObjectAcl(array(
    'Bucket'       => '[Bucket name]',
    'Key'          => '[File location in bucket]',
    'Grants' => array(
        array(
            'Grantee' => array(
                'ID' => '[User ID from IAM API]',
                'Type' => 'CanonicalUser'
            ),
            'Permission' => 'FULL_CONTROL'
        )
    )
));

// Grant permissions via group id
$s3->putObjectAcl(array(
    'Bucket'       => '[Bucket name]',
    'Key'          => '[File location in bucket]',
    'Grants' => array(
        array(
            'Grantee' => array(
                'ID' => '[Group ID from IAM API]',
                'Type' => 'Group'
            ),
            'Permission' => 'FULL_CONTROL'
        )
    )
));
但它们总是抛出以下错误:

 Argument format not recognized
有人能告诉我我做错了什么吗


任何帮助都将不胜感激。

在上面的代码中,您没有指定源文件,因此引发了错误。下面是更新的代码,它将帮助您解决此问题

// Grant permissions via user id
 $s3->putObjectAcl(array(
      'Bucket'       => '[Bucket name]',
      'Key'          => '[File location in bucket]',
      'SourceFile'   => '[File to be uploaded location]',   // add this line
      'Grants' => array(
         array(
             'Grantee' => array(
             'ID' => '[User ID from IAM API]',
             'Type' => 'CanonicalUser'
         ),
             'Permission' => 'FULL_CONTROL'
      )
    )
 ));

这很有效。谢谢你的帮助!另外,对于其他在授权方面遇到问题的人,我发现使用ACP属性更容易调用特定于用户的权限。