2016-08-18 87 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 

而且問題得到了解決。