Попытка создать экземпляр ec2client w.r.tНевозможно создать экземпляр Aws EC2 Ec2Client
$ec2Client = \Aws\Ec2\Ec2Client::factory(array(
'profile' => 'default',
'region' => 'us-west-2',
'version' => '2014-10-01'
));
но с ошибкой
Uncaught exception 'Aws\Common\Exception\CredentialsException' with message 'Could not load credentials.'
У меня есть:
cat ~/.aws/credentials
[default]
aws_access_key_id = xxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxx
Я использую aws- sdk через композитор "aws/aws-sdk-php": "3.*@dev"
.
Редактировать 1): Я пробовал это на своей локальной машине разработки.
Edit 2): Я попытался это:
use Aws\Common\Credentials\InstanceProfileProvider;
$profile= new InstanceProfileProvider(['profile'=>'default']);
$ec2Client = \Aws\Ec2\Ec2Client::factory(array(
'region' => 'us-west-2',
'version' =>'2014-10-01',
'credentials' => $profile
));
Это дает мне другую ошибку:
'Error retrieving credentials from the instance profile metadata server. When you are not running inside of Amazon EC2, you must provide your AWS Access Key ID and Secret Access Key in the "key" and "secret" options when creating a client or provide an instantiated Aws\Common\Credentials\CredentialsInterface object. (cURL error 28: Connection timed out after 1000 milliseconds)' in .. /InstanceProfileProvider.php:9 ..
Это дает мне ощущение, что учетные профили только тогда, когда приложение работает внутри АМС облачный экземпляр! Что делает идею профилей бесполезных (что когда они предназначены для Дев среды)
Edit 3)
После отладки это, кажется, что с SDK верительных профилей сломаны или не как ожидалось. Оба значения credential profiles
и environment variable
зависят от переменных среды. Если переменные окружения отключены, они будут терпеть неудачу.
Возможная работа вокруг:
а) Enable environment variables
б) Установите HOME EVN переменной
putenv('HOME=/Users/yourname');
$ec2Client = \Aws\Ec2\Ec2Client::factory(array(
'region' => 'us-west-2',
'version' => '2014-10-01'
));
Profile init()
функция имеет параметр имени файла, но не существует очевидный способ пройти credentails профиля пути, кроме HOME env
переменная
Aws\Common\Credentails\Profiler->init()
public static function ini($profile = null, $filename = null){
...
}
Опять же, если вы не можете прочитать /Users/yourname/.aws/credentials
файл, вы должны настроить его немного
chmod 644 /Users/yourname/.aws/credentials
очень нравится это: http://stackoverflow.com/questions/27400563/aws-sdk-for-php-error-retrieving-credentials-from-the-instance-profile-metadata – sakhunzai