我正在尝试使用 AWS PHP SDK2 更改 S3 上特定存储桶中所有对象的元数据。我很难找到使用新 SDK 的特定示例,但拼凑了以下内容:
$OBJ_aws_s3 = S3Client::factory($config);
$objects = $OBJ_aws_s3->getIterator('ListObjects', array(
'Bucket' => $bucket,
'MaxKeys' => 10
));
foreach($objects as $object) {
$key = $object['Key'];
echo "Processing " . $key . "\n";
$response = $OBJ_aws_s3->copyObject(array(
'Bucket' => $bucket,
'Key' => $key,
'CopySource' => $key,
'Metadata' => array(
'Cache-Control' => 'max-age=94608000',
'Expires' => gmdate('D, d M Y H:i:s T', strtotime('+3 years'))
),
'MetadataDirective' => 'REPLACE',
));
}
foreach
循环成功地遍历了给定 $bucket 中的前 10 个项目,但我在操作中收到 403错误copyObject()
:
Uncaught Aws\S3\Exception\AccessDeniedException: AWS Error Code: AccessDenied, Status Code: 403
我不确定这是否是由于传递给 copyObject 的值不正确,还是因为 S3 中的某些设置。请注意,我尚未在 IAM 中创建权限受限帐户,并且正在使用应该对对象拥有所有权限的基本帐户。
任何帮助表示赞赏。