首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从实例配置文件元数据server.Failed检索凭据以连接到169.254.169.254端口80时出错:没有到主机的路由

从实例配置文件元数据server.Failed检索凭据以连接到169.254.169.254端口80时出错:没有到主机的路由
EN

Stack Overflow用户
提问于 2017-06-16 18:23:17
回答 2查看 7.4K关注 0票数 3

我正在尝试使用带有aws-php-sdk的Route53创建一个子域。

但我一次又一次地得到这个错误:

2017-06-16 12:17:00 local.ERROR: Aws\Exception\CredentialsException:从实例配置文件元数据服务器检索凭据时出错。

( /var/www/html/test/vendor/aws/aws-sdk-php/src/Credentials/InstanceProfileProvider.php:79中的cURL错误7:无法连接到169.254.169.254端口80:没有到主机的路由(请参阅http://curl.haxx.se/libcurl/c/libcurl-errors.html))

我使用的是aws-sdk-php版本: 3.29 "aws/aws-sdk-php":"^3.29“

下面是我写的代码

代码语言:javascript
复制
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 
                            ), 
                        ),
                    ),
                ),
          ),
    ));

帮助将是值得欣赏的。提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-01-22 21:42:10

这个问题很老了,但我想留下一个答案,以防有人有类似的问题。

AWS PHP SDK需要凭据才能与AWS通信。凭据称为access key IDsecret access key

正如AWS文档中突出显示的那样

SDK如果您在实例化客户端对象时未提供凭据,

将尝试在您的环境中查找凭据。

根据您的日志,SDK似乎仍在从您的环境中提取存储在~/.aws/credentials中的凭据,而不是使用提供的密钥。

或者确保您的环境变量中有访问密钥和密钥。

代码语言:javascript
复制
$ 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

票数 3
EN

Stack Overflow用户

发布于 2018-04-28 12:46:42

如果您使用php artisan config:cache,请确保除了配置文件( config /*)之外,不要使用env() helper从任何地方访问环境变量。避免在刀片模板中使用env() helper。这是因为,在运行上述命令后调用env() helper将返回null。

取而代之的是使用config file来访问env值。如果config文件夹下的单独配置文件不可用于该供应商的包/服务,那么config/services.php是指向env值的好地方。

php artisan config:cache命令将加快您的应用程序的速度,因为环境变量被缓存,因此在生产环境中建议使用该命令。

有关更多详细信息,请参阅Laravel Configuration Caching

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44586897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档