Amazon S3 copyObject autorisation
I v a obtenu de l'utilisateur avec toutes les autorisations.
{
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
Je suis en utilisant aws-sdk-php-2 et copier des objets dans un seau.
http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.S3.S3Client.html
Mettre le code fonctionne parfaitement
$client->putObject(array(
'Bucket' => 'kiosk',
'Key' => 'test/orders/test.csv',
'SourceFile' => $sourcePath,
));
Après vérifier si l'objet créé sur S3 par https://console.aws.amazon.com/s3 je suis d'exécution de script suivante.
$result = $client->copyObject(array(
'Bucket' => 'kiosk',
'CopySource' => 'test/orders/test.csv',
'Key' => 'test/test.csv',
));
Et j'obtiens l'erreur fatale:
Fatal error: Uncaught Aws\S3\Exception\S3Exception: AWS Error Code: AllAccessDisabled, Status Code: 403, AWS Request ID: XXX, AWS Error Type: client, AWS Error Message: All access to this object has been disabled, User-Agent: aws-sdk-php2/2.2.1 Guzzle/3.3.1 curl/7.19.7 PHP/5.4.13 thrown in phar:///usr/share/pear/AWSSDKforPHP/aws.phar/src/Aws/Common/Exception/NamespaceExceptionFactory.php on line 89
Après l'upload de fichier manuellement console.aws.amazon.com/s3 je vois d'erreur lors de la tentative de copie:
Fatal error: Uncaught Aws\S3\Exception\AccessDeniedException: AWS Error Code: AccessDenied, Status Code: 403, AWS Request ID: XXX, AWS Error Type: client, AWS Error Message: Access Denied, User-Agent: aws-sdk-php2/2.2.1 Guzzle/3.3.1 curl/7.19.7 PHP/5.4.13 thrown in phar:///usr/share/pear/AWSSDKforPHP/aws.phar/src/Aws/Common/Exception/NamespaceExceptionFactory.php on line 89
J'ai aussi essayer de définir des autorisations sur les fichiers et de dossiers via console.aws.amazon.com/s3
:
Bénéficiaire: tout le monde, Ouvrir/Télécharger et Afficher la Permission et l'Autorisation Modifier
Mais toujours la même erreur.
Pour quelqu'un qui a cette question, je pensais que je voudrais partager ma résolution de Mon problème était que j'avais téléchargé un fichier avec un seul compte d'utilisateur, et essayé de le copier à un autre utilisateur qui a entraîné dans l'erreur accès refusé.
OriginalL'auteur jwachol | 2013-06-03
Vous devez vous connecter pour publier un commentaire.
Je sais que c'est une vieille question, mais je suis tombé sur le même problème récemment, pendant les travaux sur un projet de legs.
Tous les autres mes S3 appels marché, sauf pour
copyObject
continué à jeter un ACCÈS REFUSÉ erreur. Après quelques recherches, j'ai finalement compris pourquoi.Je passais juste la clé et en faisant l'hypothèse que le seau d'être passé était ce que la source et la destination. S'avère que c'est une hypothèse erronée. La source doit ont le seau nom de préfixe.
C'était ma solution:
Il me dit "Accès Refusé" parce qu'il pense que la première partie de votre clé/dossier est en fait le nom du seau qui n'existe pas ou vous n'avez pas accès à.
Espère que ça aide un peu les gens!
aws s3api copy-object
de commande. Vous devez fournir le seau de nouveau de nom dans le cadre de la--key
argument même si vous avez spécifié pour la--bucket
argument et que vous copiez dans le même compartiment.merci, c'est un travail pour moi. Mais ne peuvent pas obtenir le résultat de la réponse
Évitez d'un slash à la clé
Vous êtes un absolu de la vie de veille. J'avais été de débogage ce pendant environ une heure, mais j'ai passé beaucoup plus de temps sur elle. Je vous remercie. Pour info, vous n'avez pas besoin de seau nom de la nouvelle " Clé " vous êtes en train de créer, juste le 'CopySource'.
Nice. Ne pas faire attention à ce que dans les docs ils ont mis cette astuce
CopySource: "/sourcebucket/HappyFacejpg",
.OriginalL'auteur Jeremy Harris
Découvert que la question est ici; le fait d'être une AWS newbie j'ai lutté ici pour un peu jusqu'à ce que j'ai réalisé que chaque politique pour les utilisateurs que vous définissez doit prévoir clairement le service que vous utilisez.
Dans ce cas, je n'avais pas mis le nom d'utilisateur pour être admis dans la S3.
Goto IAM then goto Utilisateurs et cliquez sur l'utilisateur qui possède les informations d'identification que vous utilisez. À partir de là goto onglet Autorisations, puis cliquez sur Joindre Utilisateur de la Politique et de trouver le S3 politique sous sélectionner le modèle de stratégie. Cela devrait résoudre votre problème.
Espère que ça aide!
OriginalL'auteur Petrogad