Configure AWS SDK for PHP
- Install the AWS SDK for PHP using Composer. This SDK allows you to interact with Amazon S3 API in a PHP environment.
composer require aws/aws-sdk-php
- Include the Composer autoloader in your PHP script to load the SDK.
require 'vendor/autoload.php';
- Initialize the S3 client with your credentials. Replace `your-access-key`, `your-secret-key`, and `your-region` with your actual AWS credentials and region.
use Aws\S3\S3Client;
$s3 = new S3Client([
'version' => 'latest',
'region' => 'your-region',
'credentials' => [
'key' => 'your-access-key',
'secret' => 'your-secret-key',
],
]);
Create a Bucket
- Creating a new bucket is straightforward. Specify a unique bucket name.
try {
$result = $s3->createBucket([
'Bucket' => 'your-unique-bucket-name',
]);
echo "Bucket created: " . $result['Location'];
} catch (Aws\Exception\AwsException $e) {
echo "Error: " . $e->getMessage();
}
Upload Files to a Bucket
- To upload files, use the `putObject` function. Provide the bucket name, file key (name in the bucket), and the source file path.
try {
$result = $s3->putObject([
'Bucket' => 'your-bucket-name',
'Key' => 'your-file-key',
'SourceFile' => '/path/to/your/file',
]);
echo "File uploaded: " . $result['ObjectURL'];
} catch (Aws\Exception\AwsException $e) {
echo "Error: " . $e->getMessage();
}
List Objects in a Bucket
- Retrieve a list of objects stored in a bucket using the `listObjects` method.
try {
$result = $s3->listObjects([
'Bucket' => 'your-bucket-name',
]);
foreach ($result['Contents'] as $object) {
echo $object['Key'] . "\n";
}
} catch (Aws\Exception\AwsException $e) {
echo "Error: " . $e->getMessage();
}
Download Files from a Bucket
- Download a file from your S3 bucket using the `getObject` method, specifying the bucket and key.
try {
$result = $s3->getObject([
'Bucket' => 'your-bucket-name',
'Key' => 'your-file-key',
]);
file_put_contents('/path/to/save/file', $result['Body']);
echo "File downloaded successfully.";
} catch (Aws\Exception\AwsException $e) {
echo "Error: " . $e->getMessage();
}
Delete Files from a Bucket
- Use the `deleteObject` method to remove files from a bucket by specifying the bucket and the file’s key.
try {
$result = $s3->deleteObject([
'Bucket' => 'your-bucket-name',
'Key' => 'your-file-key',
]);
echo "File deleted successfully.";
} catch (Aws\Exception\AwsException $e) {
echo "Error: " . $e->getMessage();
}
Delete a Bucket
- Ensure that the bucket is empty before attempting to delete it, then use the `deleteBucket` method.
try {
$result = $s3->deleteBucket([
'Bucket' => 'your-bucket-name',
]);
echo "Bucket deleted successfully.";
} catch (Aws\Exception\AwsException $e) {
echo "Error: " . $e->getMessage();
}
Manage Permissions
- Managing permissions involves setting bucket or object access policies. Utilize the `putBucketPolicy` method to set policies.
$policy = '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}';
try {
$result = $s3->putBucketPolicy([
'Bucket' => 'your-bucket-name',
'Policy' => $policy,
]);
echo "Bucket policy set successfully.";
} catch (Aws\Exception\AwsException $e) {
echo "Error: " . $e->getMessage();
}
Conclusion
- These snippets provide a robust starting point for managing cloud storage through Amazon S3 with PHP. Always handle exceptions and errors properly to create a resilient application.