2016-08-18 86 views
1

我想创建一种编程方式来启动/停止我的EC2实例。这是我使用的代码:AWS EC2 PHP SDK凭据不起作用

<?php 
$ec2 = new \Aws\Ec2\Ec2Client([ 
    'credentials' => [ 
    'key' => 'KEY_HERE', 
    'secret' => 'SECRET_HERE' 
], 

    'region' => env('AWS_REGION', 'us-west-2'), 
    'version' => 'latest', 
    'ua_append' => [ 
     'L5MOD/' . AwsServiceProvider::VERSION, 
    ] 
]); 

$result = $ec2->describeInstanceStatus([ 
    'InstanceIds' => ['i-c21a366e'] 
]); 
?> 

当然,我使用的不是“KEY_HERE”和“SECRET_HERE”我实际的密钥。

我得到这个错误,你可以在这个截图中看到:

enter image description here

我想提一提,如果我使用S3服务,一切工作正常。我仅在EC2服务中遇到此问题。

任何想法可能是错误的?

+0

你知道你的账户有哪些IAM政策吗? – error2007s

+0

我创建了一个IAM用户并为其分配了AmazonEC2FullAccess策略。模拟describeInstanteStatus策略返回:http://content.screencast.com/users/alexcontes/folders/Jing/media/49686117-82ef-4e5c-8c5b-4869347484b4/00000064.png所以它只是代码中的一个问题,但使用AWS模拟器工作得很好。 –

回答

0

我终于知道发生了什么,我能够修复它。

看起来像AWS使用服务器时钟授权访问,我需要安装ntp服务并更新它,以便时钟正确同步。

我通过运行安装了NTP服务器:

sudo apt-get install ntp 

然后我使用这些命令更新服务:

sudo service ntp stop 
sudo ntpd -gq 
sudo service ntp start 

而且问题得到了解决。