EC2-Query-API (97 Aktionen), SigV2- und SigV4-Signaturen von Keystone geprüft: AWS CLI, boto3, Terraform.
Go Nova, Neutron, Cinderopenkeel-ec2-api
Das Modul
OpenKeel implementation in Go of OpenStack ec2-api (ec2-api), generated from the reverse-specification of branch 17.0.0 by the generate-go-from-spec skill. It replaces the Python service without its clients noticing: the same EC2 Query API (97 actions of ec2-api 17.0.0, SigV2 and SigV4 verified by Keystone ec2tokens), the same XML documents and error codes, the same EC2 identifiers and the same ec2api database. What is reproduced and what differs is in docs/CONFORMANCE.md; the security checklist is in docs/SECURITY.md.
Clients: the AWS CLI and boto3, Terraform's AWS provider with a custom endpoint, euca2ools/boto2
Backends: Nova, Neutron (with VPNaaS for the VPN actions), Cinder and Glance, called with the caller's token; the EC2 IDs and tags are in MariaDB (items, tags). Not included: ec2-api-metadata (Nova's metadata service or cloud-init serves instances) and ec2-api-s3 (Swift s3api) — docs/CONFORMANCE.md D9, D10
Go module: github.com/openkeel/openkeel-ec2-api
Binary: ec2-api (API on port 8788, health and metrics on 9090)
Configuration: YAML, see config/config.example.yaml
Setting up a development environment, the database and the tests: docs/GETTING-STARTED.md
Database schema, migrations and upgrades: docs/DATABASE.md
Auszug aus openkeel-ec2-api/README.md (auf Englisch).
API-Aktionen
100 Aktionen der Original-API und ihr Status in OpenKeel.
Die eingestellte ec2-api wird gegen ihr aufgezeichnetes Verhalten und vor allem gegen die echten AWS-Clients geprüft: die AWS CLI und den AWS-Provider von Terraform.
Replay aufgezeichneter Austausche
Aufgezeichnete Validierungsfehler und Sonden
Aufgezeichnete Fehleraustausche liefern denselben Status, EC2-Code und dieselbe Meldung; Dispatcher-Sonden vergleichen Klartextfehler und Antwortwurzeln.
Ausführung
test/e2e/exchanges_test.go und test/e2e/probes_test.go.
Jede Aktionsfamilie läuft, und die Antwortstrukturen werden mit den aus Python aufgezeichneten verglichen.
Ausführung
test/e2e/scenario_test.go.
Letztes Ergebnis 97 / 97 Aktionen bestanden; 93 Antwortstrukturen geprüft, kein unerklärtes Element (2026-11-02).
Quelle: openkeel-ec2-api/docs/CONFORMANCE.md
Client-Vertrag
AWS CLI v2
Die echte AWS CLI funktioniert für 42 Aktionen, wobei SigV4 mit dem Algorithmus von keystoneclient verifiziert wird.
Ausführung
test/awscli (Build-Tag awscli), AWS CLI v2 2.18.
Letztes Ergebnis Bestanden (2026-11-02).
Quelle: openkeel-ec2-api/docs/CONFORMANCE.md
Client-Vertrag
Terraform-AWS-Provider
Terraform legt ein VPC, ein Subnetz, ein Gateway, Routen, eine Sicherheitsgruppe, ein Schlüsselpaar, eine Instanz, eine EIP und ein Volume an, plant danach keine Änderungen und baut alles wieder ab.
Ausführung
test/terraform (Build-Tag terraform), Terraform 1.5.4 und hashicorp/aws 5.100.0, auf MariaDB.
Letztes Ergebnis Bestanden auf MariaDB (2026-11-02).
Quelle: openkeel-ec2-api/docs/CONFORMANCE.md
Nebenläufigkeit auf Galera
Nebenläufigkeit auf MariaDB Galera
Ein Standard-VPC und eine EC2-ID pro Server bei nebenläufigen Anfragen auf drei Knoten; Tag-Schreibvorgänge konvergieren.
Ausführung
test/galera (Build-Tag galera) auf einem Cluster mit 3 Knoten.
Letztes Ergebnis Bestanden, 3 Durchläufe, kein 5xx (2026-11-02).
Quelle: openkeel-ec2-api/docs/CONFORMANCE.md
Tempest
ec2api-tempest-plugin
Das Upstream-Tempest-Plugin des Projekts.
Ausführung
Zusammen mit dem Projekt upstream eingestellt.
Letztes Ergebnis Nicht ausgeführt.
Quelle: openkeel-ec2-api/docs/CONFORMANCE.md
Im Rewrite ausgelassen
Die EC2-API (upstream 2024 eingestellt) behält ihre Aktionen, verzichtet aber auf ihren eigenen S3-Server und Metadatendienst, die die Plattform bereits bereitstellt.
Von der Cloud-Native-Plattform übernommen
ec2-api-s3-Server
Übernommen von Rook-Ceph RGW
Warum es ausgelassen wurde
Der Python-S3-Server ist nicht authentifiziert; Objektspeicher mit S3 kommt von der Plattform.
Warum die Lösung nicht beeinträchtigt ist
S3-Clients nutzen den RGW-Endpoint mit EC2-Zugangsdaten von Keystone (okadm --ceph-s3).
Quelle: openkeel-ec2-api/docs/CONFORMANCE.md
Von der Cloud-Native-Plattform übernommen
ec2-api-metadata-Dienst
Übernommen von KubeVirt (cloud-init)
Warum es ausgelassen wurde
Instanzen erhalten ihre Metadaten über die Datasources OpenStack und NoCloud von cloud-init (Config Drive).
Warum die Lösung nicht beeinträchtigt ist
Gäste starten und konfigurieren sich wie gewohnt; nur die EC2-Kennungen (i-, ami-, r-) fehlen in ihren Metadaten.
Quelle: openkeel-ec2-api/docs/CONFORMANCE.md
Vereinfachte interne Mechanik
Dateisperre pro Host für das Standard-VPC
Warum es ausgelassen wurde
Mehrere Repliken und Multi-Writer-Galera erfordern eine clusterweite Sperre: eine Datenbankzeile mit Ablaufzeit.
Warum die Lösung nicht beeinträchtigt ist
Standard-VPCs werden weiterhin einmal pro Projekt angelegt, jetzt sicher über Repliken hinweg.
Quelle: openkeel-ec2-api/docs/CONFORMANCE.md
Hier ist nur aufgeführt, was bewusst ausgelassen wurde; noch nicht erledigte Arbeit steht in den Known gaps der docs/CONFORMANCE.md des Moduls. Alle Module
EC2-API-Interaktionen
Dienstansicht, vom Diagramm-Skill aus dem OpenKeel-Modell generiert.