API kompatybilne z AWS EC2

Amazon EC2 (Amazon Elastic Compute Cloud)

Amazon EC2, czyli Amazon Elastic Compute Cloud to jedna z podstawowych usług Amazon Web Services. Jest to elastyczna chmura publiczna, gdzie instancje AWS EC2, to serwery wirtualne typu VPS.

API e24cloud w połączeniu z Amazon EC2

API kompatybilne z AWS EC2 udostępnia limitowaną zgodność metod udostępnianych do zarządzania wirtualnymi zasobami, takimi jak wirtualne maszyny, wirtualne dyski, sieci prywatne. Każda lokalizacja posiada własny endpoint API:

  • Lokalizacja: Poznań DC1 - https://eu-poland-1poznan.api.e24cloud.com
  • Lokalizacja: Poznań DC2 - https://eu-poland-1poznan2.api.e24cloud.com

Przykładowy kod PHP - API kompatybilne z AWS EC2

Przykładowy kod PHP, korzystający z API zgodnym z EC2 z użyciem AWS-SDK for PHP.

Inicjalizacja połączenia przez API kompatybilne z AWS EC2

$client = new \Aws\Ec2\Ec2Client([
    'version' => '2015-04-15',
    "credentials" => [
        "key" => " api key",
        "secret" => " api secret ",

     ],
    'region' => 'eu-poland-1poznan',
    'endpoint_provider' => function (array $params) {
       return ['endpoint' => 'https://'.$params['region'].'.api.e24cloud.com'];
    },

    'signature_provider' => function ($version, $service, $region) {
      return new \Aws\Signature\SignatureV2();
    },

]); 

Listowanie obrazów przez API kompatybilne z AWS EC2

$result = $client->describeImages();

foreach($result['Images'] as $image) {
 echo "ImageId: ".$image['ImageId'].', Name: '.$image['Name'], PHP_EOL;
}

Utworzenie wirtualnej maszyny przez API kompatybilne z AWS EC2

$result = $client->runInstances(array(
    'ImageId' => 'ami-000006d8', // ImageId z describeImages
    'MinCount' => 1,
    'MaxCount' => 1,
    'InstanceType' => 'm1.xlarge',
));

Listowanie wirtualnych maszyn przez API kompatybilne z AWS EC2

$result = $client->describeInstances();

foreach($result['Reservations'] as $reservation) {
 foreach($reservation['Instances'] as $instance) {
  echo 'id: '.$instance['InstanceId'].', type: '.$instance['InstanceType'].', State: '.$instance['State']['Name'].', PublicIp: '.$instance['PublicIpAddress'], PHP_EOL;
 }
}

Wyłączenie wirtualnej maszyny przez API kompatybilne z AWS EC2

$client->stopInstances(array(
    'InstanceIds' => array('70b9e613-d01a-4581-b29f-ba4b6fcebae9')
));

Włączenie wirtualnej maszyny przez API kompatybilne z AWS EC2

$client->startInstances(array(
    'InstanceIds' => array('70b9e613-d01a-4581-b29f-ba4b6fcebae9')
));

Usunięcie wirtualnej maszyny przez API kompatybilne z AWS EC2

$client->terminateInstances(array(
    'InstanceIds' => array('70b9e613-d01a-4581-b29f-ba4b6fcebae9')
));

Kompatybilność - dostępne wywołania API EC2

Ponieważ nie wszystkie usługi dostępne w e24cloud mają swoje odpowiedniki w konwencji wywołań API EC2, nie wszystkie wywołania są dostępne. Dostępne są następujące wywołania:

  • AllocateAddress, AssociateAddress, DescribeAddresses, ReleaseAddress, DisassociateAddress
  • AttachVolume, CreateVolume, DeleteVolume, DetachVolume
  • CreateSnapshot, DeleteSnapshot
  • DescribeInstances, RebootInstances, RunInstances, StartInstances, StopInstances, TerminateInstances
  • CreateKeyPair, DeleteKeyPair, DescribeKeyPairs, ImportKeyPair
  • CreateImage, DeregisterImage, DescribeImageAttribute, DescribeImages
  • DescribeAvailabilityZones, DescribeRegions