我正在尝试使用带有aws-php-sdk的Route53创建一个子域。
但是我一次又一次地收到这个错误:
[2017-06-16 12:17:00] local.ERROR:Aws \ Exception \ CredentialsException:从实例配置文件元数据服务器检索凭据时出错。
(cURL错误7:无法连接到169.254.169.254端口80:无路由到主机(请参阅http://curl.haxx.se/libcurl/c/libcurl-errors.html))/ var / www / html / test / vendor / aws / aws-sdk-php /src/Credentials/InstanceProfileProvider.php:79
我使用的是aws-sdk-php版本:3.29 " aws / aws-sdk-php":" ^ 3.29"
这是我的书面代码
use Aws\Route53\Route53Client;
$client = Route53Client::factory(array(
'region' => 'us-east-1',
'version' => '2013-04-01',
'credentials ' => array('key'=>'AWS_KEY',
'secret'=>'AWS_SECRET_KEY')
));
$result = $client->changeResourceRecordSets(array(
// HostedZoneId is required
'HostedZoneId' => 'ROUTER_53_HOSTED_ZONE_ID',
// ChangeBatch is required
'ChangeBatch' => array(
// Changes is required
'Changes' => array(
array(
// Action is required
'Action' => 'CREATE',
// ResourceRecordSet is required
'ResourceRecordSet' => array(
// Name is required
'Name' => 'test2.xyz.co.in.',
// Type is required
'Type' => 'A',
'TTL' => 600,
"AliasTarget"=> array(
"HostedZoneId"=> "LOAD_BALANCER_ZONE_ID",
"DNSName"=> "LOAD_BALANCER_DOMAIN_NAME",
"EvaluateTargetHealth"=> false
),
),
),
),
),
));
帮助将是值得的。提前谢谢。
答案 0 :(得分:0)
这个问题已经很老了,但我想在有人遇到类似问题时给出答案。
AWS PHP SDK需要凭据才能与AWS通信。凭据称为access key ID
和secret access key
。
正如AWS文档中所强调的那样
如果您在实例化时未向客户端对象提供凭据,SDK将尝试在您的环境中查找凭据。
根据您的日志,似乎SDK仍在从您的环境中提取存储在〜/ .aws / credentials中的凭据,而不是使用提供的密钥。
确保您的环境变量中有访问密钥和密钥。
$ less ~/.aws/credentials
[default]
aws_access_key_id = key
aws_secret_access_key = secret
或
清除配置缓存以强制使用在客户端实例化中声明的显式凭据。以防它们被缓存。
php artisan config:cache
另请参阅此文档,了解如何正确设置客户端。
https://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/credentials.html
答案 1 :(得分:0)
如果你使用
php artisan config:cache
确保不使用env()帮助程序从配置文件(config / *)以外的任何地方访问env变量。避免在刀片模板中使用env()帮助程序。这是因为在运行上述命令后调用env()helper将返回null。
而是使用config file来访问env值。如果config文件夹下的单独配置文件不可用于该供应商包/服务,则config / services.php是指向env值的好地方。
php artisan config:cache
命令将加速您的应用,因为env变量已缓存,因此建议在生产环境中使用。
有关详细信息,请参阅Laravel Configuration Caching。