I'm using the aws sdk to connect to an s3 bucket. I have built an IAM Policy to allow read using "s3:GetObject", "s3:GetObjectAcl" and "s3:ListBucket" and I can use the AWS cli to view objects and list files (including with listobjectsv2). When I use:
$file = $s3client->getObject([
'Bucket' => $bucket,
'Key' => $key,
]);
$body = $file->get('Body');
$body->rewind();
echo "Downloaded the file and it begins with: {$body->read(26)}.\n";
I can view file contents but when I try:
$contents = $s3client->listObjectsV2([
'Bucket' => $bucket
]);
echo "The contents of your bucket are: \n";
foreach ($contents['Contents'] as $content) {
echo $content['Key'] . "\n";
I receive a super helpful error:
Fatal error: Uncaught Error: Class 'SimpleXMLElement' not found in /var/www/html/vendor/aws/aws-sdk-php/src/Api/Parser/PayloadParserTrait.php:39 Stack trace: ....
It goes on but I figure it's all trash so not continuing.
I grabbed the code straight from: https://docs.aws.amazon.com/code-samples/latest/catalog/php-s3-s3_basics-GettingStartedWithS3.php.html
Any suggestions on what is wrong?
My Answer:
the ListObjectsV2 action on the bucket. Here is an example of how you can use the ListObjectsV2 operation in a PHP page:
php
require 'vendor/autoload.php'; // Include the AWS SDK for PHP
use Aws\S3\S3Client;
// Set up the AWS credentials
$credentials = new Aws\Credentials\Credentials('YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY');
// Set up the S3 client
$s3Client = new S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => $credentials
]);
// Specify the bucket name
$bucket = 'YOUR_BUCKET_NAME';
// List objects in the bucket
$objects = $s3Client->listObjectsV2([
'Bucket' => $bucket
]);
// Output the object keys
foreach ($objects['Contents'] as $object) {
echo $object['Key'] . "\n";
}
?>
Make sure to replace 'YOUR_ACCESS_KEY', 'YOUR_SECRET_KEY', and 'YOUR_BUCKET_NAME' with your actual AWS credentials and bucket name. This code will list all the object keys in the specified S3 bucket.
Rate this post
5 of 5 based on 8320 votesComments