J'ai cherché sur le Web pendant plus de deux jours maintenant et j'ai probablement examiné la plupart des scénarios et solutions de contournement documentés en ligne, mais rien n'a fonctionné pour moi jusqu'à présent.
Je suis sur AWS SDK pour PHP V2.8.7 fonctionnant sur PHP 5.3.
J'essaie de me connecter à mon compartiment S3 avec le code suivant:
// Create a `Aws` object using a configuration file
$aws = Aws::factory('config.php');
// Get the client from the service locator by namespace
$s3Client = $aws->get('s3');
$bucket = "xxx";
$keyname = "xxx";
try {
$result = $s3Client->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'Body' => 'Hello World!'
));
$file_error = false;
} catch (Exception $e) {
$file_error = true;
echo $e->getMessage();
die();
}
//
Mon fichier config.php est le suivant:
<?php
return array(
// Bootstrap the configuration file with AWS specific features
'includes' => array('_aws'),
'services' => array(
// All AWS clients extend from 'default_settings'. Here we are
// overriding 'default_settings' with our default credentials and
// providing a default region setting.
'default_settings' => array(
'params' => array(
'credentials' => array(
'key' => 'key',
'secret' => 'secret'
)
)
)
)
);
Il produit l'erreur suivante:
La signature de demande que nous avons calculée ne correspond pas à la signature que vous avez fournie. Vérifiez votre clé et votre méthode de signature.
J'ai déjà vérifié ma clé d'accès et mon secret au moins 20 fois, j'en ai généré de nouvelles, j'ai utilisé différentes méthodes pour transmettre les informations (c'est-à-dire le profil et les informations d'identification dans le code) mais rien ne fonctionne pour le moment.
secret
supérieure) et l'utilise pour calculer une signature en fonction de votre clé d'accès, de l'horodatage actuel, ainsi que de nombreux autres facteurs. Voir docs.aws.amazon.com/general/latest/gr/… . C'est long, mais étant donné qu'ils incluent l'horodatage, peut-être que l'heure de votre environnement local est désactivée?