Założyłem akta AWS. i próbuję zrobić mój pierwszy programowy PUT na S3. Użyłem konsoli, aby stworzyć wiadro i umieścić tam rzeczy. Stworzyłem również podkatalog (myFolder) i upubliczniłem go. Tworzę .aws/złożyć poświadczenia i próbowałem za pomocą kodów przykładowych, ale pojawia się następujący błąd:Błąd podczas wykonywania "PutObject" na AWS, przesyłanie nie powiodło się
Error executing "PutObject" on "https://s3.amazonaws.com/gps-photo.org/mykey.txt"; AWS HTTP error: Client error: `PUT https://s3.amazonaws.com/gps-photo.org/mykey.txt` resulted in a `403 Forbidden` response:
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>FC49CD (truncated...)
AccessDenied (client): Access Denied - <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message <RequestId>FC49CD15567FB9CD</RequestId><HostId>1GTYxjzzzhcL+YyYsuYRx4UgV9wzTCQJX6N4jMWwA39PFaDkK2B9R+FZf8GVM6VvMXfLyI/4abo=</HostId></Error>
mojego kodu jest
<?php
// Include the AWS SDK using the Composer autoloader.
require '/home/berman/vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
$bucket = 'gps-photo.org';
$keyname = 'my-object-key';
// Instantiate the client.
$s3 = S3Client::factory(array(
'profile' => 'default',
'region' => 'us-east-1',
'version' => '2006-03-01'
));
try {
// Upload data.
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => "myFolder/$keyname",
'Body' => 'Hello, world!',
'ACL' => 'public-read'
));
// Print the URL to the object.
echo $result['ObjectURL'] . "\n";
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}
Jeśli ktoś może mi pomóc, że byłoby świetnie . Dzięki. --Len
Sprawdziłem aws_access_key_id i jest on poprawny. Wypróbowałem uproszczoną prośbę podaną powyżej i otrzymałem ten sam błąd. Nie wiem, jak sprawdzić, czy tajny klucz jest poprawny, ale ponieważ wykonano go z wycięciem i wklejeniem, nie widzę powodu, aby podejrzewać, że jest niepoprawny. Wygląda mi na problem z konfiguracją. – LenB
Czy próbowałeś po prostu 'file_get_contents' i' echo' klawisz? Ładujesz go obecnie z 'myFolder/my-object-key'. Czy to właściwa ścieżka? Powinieneś być w stanie 'print_r (file_get_contents ('myFolder/my-object-key'))' Problem niekoniecznie jest kluczem jest niepoprawny (jednak byłbyś zaskoczony, że kopiowanie i wklejanie często może powodować niepoprawne znaki, jeśli nie jest bezpieczny), jest to, że ścieżka do klucza jest prawdopodobnie niepoprawna. – Denault