I have access to this bucket as I'm able to pull single files from it as such:
public function show_s3_object($file_key) {
$s3_bucket = getenv('S3_BUCKET');
$s3_key = getenv('S3_KEY');
$s3_secret = getenv('S3_SECRET');
if(!empty($file_key))
{
$credentials = new Credentials($s3_key, $s3_secret);
$bucket = $s3_bucket;
$s3Client = new S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => $credentials
]);
$cmd = $s3Client->getCommand('GetObject', [
'Bucket' => $bucket,
'Key' => $file_key
]);
$request = $s3Client->createPresignedRequest($cmd, '+10 minutes');
$signedUrl = (string) $request->getUri();
return $signedUrl;
}
}
However when I list objects I get a 403 forbidden. Now there's multiple ways to do this apparently. I tried most of them like
$cmd = $s3Client->getCommand('ListObjects', [
'Bucket' => $bucket
]);
or
$cmd = $s3client->listObjects([
'Bucket' => $bucket
]);
Currently on this but still 403 error:
public function list_objects() {
//correct code semmingly but getting 403 forbidden
$s3_bucket = getenv('S3_BUCKET');
$s3_key = getenv('S3_KEY');
$s3_secret = getenv('S3_SECRET');
$credentials = new Credentials($s3_key, $s3_secret);
$s3Client = new S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => $credentials
]);
try {
$objects = $s3Client->getIterator('ListObjects', array(
'Bucket' => $s3_bucket
));
echo "Keys retrieved!\n";
foreach ($objects as $object) {
echo $object['Key'] . "\n";
}
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}
}
Why would I be able to access single objects but not a list of them?