Inicio
Internet, Informática y Tecnología

Solución AWS SDK PHP "Cannot read credentials from ~/.aws/credentials"

aws sdk php page

Hace tiempo use el SDK de AWS para PHP de Amazon y al querer usar credenciales personalizadas mediante Variables o con Variables de entorno me salía el error "Cannot read credentials from ~/.aws/credentials". Esto significa que el SDK pasara lo que pasara, siempre quería usar las credenciales del archivo "~/.aws/credentials".

aws sdk php page

El código que usaba originalmente es:

<?php
use Aws\Credentials\CredentialProvider;
$profile = 'sns-reminders';
$path = '../private/credentials';
$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);
$sdk = new Aws\Sdk(['credentials' => $provider]);
$sns = $sdk->createSns([
        'profile' => $profile,
        'region'  => 'us-east-1',
        'version' => 'latest',
]);

Solución al error

Después de depurar un rato me di cuenta de que si colocamos el nombre del perfil al momento de crear una instancia con createSns() este se iba directamente a buscar las credenciales en el archivo "~/.aws/credentials". Por lo tanto la solución es quitar el nombre del perfil de ahí y listo. Tendría que quedar algo así:

<?php
use Aws\Credentials\CredentialProvider;
$profile = 'sns-reminders';
$path = '../private/credentials';
$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);
$sdk = new Aws\Sdk(['credentials' => $provider]);
$sns = $sdk->createSns([
        'region'  => 'us-east-1',
        'version' => 'latest',
]);

Noten que se quitó la parte de 'profile' => $profile.

Esto funciona con la versión 3 del SDK con cualquier perfil, yo en este caso estaba usando el servicio de AWS SNS.

Github del SDK: AWS SDK PHP

Categorías
Etiquetas
Alan D.
Fundador, Administrador y Editor.

Soy el fundador, administrador y editor de este pequeño sitio. Entusiasta por las tecnologías de la información e Internet.

Tengo conocimientos básicos en electrónica, inglés, algunos lenguajes de programación, bases de datos, servicios en la nube, Windows, Linux, finanzas personales y contaduría. Por esta razón el contenido de este sitio es un poco variado. Tengo este sitio web desde el 2009.

Contenido relacionado