Revisé todas las respuestas aquí y parece que mi problema es un poco diferente o no ha habido una solución adecuada. Estoy haciendo lo siguiente en mi archivo PHP:
use Aws\Route53\Route53Client; $client = Route53Client::factory(array( 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2013-04-01' ));Obteniendo este error:
Fatal error: Uncaught Aws\Exception\CredentialsException: Cannot read credentials from /.aws/credentialsParece que la solución fácil sería asegurarse de que el directorio HOME sea el correcto. Efectivamente ya lo es. Los archivos son legibles y mi usuario ec2 ya es el propietario. Key and Secret ya está instalado en el archivo de 'credenciales'. El nombre del perfil ya está configurado como 'predeterminado'. Intenté copiar /.aws a otros directorios como la raíz, /home, etc. y cambié los permisos, chmod, todo lo anterior. Aún nada.
Luego traté de codificar las credenciales (lo sé, no se recomienda) solo para darle una pequeña patada, e ignora por completo que hice esto:
$client = Route53Client::factory(array( 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2013-04-01', 'credentials' => [ 'key' => $key, 'secret' => $secret, ] ));Como último recurso, incluso intenté incluir la clase CredentialProvider y pasar esto a mi matriz, todavía nada:
'credentials' => CredentialProvider::ini('default', '/home/ec2-user/.aws/credentials'),¿Qué diablos estoy haciendo mal?
Simplemente elimine 'profile' => 'default' , y debería funcionar bien
$client = Route53Client::factory(array( 'region' => 'us-east-1', 'version' => 'latest', 'credentials' => [ 'key' => $key, 'secret' => $secret, ] ));Al ejecutar en AWS Centos 7, probé todo (chmod/chown /root /home/user, env, bashrc, etc.) para que /.aws/credentials funcione fuera del directorio apache /var/www. El SDK informó que no pudo leer el archivo de credenciales.
Miré PHP para ver si podía configurar/anular la variable HOME y aún no leyó el archivo de credenciales hasta que coloqué la carpeta .aws en la carpeta '/var/www' y configuré la variable HOME en mi archivo php como asi que:
<%php putenv('HOME=/var/www'); //ZIP File SDK Install requires aws-autoloader require 'aws-autoloader.php'; //Your php code belowEsto es lo que terminé haciendo para esta pregunta, aunque la respuesta anterior de EJ es en realidad la respuesta correcta. Esperemos que esto ayude a alguien a leer su archivo de credenciales:
use Aws\Credentials\CredentialProvider; use Aws\Route53\Route53Client; $profile = 'default'; $path = '/var/www/html/.aws/credentials'; $provider = CredentialProvider::ini($profile, $path); $provider = CredentialProvider::memoize($provider); $client = Route53Client::factory(array( 'region' => 'us-east-1', 'version' => '2013-04-01', 'credentials' => $provider ));