Prerequisites
- Ensure that you have AWS SDK for PHP installed. This can be achieved using Composer by executing the following command:
composer require aws/aws-sdk-php
- Make sure you have your AWS credentials stored securely in your environment or in the AWS credentials file.
Configure Your S3 Bucket
- Create an S3 bucket to host your static website. Ensure that the bucket name is unique across AWS.
- Enable static website hosting in the bucket settings and set up necessary configurations like index and error documents (e.g., index.html and error.html).
- Set the right permissions to make your bucket content publicly accessible. Attach a bucket policy that allows public access:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
Connect and Upload Files via PHP
- Initialize the AWS S3 client. Create a PHP script and include the AWS SDK:
require 'vendor/autoload.php';
use Aws\S3\S3Client;
// Instantiate the S3 client with your AWS credentials
$s3Client = new S3Client([
'version' => 'latest',
'region' => 'us-west-2', // Specify your bucket's region
]);
// Your bucket name
$bucket = 'your-bucket-name';
- Define a function to upload files to the S3 bucket. Make sure to set the appropriate ACL to make the files publicly accessible:
function uploadFileToS3($s3Client, $bucket, $keyName, $filePath)
{
try {
// Upload data
$result = $s3Client->putObject([
'Bucket' => $bucket,
'Key' => $keyName,
'SourceFile' => $filePath,
'ACL' => 'public-read',
]);
return $result->get('ObjectURL');
} catch (Aws\Exception\S3Exception $e) {
echo $e->getMessage();
return false;
}
}
- Use the function to upload your static website files:
$filePath = '/path/to/your/index.html';
$keyName = 'index.html';
$url = uploadFileToS3($s3Client, $bucket, $keyName, $filePath);
if ($url) {
echo "File uploaded successfully: $url";
}
Test Your Website
- Navigate to the S3 static website endpoint to access your hosted site. The URL format is typically `http://your-bucket-name.s3-website.region.amazonaws.com`.
- Ensure that your website loads properly and all resources are accessible. Use your browser's developer tools to troubleshoot any missing assets or permissions issues.
Maintaining and Updating Your Host
- Whenever your static assets are updated, rerun the PHP upload script to refresh files on S3.
- Consider using versioning on your S3 bucket to manage changes and maintain a history of uploaded files.