API e24cloud

Z e24cloud - wiki
Skocz do: nawigacja, szukaj

Wstęp

Usluga e24cloud udostepnia dwa rodzaje API, służące do zarządzania maszynami i zasobami wirtualnymi.

  1. Kompatybilne z AWS EC2
  2. REST API

Kompatybilne z AWS 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ń - https://eu-poland-1poznan.api.e24cloud.com
  • Lokalizacja: Warszawa - https://eu-poland-1warszawa.api.e24cloud.com

Przykłady (PHP)

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

Inicjalizacja połączenia

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

     ],
    'region' => 'eu-poland-1warszawa',
    '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

$result = $client->describeImages();

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

Utworzenie wirtualnej maszyny

$result = $client->runInstances(array(
    'ImageId' => 'ami-000006d8', // ImageId z describeImages
    'MinCount' => 1,
    'MaxCount' => 1,
    'InstanceType' => 'm1.xlarge',
    'Placement' => [
      'AvailabilityZone' => 'eu-poland-1warszawa1',
    ]
));

Listowanie wirtualnych maszyn

$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

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

Włączenie wirtualnej maszyny

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

Usunięcie wirtualnej maszyny

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

Kompatybilność

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

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

REST API

REST API jest obecnie w przygotowaniu.

API REST jest natywnym API, udostępniającym pełen zakres funkcjonalności dostępnych z panelu. Oparte jest o wywołania metody protokołu HTTP - GET, POST, PUT i DELETE w oparciu o odpowiednio przygotowany adres URL, nagłówki HTTP i opcjonalne parametry przekazywane w treści wywołania. Parametry przekazywane są w formacie JSON.

Metody HTTP

W zależności od wykonywanych działań, używane są następujące metody HTTP

Metoda Typ requestu
GET Wywołąnia typu read-only, które służą do pobierania informacji o obiektach w systemie, np. listowanie wirtualnych maszyn
PUT Wywołania tworzące nowy obiekt w systemie, np wirtualną maszynę.
POST Wywołania zmieniające stan istniejące obiektu, np włączanie wirtualnej maszyny.
DELETE Wywołania usuwające obiekty z systemu, np. usuwanie wirtualnych maszyn.

Podpisywanie wywołań

Każde wywołanie API musi zostać odpowiednio podpisane. Podpis zapewnia, że treść wywołania nie została zmieniona w trakcie przesyłania. Umożliwia także odrzucanie wywołań zbyt starych, które mogły stracić już aktualność, a zostać wysłane omyłkowo.

Podpisanie wywołania wymaga podania trzech nagłówków HTTP:

  • Content-Type - ustawiony na 'application/json'
  • X-Date - data generacji wywołania, w formacie RFC 1123 (np. Mon, 04 Jul 2015, 14:01:02 EST)
  • Authorization - wartość wygenerowana według poniższego algorytmu
$request = $HTTP_METHOD + "\n" + $HTTP_HOST + "\n" + $HEADER[X-Date] + "\n" + $URI_PATH + $QUERY_STRING + "\n" + $REQUEST_BODY
Authorization: $API_KEY + ':' + base64(hmac_sha256($request, $API_SECRET))

Przykład w PHP, generujący odpowiednie nagłówki

$API_KEY = 'id klucza'
$API_SECRET = 'wartosc klucza'
$API_METHOD = 'POST';
$API_URL = 'http://example.api.e24cloud.com/v2/test-method';
 
$headerDate = gmdate('D, d M Y H:i:s T');
$requestHeader = array(
    'Content-Type: application/json',
    'X-Date: ' . $headerDate
);
 
$parsedUrl = parse_url($API_URL);
$signString = $API_METHOD . "\n";
$signString .= $parsedUrl['host'] . "\n";
$signString .= $headerDate . "\n";
$signString .= $parsedUrl['path'] . (isset($parsedUrl['query']) && $parsedUrl['query'] ? '?' . $parsedUrl['query'] : "") . "\n";
$signString .= $requestData ? $requestData : "";

$requestHeader[] = 'Authorization: ' . $API_KEY . ':' . base64_encode(hash_hmac('SHA256', $signString, $API_SECRET, true));

Odpowiedzi

Informacje o odpowiedzi na zapytanie API znajdują się w nagłówkach odpowiedzi HTTP jak i w treści odpowiedzi. Treść odpowiedzi zwracana jest w formacie JSON. Nagłówki i budowa odpowiedzi zależą od rezultatu przetwarzania zapytania

Kod odpowiedzi HTTP Przyczyna Treść odpowiedzi
2xx Zapytanie przetworzone poprawnie
{
    "success": true,
 ... inne pola, w zaleznosci od zapytania
}
4xx Nieprawidłowa sygnatura lub nieprawidłowe parametry
{
    "success": false,
    "Errors": {
        "Error": {
            "Code": 0,
            "Message": "Komunikat błędu"
        }
    }
}
5xx Wewnętrzny błąd serwera Treść niezdefiniowana

Metody API - regiony

Metody API - wirtualne maszyny

Metody API - wirtualne dyski

Metody API - systemy operacyjne

Metody API - backupy

Metody API - konto użytkownika

Metody API - subkonta

Metody API - grupy