I am using amazon-php-sdk. In my application I'm accepting key and secret value from a form and passing for connecting to Aws. Here is my code.
<?php
require 'aws-autoloader.php';
use Aws\S3\S3Client;
try {
$s3Client = S3Client::factory(array(
'key' => 'my key',
'secret' => 'my secret key'
));
}
catch(S3Exception $e) {
echo 'Msg' . $e->getMessage();
}
?>
As Michael pointed out, you have to make an actual request to check the connection.AWS discourages any unnecessary validation requests which will affect the performance of your application and your usage bill.
But if you need to validate you can use ListBucket or HEAD request on a bucket.
Checkout this best practises article.
require 'vendor/autoload.php';
use Aws\S3\S3Client;
try {
// Instantiate the S3 client with your AWS credentials
$s3Client = S3Client::factory(array(
'credentials' => array(
'key' => 'YOUR_AWS_ACCESS_KEY_ID',
'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY',
)
));
$buckets = $s3Client->listBuckets();
}
catch(Exception $e) {
exit($e->getMessage());
}
To answer your second question.You can use doesObjectExist function which returns a boolean.