在AWS s3文件夹上传(uploadDirectory)期间ACL不适用
问题描述:
由于某些原因,当我将文件夹上传到S3存储桶时,没有应用公开阅读。 (IE,公众无法访问文件)在AWS s3文件夹上传(uploadDirectory)期间ACL不适用
文件上传正常,但它们都设置为私人。尝试了我能想到的一切。感觉就像我缺少一些基本的东西。
使用本指南: https://blogs.aws.amazon.com/php/post/Tx2W9JAA7RXVOXA/Syncing-Data-with-Amazon-S3
这里是我的代码:
require '../vendor/autoload.php';
use Aws\S3\S3Client;
$client = S3Client::factory(array(
'version' => '2006-03-01',
'region' => 'ap-southeast-2',
'credentials' => array(
'key' => 'MYKEY',
'secret' => 'MYSECRET',
)
));
$dir = 'assets';
$bucket = 'gittestbucket';
$keyPrefix = 'assets';
$options = array(
'params' => array('ACL' => 'public-read'),
'concurrency' => 20,
'debug' => true
);
$UploadAWS = $client->uploadDirectory($dir, $bucket, $keyPrefix, $options);
var_dump($UploadAWS);
我的IAM用户策略(也有一组列表的所有桶):
{
"Statement": [
{
"Action": "s3:*",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::gittestbucket",
"arn:aws:s3:::gittestbucket/*",
]
}
]
}
任何非常感谢。干杯
答
我一直在努力回来。
试着改变你上传声明这一个波纹管
$UploadAWS = $client->uploadDirectory($dir, $bucket, $keyPrefix, array(
'concurrency' => 20,
'debug' => true,
'before' => function (\Aws\Command $command) {
$command['ACL'] = strpos($command['Key'], 'CONFIDENTIAL') === false
? 'public-read'
: 'private';
}
));
AWS是它的文档有时令人震惊的,因为它改变了这么多
谢谢!这样可行。不知道为什么他们记录的例子不起作用。非常令人沮丧。 –