2016-03-07 45 views
0

一直試圖部署一個自定義AMI *,它具有啓動守護進程和自定義包)我有我的AMI編號/ ID。所以現在做的:通過PHP-SDK在EC2上提供自定義AMI

$result = $ec2Client->runInstances(array(
    'ImageId'  => $privateID, // This is my private AMI number 
    'Region' => 'us-west-2', // EDITED 
    'MinCount'  => 1, 
    'MaxCount'  => 1, 
    'InstanceType' => $InstanceType, 
    'KeyName'  => $keyPairName, 
    'SourceSecurityGroupName' => $securityGroupName, 
    'SourceSecurityGroupOwnerId' => $myID, 
    'UserData'  => $serverID //user-data 
)); 

上面說的是AMI不存在,我的猜測是,這是因爲它是私有的(我想保持私營)。我試圖尋找在EC2類,但沒有找到如何使用私人AMI:http://docs.aws.amazon.com/aws-sdk-php/v2/api/class-Aws.Ec2.Ec2Client.html

我基於這個博客的這個代碼:https://blogs.aws.amazon.com/php/post/TxMLFLE50WUAMR/Provision-an-Amazon-EC2-Instance-with-PHP

編輯:ERROR:

PHP Fatal error: Uncaught exception 'Aws\Ec2\Exception\Ec2Exception' with message 'Error executing "RunInstances" on "https://ec2.us-east-1.amazonaws.com"; AWS HTTP error: Client error: `POST https://ec2.us-east-1.amazonaws.com` resulted in a `400 Bad Request` response: 
<?xml version="1.0" encoding="UTF-8"?> 
<Response><Errors><Error><Code>InvalidAMIID.NotFound</Code><Message>The image id (truncated...) 
InvalidAMIID.NotFound (client): The image id '[ami-b35db1d3]' does not exist - <?xml version="1.0" encoding="UTF-8"?> 
<Response><Errors><Error><Code>InvalidAMIID.NotFound</Code><Message>The image id '[ami-b35db1d3]' does not exist</Message></Error></Errors><RequestID>51d03326-47da-422a-ba21-404614fd1c1b</RequestID></Response>' 

奇怪的是當我的acocunt設置在區域us-west2(abc)

+0

看到了錯誤,你可以試試我的第二個解決方案嗎? – BMW

回答

1

你也需要指出region

'region' => '<region name>' 

或者你能連接aws與提名區域如下?

$client = Ec2Client::factory(array(
    'profile' => '<profile in your aws credentials file>', 
    'region' => 'us-west-2' 
)); 
+0

加入:'Region'=>'us-west-2a';還有同樣的問題 – JSChasle

+0

'us-west-2a'是可用區域(AZ),'us-west-2'是區域 – BMW

+0

我確實將它更改爲us-west-2 - 獲得相同的錯誤。嘗試過的地區和地區(沒有大寫字母R) – JSChasle

相關問題