У меня есть настройка адреса электронной почты amazon workmail для автоматической пересылки электронной почты в корзину s3. Затем у меня есть файл php, который захватывает необработанный файл электронной почты из ведра s3, а затем удаляет его (каждые 2 минуты).
В любом случае моя проблема в том, что у меня ведро s3 установлено для общего доступа. однако, когда объект помещается в корзину, ему автоматически не предоставляется уровень разрешений общего доступа. Так я думаю, что я сделал что-то не так ??
Я использую SDK Amazon pkp для подключения к корзине с IAM_KEY и IAM_SECRET. Однако я обнаружил, что мне все еще нужно вручную сделать объекты в ведре общедоступными, чтобы получить к ним доступ?
Вот мой код sdk aws
//Include the AWS SDK using the Composer autoloader.
require 'awssdk/aws-autoloader.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
// AWS Info
$bucketName = 'pipedemail';
$IAM_KEY = '***';
$IAM_SECRET = '***';
// Connect to AWS
try {
// You may need to change the region. It will say in the URL when the bucket is open
// and on creation. us-east-2 is Ohio, us-east-1 is North Virgina
$s3 = S3Client::factory(
array(
'credentials' => array(
'key' => $IAM_KEY,
'secret' => $IAM_SECRET
),
'version' => 'latest',
'region' => 'us-east-1'
)
);
} catch (Exception $e) {
// We use a die, so if this fails. It stops here. Typically this is a REST call so this would
// return a json object.
die("Error: " . $e->getMessage());
}
Я считаю, что у вас может быть общий доступ только для списка, но вы также должны разрешить чтение на уровне объекта. (Это будет открыто для публики, так что будьте осторожны)
Попробуйте проверить политику корзины: https://docs.aws.amazon.com/cli/latest/reference/s3api/get-bucket-policy.html или https://docs.aws.amazon.com/AmazonS3/latest/user-guide/bucket-permissions-check.html
Можете ли вы опубликовать политику из чего-то вроде:
aws s3api get-bucket-policy --bucket pipedemail --query Policy --output text > policy.json