Skip to main content
On this page

Coverage by target cloud

How the targets compare

Each row compares a capability of EC2 Control Plane with its adaptation on each target. A dash means this row is not stated for that target.

Max adaptation

On Google Cloud

Request recording and reconciliation on Compute Engine

A RunInstances call is checked against the launch shape, given instance ids and recorded. The reconciler then creates one Compute Engine instance per requested instance in a zone of the deployment’s region, in the subnetwork the request named, with the private address it asked for, the network tags its security groups resolve to, and the machine type the instance type resolved to; the boot disk type is chosen to suit that machine family (Hyperdisk Balanced on N4, for example). DescribeInstances reads the instance’s status, private address and creation time from Compute Engine on every call, so a launch reads pending until the instance is running, and a change made in the Google Cloud console shows on the next describe. TerminateInstances withdraws the record and deletes the instance. It reads shutting-down while Compute Engine still holds the machine and terminated once it does not, and stays answerable by id for an hour so a delete waiter completes. A member of an Auto Scaling group is removed through its managed instance group. A ClientToken makes a retried launch return the instances already minted for it, and a replay cannot bring back a batch that was terminated.

Placement, tags and identity on Compute Engine

The availability zone a request names is mapped onto a zone of the deployment’s region, so zonal placement carries. Instance ids are EC2-shaped (i-…) and stable for the life of the instance. Your EC2 tags stay on the instance record, where DescribeTags and the tag filters answer them; they are not written as Compute Engine labels, so a label-based billing export or console filter does not see them. Security-group membership is expressed as network tags on the instance, so a ModifyInstanceAttribute groupSet change reconciles onto the instance’s tags and the firewall rules described on the VPC card for Google Cloud VPC take effect.

Limitations

  • Stop, start and reboot are refused. StopInstances, StartInstances and RebootInstances answer an error and leave the instance as it is; use Compute Engine’s own controls, or terminate and relaunch. - The launch shape is bounded. BlockDeviceMappings, KeyName, IamInstanceProfile, LaunchTemplate, a second network interface, a public address at launch, detailed monitoring, hibernation, termination protection and EbsOptimized are refused with an error naming the member, and the request has to be rewritten without it. - Tags stay on the record. EC2 tags are not written as Compute Engine labels, so a label-keyed billing export, policy or console filter sees nothing. - Discovery is scoped to this control plane’s records. DescribeInstances lists the instances it launched or registered; other instances in the project, images, instance status and fleets are not answered, and a filter outside the listed set is refused. - Readiness is observed. An accepted launch is not a running machine; DescribeInstances reads pending until Compute Engine reports the instance running.

Other considerations

  • Operation. Google operates the instances, their interfaces and disks, which bill as Compute Engine resources; Tensor9 operates the adapter that records and reconciles requests. - Identity. Instance ids are EC2-shaped and stable for the instance’s life, and a ClientToken is honoured so a retried launch does not double a batch. - Termination window. A terminated instance stays answerable by id for an hour, so waiters and cleanup scripts that poll for terminated complete; after that the id answers InvalidInstanceID.NotFound.

On Azure

Request recording and reconciliation on Azure

A RunInstances call is checked against the launch shape, given instance ids and recorded. The reconciler then creates a network interface in the subnet the request named, with the private address it asked for and the application security groups its security groups resolve to, and a virtual machine of the size the instance type resolved to, in the deployment’s resource group and region. DescribeInstances reads the virtual machine’s power state, private address and launch time from Azure on every call, so a launch reads pending until Azure’s instance view reports the machine, and a change made in the Azure portal shows on the next describe. TerminateInstances withdraws the record and deletes the virtual machine, then its network interface. The instance reads shutting-down while Azure still holds the machine and terminated once it does not, and stays answerable by id for an hour so a delete waiter completes. A ClientToken makes a retried launch return the instances already minted for it, and a replay cannot bring back a batch that was terminated.

Placement, tags and identity on Azure

Azure places the virtual machine regionally. A request that names a Placement.AvailabilityZone is refused until the deployment acknowledges regional placement; the refusal names the acknowledgement. Instance ids are EC2-shaped (i-…) and stable for the life of the instance. The virtual machine carries the adapter’s own provenance tags; your EC2 tags stay on the instance record, where DescribeTags and the tag filters answer them, and do not appear on the Azure resource. Security-group membership lives on the network interface as application security groups, so a ModifyInstanceAttribute groupSet change reconciles onto the interface and the NSG rules described on the VPC card for Azure Virtual Network take effect.

Limitations

  • Stop, start and reboot are refused. StopInstances, StartInstances and RebootInstances answer an error and leave the virtual machine as it is; use Azure’s own power controls, or terminate and relaunch. - The launch shape is bounded. BlockDeviceMappings, KeyName, IamInstanceProfile, LaunchTemplate, a second network interface, a public address at launch, detailed monitoring, hibernation, termination protection and EbsOptimized are refused with an error naming the member, and the request has to be rewritten without it. - A zone request needs an acknowledgement. A Placement.AvailabilityZone is refused until the deployment acknowledges regional placement. - Tags stay on the record. EC2 tags are not written to the virtual machine’s Azure resource tags, so an Azure policy, cost report or console filter keyed on them sees nothing. - Discovery is scoped to this control plane’s records. DescribeInstances lists the instances it launched or registered; other virtual machines in the subscription, images, instance status and fleets are not answered, and a filter outside the listed set is refused. - Readiness is observed. An accepted launch is not a running machine; DescribeInstances reads pending until Azure reports the virtual machine.

Other considerations

  • Operation. Microsoft operates the virtual machines, interfaces and disks, which bill as Azure resources; Tensor9 operates the adapter that records and reconciles requests. - Identity. Instance ids are EC2-shaped and stable for the instance’s life, and a ClientToken is honoured so a retried launch does not double a batch. - Termination window. A terminated instance stays answerable by id for an hour, so waiters and cleanup scripts that poll for terminated complete; after that the id answers InvalidInstanceID.NotFound.

Debug this service

For requests through a service adapter, use Explain and request diagnostics to investigate the selected mapping. Follow the BYOC service-adapter debugging runbook to capture and interpret the diagnostic evidence. Service Catalog.