View a markdown version of this page

Use DescribeInstances com um AWS SDK ou CLI - Amazon Elastic Compute Cloud

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use DescribeInstances com um AWS SDK ou CLI

Os exemplos de código a seguir mostram como usar o DescribeInstances.

Exemplos de ações são trechos de código de programas maiores e devem ser executados em contexto. É possível ver essa ação em contexto nos seguintes exemplos de código:

.NET
SDK para .NET
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

/// <summary> /// Get information about EC2 instances with a particular state. /// </summary> /// <param name="tagName">The name of the tag to filter on.</param> /// <param name="tagValue">The value of the tag to look for.</param> /// <returns>True if successful.</returns> public async Task<bool> GetInstancesWithState(string state) { try { // Filters the results of the instance list. var filters = new List<Filter> { new Filter { Name = $"instance-state-name", Values = new List<string> { state, }, }, }; var request = new DescribeInstancesRequest { Filters = filters, }; Console.WriteLine($"\nShowing instances with state {state}"); var paginator = _amazonEC2.Paginators.DescribeInstances(request); await foreach (var response in paginator.Responses) { foreach (var reservation in response.Reservations) { foreach (var instance in reservation.Instances) { Console.Write($"Instance ID: {instance.InstanceId} "); Console.WriteLine($"\tCurrent State: {instance.State.Name}"); } } } return true; } catch (AmazonEC2Exception ec2Exception) { if (ec2Exception.ErrorCode == "InvalidParameterValue") { _logger.LogError( $"Invalid parameter value for filtering instances."); } return false; } catch (Exception ex) { Console.WriteLine($"Couldn't list instances because: {ex.Message}"); return false; } }
  • Para obter detalhes da API, consulte DescribeInstances em Referência AWS SDK para .NET da API.

Bash
AWS CLI com script Bash
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

############################################################################### # function ec2_describe_instances # # This function describes one or more Amazon Elastic Compute Cloud (Amazon EC2) instances. # # Parameters: # -i instance_id - The ID of the instance to describe (optional). # -q query - The query to filter the response (optional). # -h - Display help. # # Returns: # 0 - If successful. # 1 - If it fails. ############################################################################### function ec2_describe_instances() { local instance_id query response local option OPTARG # Required to use getopts command in a function. # bashsupport disable=BP5008 function usage() { echo "function ec2_describe_instances" echo "Describes one or more Amazon Elastic Compute Cloud (Amazon EC2) instances." echo " -i instance_id - The ID of the instance to describe (optional)." echo " -q query - The query to filter the response (optional)." echo " -h - Display help." echo "" } # Retrieve the calling parameters. while getopts "i:q:h" option; do case "${option}" in i) instance_id="${OPTARG}" ;; q) query="${OPTARG}" ;; h) usage return 0 ;; \?) echo "Invalid parameter" usage return 1 ;; esac done export OPTIND=1 local aws_cli_args=() if [[ -n "$instance_id" ]]; then # shellcheck disable=SC2206 aws_cli_args+=("--instance-ids" $instance_id) fi local query_arg="" if [[ -n "$query" ]]; then query_arg="--query '$query'" else query_arg="--query Reservations[*].Instances[*].[InstanceId,ImageId,InstanceType,KeyName,VpcId,PublicIpAddress,State.Name]" fi # shellcheck disable=SC2086 response=$(aws ec2 describe-instances \ "${aws_cli_args[@]}" \ $query_arg \ --output text) || { aws_cli_error_log ${?} errecho "ERROR: AWS reports describe-instances operation failed.$response" return 1 } echo "$response" return 0 }

As funções utilitárias usadas neste exemplo.

############################################################################### # function errecho # # This function outputs everything sent to it to STDERR (standard error output). ############################################################################### function errecho() { printf "%s\n" "$*" 1>&2 } ############################################################################## # function aws_cli_error_log() # # This function is used to log the error messages from the AWS CLI. # # The function expects the following argument: # $1 - The error code returned by the AWS CLI. # # Returns: # 0: - Success. # ############################################################################## function aws_cli_error_log() { local err_code=$1 errecho "Error code : $err_code" if [ "$err_code" == 1 ]; then errecho " One or more S3 transfers failed." elif [ "$err_code" == 2 ]; then errecho " Command line failed to parse." elif [ "$err_code" == 130 ]; then errecho " Process received SIGINT." elif [ "$err_code" == 252 ]; then errecho " Command syntax invalid." elif [ "$err_code" == 253 ]; then errecho " The system environment or configuration was invalid." elif [ "$err_code" == 254 ]; then errecho " The service returned an error." elif [ "$err_code" == 255 ]; then errecho " 255 is a catch-all error." fi return 0 }
C++
SDK para C++
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

//! Describe all Amazon Elastic Compute Cloud (Amazon EC2) instances associated with an account. /*! \param clientConfiguration: AWS client configuration. \return bool: Function succeeded. */ bool AwsDoc::EC2::describeInstances( const Aws::Client::ClientConfiguration &clientConfiguration) { Aws::EC2::EC2Client ec2Client(clientConfiguration); Aws::EC2::Model::DescribeInstancesRequest request; bool header = false; bool done = false; while (!done) { Aws::EC2::Model::DescribeInstancesOutcome outcome = ec2Client.DescribeInstances(request); if (outcome.IsSuccess()) { if (!header) { std::cout << std::left << std::setw(48) << "Name" << std::setw(20) << "ID" << std::setw(25) << "Ami" << std::setw(15) << "Type" << std::setw(15) << "State" << std::setw(15) << "Monitoring" << std::endl; header = true; } const std::vector<Aws::EC2::Model::Reservation> &reservations = outcome.GetResult().GetReservations(); for (const auto &reservation: reservations) { const std::vector<Aws::EC2::Model::Instance> &instances = reservation.GetInstances(); for (const auto &instance: instances) { Aws::String instanceStateString = Aws::EC2::Model::InstanceStateNameMapper::GetNameForInstanceStateName( instance.GetState().GetName()); Aws::String typeString = Aws::EC2::Model::InstanceTypeMapper::GetNameForInstanceType( instance.GetInstanceType()); Aws::String monitorString = Aws::EC2::Model::MonitoringStateMapper::GetNameForMonitoringState( instance.GetMonitoring().GetState()); Aws::String name = "Unknown"; const std::vector<Aws::EC2::Model::Tag> &tags = instance.GetTags(); auto nameIter = std::find_if(tags.cbegin(), tags.cend(), [](const Aws::EC2::Model::Tag &tag) { return tag.GetKey() == "Name"; }); if (nameIter != tags.cend()) { name = nameIter->GetValue(); } std::cout << std::setw(48) << name << std::setw(20) << instance.GetInstanceId() << std::setw(25) << instance.GetImageId() << std::setw(15) << typeString << std::setw(15) << instanceStateString << std::setw(15) << monitorString << std::endl; } } if (!outcome.GetResult().GetNextToken().empty()) { request.SetNextToken(outcome.GetResult().GetNextToken()); } else { done = true; } } else { std::cerr << "Failed to describe EC2 instances:" << outcome.GetError().GetMessage() << std::endl; return false; } } return true; }
  • Para obter detalhes da API, consulte DescribeInstances em Referência AWS SDK para C++ da API.

CLI
AWS CLI

Exemplo 1: descrever uma instância

O exemplo describe-instances a seguir descreve a instância especificada.

aws ec2 describe-instances \ --instance-ids i-1234567890abcdef0

Saída:

{ "Reservations": [ { "Groups": [], "Instances": [ { "AmiLaunchIndex": 0, "ImageId": "ami-0abcdef1234567890", "InstanceId": "i-1234567890abcdef0", "InstanceType": "t3.nano", "KeyName": "my-key-pair", "LaunchTime": "2022-11-15T10:48:59+00:00", "Monitoring": { "State": "disabled" }, "Placement": { "AvailabilityZone": "us-east-2a", "GroupName": "", "Tenancy": "default" }, "PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal", "PrivateIpAddress": "10-0-0-157", "ProductCodes": [], "PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com", "PublicIpAddress": "34.253.223.13", "State": { "Code": 16, "Name": "running" }, "StateTransitionReason": "", "SubnetId": "subnet-04a636d18e83cfacb", "VpcId": "vpc-1234567890abcdef0", "Architecture": "x86_64", "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "AttachTime": "2022-11-15T10:49:00+00:00", "DeleteOnTermination": true, "Status": "attached", "VolumeId": "vol-02e6ccdca7de29cf2" } } ], "ClientToken": "1234abcd-1234-abcd-1234-d46a8903e9bc", "EbsOptimized": true, "EnaSupport": true, "Hypervisor": "xen", "IamInstanceProfile": { "Arn": "arn:aws:iam::111111111111:instance-profile/AmazonSSMRoleForInstancesQuickSetup", "Id": "111111111111111111111" }, "NetworkInterfaces": [ { "Association": { "IpOwnerId": "amazon", "PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com", "PublicIp": "34.253.223.13" }, "Attachment": { "AttachTime": "2022-11-15T10:48:59+00:00", "AttachmentId": "eni-attach-1234567890abcdefg", "DeleteOnTermination": true, "DeviceIndex": 0, "Status": "attached", "NetworkCardIndex": 0 }, "Description": "", "Groups": [ { "GroupName": "launch-wizard-146", "GroupId": "sg-1234567890abcdefg" } ], "Ipv6Addresses": [], "MacAddress": "00:11:22:33:44:55", "NetworkInterfaceId": "eni-1234567890abcdefg", "OwnerId": "104024344472", "PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal", "PrivateIpAddress": "10-0-0-157", "PrivateIpAddresses": [ { "Association": { "IpOwnerId": "amazon", "PublicDnsName": "ec2-34-253-223-13.us-east-2.compute.amazonaws.com", "PublicIp": "34.253.223.13" }, "Primary": true, "PrivateDnsName": "ip-10-0-0-157.us-east-2.compute.internal", "PrivateIpAddress": "10-0-0-157" } ], "SourceDestCheck": true, "Status": "in-use", "SubnetId": "subnet-1234567890abcdefg", "VpcId": "vpc-1234567890abcdefg", "InterfaceType": "interface" } ], "RootDeviceName": "/dev/xvda", "RootDeviceType": "ebs", "SecurityGroups": [ { "GroupName": "launch-wizard-146", "GroupId": "sg-1234567890abcdefg" } ], "SourceDestCheck": true, "Tags": [ { "Key": "Name", "Value": "my-instance" } ], "VirtualizationType": "hvm", "CpuOptions": { "CoreCount": 1, "ThreadsPerCore": 2 }, "CapacityReservationSpecification": { "CapacityReservationPreference": "open" }, "HibernationOptions": { "Configured": false }, "MetadataOptions": { "State": "applied", "HttpTokens": "optional", "HttpPutResponseHopLimit": 1, "HttpEndpoint": "enabled", "HttpProtocolIpv6": "disabled", "InstanceMetadataTags": "enabled" }, "EnclaveOptions": { "Enabled": false }, "PlatformDetails": "Linux/UNIX", "UsageOperation": "RunInstances", "UsageOperationUpdateTime": "2022-11-15T10:48:59+00:00", "PrivateDnsNameOptions": { "HostnameType": "ip-name", "EnableResourceNameDnsARecord": true, "EnableResourceNameDnsAAAARecord": false }, "MaintenanceOptions": { "AutoRecovery": "default" } } ], "OwnerId": "111111111111", "ReservationId": "r-1234567890abcdefg" } ] }

Exemplo 2: para filtrar instâncias com o tipo especificado

O exemplo describe-instances a seguir usa filtros para definir o escopo dos resultados para instâncias do tipo especificado.

aws ec2 describe-instances \ --filters Name=instance-type,Values=m5.large

Para obter um exemplo da saída, consulte o Exemplo 1.

Para obter mais informações, consulte Listar e filtrar usando a CLI no Guia do usuário do Amazon EC2.

Exemplo 3: filtrar instâncias com o tipo e a zona de disponibilidade especificados

O exemplo describe-instances a seguir usa vários filtros para definir o escopo dos resultados para instâncias com o tipo especificado que também estão na zona de disponibilidade especificada.

aws ec2 describe-instances \ --filters Name=instance-type,Values=t2.micro,t3.micro Name=availability-zone,Values=us-east-2c

Para obter um exemplo da saída, consulte o Exemplo 1.

Exemplo 4: filtrar instâncias com o tipo e a zona de disponibilidade especificados usando um arquivo JSON

O exemplo describe-instances a seguir usa um arquivo de entrada JSON para realizar a mesma filtragem do exemplo anterior. Quando os filtros ficam mais complicados, pode ser mais fácil especificá-los em um arquivo JSON.

aws ec2 describe-instances \ --filters file://filters.json

Conteúdo de filters.json:

[ { "Name": "instance-type", "Values": ["t2.micro", "t3.micro"] }, { "Name": "availability-zone", "Values": ["us-east-2c"] } ]

Para obter um exemplo da saída, consulte o Exemplo 1.

Exemplo 5: filtrar instâncias com a tag Proprietário especificada

O exemplo describe-instances a seguir usa filtros de tag para definir o escopo dos resultados para instâncias que têm uma tag com a chave de tag especificada (Proprietário), independentemente do valor da tag.

aws ec2 describe-instances \ --filters "Name=tag-key,Values=Owner"

Para obter um exemplo da saída, consulte o Exemplo 1.

Exemplo 6: filtrar instâncias com o valor especificado my-team da tag

O exemplo describe-instances a seguir usa filtros de tag para definir o escopo dos resultados para instâncias que têm uma tag com o valor especificado da tag (my-team), independentemente da chave da tag.

aws ec2 describe-instances \ --filters "Name=tag-value,Values=my-team"

Para obter um exemplo da saída, consulte o Exemplo 1.

Exemplo 7: filtrar instâncias com a tag Proprietário e o valor my-team especificados

O exemplo describe-instances a seguir usa filtros de tag para definir o escopo dos resultados para instâncias que têm a tag especificada (Owner=my-team).

aws ec2 describe-instances \ --filters "Name=tag:Owner,Values=my-team"

Para obter um exemplo da saída, consulte o Exemplo 1.

Exemplo 8: exibir somente IDs de instância e sub-rede de todas as instâncias

Os exemplos describe-instances a seguir usam o parâmetro --query para exibir somente os IDs de instância e sub-rede de todas as instâncias, no formato JSON.

Linux e macOS:

aws ec2 describe-instances \ --query 'Reservations[*].Instances[*].{Instance:InstanceId,Subnet:SubnetId}' \ --output json

Windows:

aws ec2 describe-instances ^ --query "Reservations[*].Instances[*].{Instance:InstanceId,Subnet:SubnetId}" ^ --output json

Saída:

[ { "Instance": "i-057750d42936e468a", "Subnet": "subnet-069beee9b12030077" }, { "Instance": "i-001efd250faaa6ffa", "Subnet": "subnet-0b715c6b7db68927a" }, { "Instance": "i-027552a73f021f3bd", "Subnet": "subnet-0250c25a1f4e15235" } ... ]

Exemplo 9: filtrar instâncias do tipo especificado e exibir somente os IDs de instância

O exemplo describe-instances a seguir usa filtros para definir o escopo dos resultados para instâncias do tipo especificado e o parâmetro --query para exibir somente os IDs da instância.

aws ec2 describe-instances \ --filters "Name=instance-type,Values=t2.micro" \ --query "Reservations[*].Instances[*].[InstanceId]" \ --output text

Saída:

i-031c0dc19de2fb70c i-00d8bff789a736b75 i-0b715c6b7db68927a i-0626d4edd54f1286d i-00b8ae04f9f99908e i-0fc71c25d2374130c

Exemplo 10: filtrar instâncias do tipo especificado e exibir somente os IDs de instância, a zona de disponibilidade e o valor especificado da tag

Os exemplos describe-instances a seguir exibem o ID da instância, a zona de disponibilidade e o valor da tag Name para instâncias que têm uma tag com o nome tag-key, em formato de tabela.

Linux e macOS:

aws ec2 describe-instances \ --filters Name=tag-key,Values=Name \ --query 'Reservations[*].Instances[*].{Instance:InstanceId,AZ:Placement.AvailabilityZone,Name:Tags[?Key==`Name`]|[0].Value}' \ --output table

Windows:

aws ec2 describe-instances ^ --filters Name=tag-key,Values=Name ^ --query "Reservations[*].Instances[*].{Instance:InstanceId,AZ:Placement.AvailabilityZone,Name:Tags[?Key=='Name']|[0].Value}" ^ --output table

Saída:

------------------------------------------------------------- | DescribeInstances | +--------------+-----------------------+--------------------+ | AZ | Instance | Name | +--------------+-----------------------+--------------------+ | us-east-2b | i-057750d42936e468a | my-prod-server | | us-east-2a | i-001efd250faaa6ffa | test-server-1 | | us-east-2a | i-027552a73f021f3bd | test-server-2 | +--------------+-----------------------+--------------------+

Exemplo 11: descrever instâncias em um grupo com posicionamento em partições

O exemplo describe-instances a seguir descreve a instância especificada. A saída inclui as informações de posicionamento da instância, o que contém o nome do grupo de posicionamento e o número da partição da instância.

aws ec2 describe-instances \ --instance-ids i-0123a456700123456 \ --query "Reservations[*].Instances[*].Placement"

Saída:

[ [ { "AvailabilityZone": "us-east-1c", "GroupName": "HDFS-Group-A", "PartitionNumber": 3, "Tenancy": "default" } ] ]

Para obter mais informações, consulte Descrever instâncias em um grupo de posicionamento no Guia do usuário do Amazon EC2.

Exemplo 12: filtrar instâncias com o grupo de posicionamento e o número de partição especificados

O exemplo describe-instances a seguir filtra os resultados somente para as instâncias com o grupo de posicionamento e o número de partição especificados.

aws ec2 describe-instances \ --filters "Name=placement-group-name,Values=HDFS-Group-A" "Name=placement-partition-number,Values=7"

A seguir, são mostradas somente as informações relevantes da saída.

"Instances": [ { "InstanceId": "i-0123a456700123456", "InstanceType": "r4.large", "Placement": { "AvailabilityZone": "us-east-1c", "GroupName": "HDFS-Group-A", "PartitionNumber": 7, "Tenancy": "default" } }, { "InstanceId": "i-9876a543210987654", "InstanceType": "r4.large", "Placement": { "AvailabilityZone": "us-east-1c", "GroupName": "HDFS-Group-A", "PartitionNumber": 7, "Tenancy": "default" } ],

Para obter mais informações, consulte Descrever instâncias em um grupo de posicionamento no Guia do usuário do Amazon EC2.

Exemplo 13: filtrar instâncias configuradas para permitir o acesso às tags dos metadados da instância

O exemplo describe-instances a seguir filtra os resultados somente para as instâncias que estão configuradas para permitir o acesso às tags de instância nos metadados da instância.

aws ec2 describe-instances \ --filters "Name=metadata-options.instance-metadata-tags,Values=enabled" \ --query "Reservations[*].Instances[*].InstanceId" \ --output text

A saída esperada é mostrada a seguir.

i-1234567890abcdefg i-abcdefg1234567890 i-11111111aaaaaaaaa i-aaaaaaaa111111111

Para obter mais informações, consulte Work with instance tags in instance metadata no Guia do usuário do Amazon EC2.

Java
SDK para Java 2.x
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

/** * Asynchronously describes the state of an EC2 instance. * The paginator helps you iterate over multiple pages of results. * * @param newInstanceId the ID of the EC2 instance to describe * @return a {@link CompletableFuture} that, when completed, contains a string describing the state of the EC2 instance */ public CompletableFuture<String> describeEC2InstancesAsync(String newInstanceId) { DescribeInstancesRequest request = DescribeInstancesRequest.builder() .instanceIds(newInstanceId) .build(); DescribeInstancesPublisher paginator = getAsyncClient().describeInstancesPaginator(request); AtomicReference<String> publicIpAddressRef = new AtomicReference<>(); return paginator.subscribe(response -> { response.reservations().stream() .flatMap(reservation -> reservation.instances().stream()) .filter(instance -> instance.instanceId().equals(newInstanceId)) .findFirst() .ifPresent(instance -> publicIpAddressRef.set(instance.publicIpAddress())); }).thenApply(v -> { String publicIpAddress = publicIpAddressRef.get(); if (publicIpAddress == null) { throw new RuntimeException("Instance with ID " + newInstanceId + " not found."); } return publicIpAddress; }).exceptionally(ex -> { logger.info("Failed to describe instances: " + ex.getMessage()); throw new RuntimeException("Failed to describe instances", ex); }); }
  • Para obter detalhes da API, consulte DescribeInstances em Referência AWS SDK for Java 2.x da API.

JavaScript
SDK para JavaScript (v3)
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

import { EC2Client, paginateDescribeInstances } from "@aws-sdk/client-ec2"; /** * List all of your EC2 instances running with the provided architecture that * were launched in the past month. * @param {{ pageSize: string, architectures: string[] }} options */ export const main = async ({ pageSize, architectures }) => { pageSize = Number.parseInt(pageSize); const client = new EC2Client({}); const d = new Date(); const year = d.getFullYear(); const month = `0${d.getMonth() + 1}`.slice(-2); const launchTimePattern = `${year}-${month}-*`; const paginator = paginateDescribeInstances( { client, pageSize, }, { Filters: [ { Name: "architecture", Values: architectures }, { Name: "instance-state-name", Values: ["running"] }, { Name: "launch-time", Values: [launchTimePattern], }, ], }, ); try { /** * @type {import('@aws-sdk/client-ec2').Instance[]} */ const instanceList = []; for await (const page of paginator) { const { Reservations } = page; for (const reservation of Reservations) { instanceList.push(...reservation.Instances); } } console.log( `Running instances launched this month:\n\n${instanceList.map((instance) => instance.InstanceId).join("\n")}`, ); } catch (caught) { if (caught instanceof Error && caught.name === "InvalidParameterValue") { console.warn(`${caught.message}.`); } else { throw caught; } } };
  • Para obter detalhes da API, consulte DescribeInstances em Referência AWS SDK para JavaScript da API.

Kotlin
SDK para Kotlin
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

suspend fun describeEC2Instances() { val request = DescribeInstancesRequest { maxResults = 6 } Ec2Client.fromEnvironment { region = "us-west-2" }.use { ec2 -> val response = ec2.describeInstances(request) response.reservations?.forEach { reservation -> reservation.instances?.forEach { instance -> println("Instance Id is ${instance.instanceId}") println("Image id is ${instance.imageId}") println("Instance type is ${instance.instanceType}") println("Instance state name is ${instance.state?.name}") println("monitoring information is ${instance.monitoring?.state}") } } } }
  • Para obter detalhes da API, consulte a DescribeInstances referência da API AWS SDK para Kotlin.

PowerShell
Ferramentas para PowerShell V4

Exemplo 1: esse exemplo descreve a instância especificada.

(Get-EC2Instance -InstanceId i-12345678).Instances

Saída:

AmiLaunchIndex : 0 Architecture : x86_64 BlockDeviceMappings : {/dev/sda1} ClientToken : TleEy1448154045270 EbsOptimized : False Hypervisor : xen IamInstanceProfile : Amazon.EC2.Model.IamInstanceProfile ImageId : ami-12345678 InstanceId : i-12345678 InstanceLifecycle : InstanceType : t2.micro KernelId : KeyName : my-key-pair LaunchTime : 12/4/2015 4:44:40 PM Monitoring : Amazon.EC2.Model.Monitoring NetworkInterfaces : {ip-10-0-2-172.us-west-2.compute.internal} Placement : Amazon.EC2.Model.Placement Platform : Windows PrivateDnsName : ip-10-0-2-172.us-west-2.compute.internal PrivateIpAddress : 10.0.2.172 ProductCodes : {} PublicDnsName : PublicIpAddress : RamdiskId : RootDeviceName : /dev/sda1 RootDeviceType : ebs SecurityGroups : {default} SourceDestCheck : True SpotInstanceRequestId : SriovNetSupport : State : Amazon.EC2.Model.InstanceState StateReason : StateTransitionReason : SubnetId : subnet-12345678 Tags : {Name} VirtualizationType : hvm VpcId : vpc-12345678

Exemplo 2: esse exemplo descreve todas as instâncias na região atual, agrupadas por reserva. Para ver os detalhes da instância, expanda a coleção de instâncias em cada objeto de reserva.

Get-EC2Instance

Saída:

GroupNames : {} Groups : {} Instances : {} OwnerId : 123456789012 RequesterId : 226008221399 ReservationId : r-c5df370c GroupNames : {} Groups : {} Instances : {} OwnerId : 123456789012 RequesterId : 854251627541 ReservationId : r-63e65bab ...

Exemplo 3: esse exemplo ilustra o uso de um filtro para consultar instâncias do EC2 em uma sub-rede específica de uma VPC.

(Get-EC2Instance -Filter @{Name="vpc-id";Values="vpc-1a2bc34d"},@{Name="subnet-id";Values="subnet-1a2b3c4d"}).Instances

Saída:

InstanceId InstanceType Platform PrivateIpAddress PublicIpAddress SecurityGroups SubnetId VpcId ---------- ------------ -------- ---------------- --------------- -------------- -------- ----- i-01af...82cf180e19 t2.medium Windows 10.0.0.98 ... subnet-1a2b3c4d vpc-1a2b3c4d i-0374...7e9d5b0c45 t2.xlarge Windows 10.0.0.53 ... subnet-1a2b3c4d vpc-1a2b3c4d

Exemplo 4: esse exemplo ilustra o uso de um filtro com vários valores para consultar instâncias do EC2 que estão em execução e que foram interrompidas

$InstanceParams = @{ Filter = @( @{'Name' = 'instance-state-name';'Values' = @("running","stopped")} ) } (Get-EC2Instance @InstanceParams).Instances

Saída:

InstanceId InstanceType Platform PrivateIpAddress PublicIpAddress SecurityGroups SubnetId VpcId ---------- ------------ -------- ---------------- --------------- -------------- -------- ----- i-05a9...f6c5f46e18 t3.medium 10.0.1.7 ... subnet-1a2b3c4d vpc-1a2b3c4d i-02cf...945c4fdd07 t3.medium Windows 10.0.1.8 ... subnet-1a2b3c4d vpc-1a2b3c4d i-0ac0...c037f9f3a1 t3.xlarge Windows 10.0.1.10 ... subnet-1a2b3c4d vpc-1a2b3c4d i-066b...57b7b08888 t3.medium Windows 10.0.1.11 ... subnet-1a2b3c4d vpc-1a2b3c4d i-0fee...82e83ccd72 t3.medium Windows 10.0.1.5 ... subnet-1a2b3c4d vpc-1a2b3c4d i-0a68...274cc5043b t3.medium Windows 10.0.1.6 ... subnet-1a2b3c4d vpc-1a2b3c4d

Exemplo 5: Este exemplo ilustra o uso de um filtro com vários valores para consultar instâncias do EC2 que estão em execução e interrompidas e o uso do Select-Object cmdlet para escolher valores específicos para saída.

$InstanceParams = @{ Filter = @( @{'Name' = 'instance-state-name';'Values' = @("running","stopped")} ) } $SelectParams = @{ Property = @( "InstanceID", "InstanceType", "Platform", "PrivateIpAddress", @{Name="Name";Expression={$_.Tags[$_.Tags.Key.IndexOf("Name")].Value}}, @{Name="State";Expression={$_.State.Name}} ) } $result = Get-EC2Instance @InstanceParams $result.Instances | Select-Object @SelectParams | Format-Table -AutoSize

Saída:

InstanceId InstanceType Platform PrivateIpAddress Name State ---------- ------------ -------- ---------------- ---- ----- i-05a9...f6c5f46e18 t3.medium 10.0.1.7 ec2-name-01 running i-02cf...945c4fdd07 t3.medium Windows 10.0.1.8 ec2-name-02 stopped i-0ac0...c037f9f3a1 t3.xlarge Windows 10.0.1.10 ec2-name-03 running i-066b...57b7b08888 t3.medium Windows 10.0.1.11 ec2-name-04 stopped i-0fee...82e83ccd72 t3.medium Windows 10.0.1.5 ec2-name-05 running i-0a68...274cc5043b t3.medium Windows 10.0.1.6 ec2-name-06 stopped
  • Para obter detalhes sobre a API, consulte DescribeInstances Ferramentas da AWS para PowerShell Cmdlet Reference (V4).

Ferramentas para PowerShell V5

Exemplo 1: esse exemplo descreve a instância especificada.

(Get-EC2Instance -InstanceId i-12345678).Instances

Saída:

AmiLaunchIndex : 0 Architecture : x86_64 BlockDeviceMappings : {/dev/sda1} ClientToken : TleEy1448154045270 EbsOptimized : False Hypervisor : xen IamInstanceProfile : Amazon.EC2.Model.IamInstanceProfile ImageId : ami-12345678 InstanceId : i-12345678 InstanceLifecycle : InstanceType : t2.micro KernelId : KeyName : my-key-pair LaunchTime : 12/4/2015 4:44:40 PM Monitoring : Amazon.EC2.Model.Monitoring NetworkInterfaces : {ip-10-0-2-172.us-west-2.compute.internal} Placement : Amazon.EC2.Model.Placement Platform : Windows PrivateDnsName : ip-10-0-2-172.us-west-2.compute.internal PrivateIpAddress : 10.0.2.172 ProductCodes : {} PublicDnsName : PublicIpAddress : RamdiskId : RootDeviceName : /dev/sda1 RootDeviceType : ebs SecurityGroups : {default} SourceDestCheck : True SpotInstanceRequestId : SriovNetSupport : State : Amazon.EC2.Model.InstanceState StateReason : StateTransitionReason : SubnetId : subnet-12345678 Tags : {Name} VirtualizationType : hvm VpcId : vpc-12345678

Exemplo 2: esse exemplo descreve todas as instâncias na região atual, agrupadas por reserva. Para ver os detalhes da instância, expanda a coleção de instâncias em cada objeto de reserva.

Get-EC2Instance

Saída:

GroupNames : {} Groups : {} Instances : {} OwnerId : 123456789012 RequesterId : 226008221399 ReservationId : r-c5df370c GroupNames : {} Groups : {} Instances : {} OwnerId : 123456789012 RequesterId : 854251627541 ReservationId : r-63e65bab ...

Exemplo 3: esse exemplo ilustra o uso de um filtro para consultar instâncias do EC2 em uma sub-rede específica de uma VPC.

(Get-EC2Instance -Filter @{Name="vpc-id";Values="vpc-1a2bc34d"},@{Name="subnet-id";Values="subnet-1a2b3c4d"}).Instances

Saída:

InstanceId InstanceType Platform PrivateIpAddress PublicIpAddress SecurityGroups SubnetId VpcId ---------- ------------ -------- ---------------- --------------- -------------- -------- ----- i-01af...82cf180e19 t2.medium Windows 10.0.0.98 ... subnet-1a2b3c4d vpc-1a2b3c4d i-0374...7e9d5b0c45 t2.xlarge Windows 10.0.0.53 ... subnet-1a2b3c4d vpc-1a2b3c4d

Exemplo 4: esse exemplo ilustra o uso de um filtro com vários valores para consultar instâncias do EC2 que estão em execução e que foram interrompidas

$InstanceParams = @{ Filter = @( @{'Name' = 'instance-state-name';'Values' = @("running","stopped")} ) } (Get-EC2Instance @InstanceParams).Instances

Saída:

InstanceId InstanceType Platform PrivateIpAddress PublicIpAddress SecurityGroups SubnetId VpcId ---------- ------------ -------- ---------------- --------------- -------------- -------- ----- i-05a9...f6c5f46e18 t3.medium 10.0.1.7 ... subnet-1a2b3c4d vpc-1a2b3c4d i-02cf...945c4fdd07 t3.medium Windows 10.0.1.8 ... subnet-1a2b3c4d vpc-1a2b3c4d i-0ac0...c037f9f3a1 t3.xlarge Windows 10.0.1.10 ... subnet-1a2b3c4d vpc-1a2b3c4d i-066b...57b7b08888 t3.medium Windows 10.0.1.11 ... subnet-1a2b3c4d vpc-1a2b3c4d i-0fee...82e83ccd72 t3.medium Windows 10.0.1.5 ... subnet-1a2b3c4d vpc-1a2b3c4d i-0a68...274cc5043b t3.medium Windows 10.0.1.6 ... subnet-1a2b3c4d vpc-1a2b3c4d

Exemplo 5: Este exemplo ilustra o uso de um filtro com vários valores para consultar instâncias do EC2 que estão em execução e interrompidas e o uso do Select-Object cmdlet para escolher valores específicos para saída.

$InstanceParams = @{ Filter = @( @{'Name' = 'instance-state-name';'Values' = @("running","stopped")} ) } $SelectParams = @{ Property = @( "InstanceID", "InstanceType", "Platform", "PrivateIpAddress", @{Name="Name";Expression={$_.Tags[$_.Tags.Key.IndexOf("Name")].Value}}, @{Name="State";Expression={$_.State.Name}} ) } $result = Get-EC2Instance @InstanceParams $result.Instances | Select-Object @SelectParams | Format-Table -AutoSize

Saída:

InstanceId InstanceType Platform PrivateIpAddress Name State ---------- ------------ -------- ---------------- ---- ----- i-05a9...f6c5f46e18 t3.medium 10.0.1.7 ec2-name-01 running i-02cf...945c4fdd07 t3.medium Windows 10.0.1.8 ec2-name-02 stopped i-0ac0...c037f9f3a1 t3.xlarge Windows 10.0.1.10 ec2-name-03 running i-066b...57b7b08888 t3.medium Windows 10.0.1.11 ec2-name-04 stopped i-0fee...82e83ccd72 t3.medium Windows 10.0.1.5 ec2-name-05 running i-0a68...274cc5043b t3.medium Windows 10.0.1.6 ec2-name-06 stopped

Exemplo 6: Esse exemplo valida as permissões para obter instâncias do EC2 usando o DryRun parâmetro sem realmente buscá-las. Nota: se isso for feito com sucesso, será gerada uma exceção, que é o comportamento esperado.

Get-EC2Tag -DryRun $true

Saída:

Get-EC2Instance: Request would have succeeded, but DryRun flag is set.
  • Para obter detalhes sobre a API, consulte DescribeInstances Ferramentas da AWS para PowerShell Cmdlet Reference (V5).

Python
SDK para Python (Boto3)
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

class EC2InstanceWrapper: """Encapsulates Amazon Elastic Compute Cloud (Amazon EC2) instance actions using the client interface.""" def __init__( self, ec2_client: Any, instances: Optional[List[Dict[str, Any]]] = None ) -> None: """ Initializes the EC2InstanceWrapper with an EC2 client and optional instances. :param ec2_client: A Boto3 Amazon EC2 client. This client provides low-level access to AWS EC2 services. :param instances: A list of dictionaries representing Boto3 Instance objects. These are high-level objects that wrap instance actions. """ self.ec2_client = ec2_client self.instances = instances or [] @classmethod def from_client(cls) -> "EC2InstanceWrapper": """ Creates an EC2InstanceWrapper instance with a default EC2 client. :return: An instance of EC2InstanceWrapper initialized with the default EC2 client. """ ec2_client = boto3.client("ec2") return cls(ec2_client) def display(self, state_filter: Optional[str] = "running") -> None: """ Displays information about instances, filtering by the specified state. :param state_filter: The instance state to include in the output. Only instances in this state will be displayed. Default is 'running'. Example states: 'running', 'stopped'. """ if not self.instances: logger.info("No instances to display.") return instance_ids = [instance["InstanceId"] for instance in self.instances] paginator = self.ec2_client.get_paginator("describe_instances") page_iterator = paginator.paginate(InstanceIds=instance_ids) try: for page in page_iterator: for reservation in page["Reservations"]: for instance in reservation["Instances"]: instance_state = instance["State"]["Name"] # Apply the state filter (default is 'running') if state_filter and instance_state != state_filter: continue # Skip this instance if it doesn't match the filter # Create a formatted string with instance details instance_info = ( f"• ID: {instance['InstanceId']}\n" f"• Image ID: {instance['ImageId']}\n" f"• Instance type: {instance['InstanceType']}\n" f"• Key name: {instance['KeyName']}\n" f"• VPC ID: {instance['VpcId']}\n" f"• Public IP: {instance.get('PublicIpAddress', 'N/A')}\n" f"• State: {instance_state}" ) print(instance_info) except ClientError as err: logger.error( f"Failed to display instance(s). : {' '.join(map(str, instance_ids))}" ) error_code = err.response["Error"]["Code"] if error_code == "InvalidInstanceID.NotFound": logger.error( "One or more instance IDs do not exist. " "Please verify the instance IDs and try again." ) raise
  • Para obter detalhes da API, consulte a DescribeInstances Referência da API AWS SDK for Python (Boto3).

Ruby
SDK para Ruby
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

require 'aws-sdk-ec2' # @param ec2_resource [Aws::EC2::Resource] An initialized EC2 resource object. # @example # list_instance_ids_states(Aws::EC2::Resource.new(region: 'us-west-2')) def list_instance_ids_states(ec2_resource) response = ec2_resource.instances if response.count.zero? puts 'No instances found.' else puts 'Instances -- ID, state:' response.each do |instance| puts "#{instance.id}, #{instance.state.name}" end end rescue StandardError => e puts "Error getting information about instances: #{e.message}" end # Example usage: def run_me region = '' # Print usage information and then stop. if ARGV[0] == '--help' || ARGV[0] == '-h' puts 'Usage: ruby ec2-ruby-example-get-all-instance-info.rb REGION' # Replace us-west-2 with the AWS Region you're using for Amazon EC2. puts 'Example: ruby ec2-ruby-example-get-all-instance-info.rb us-west-2' exit 1 # If no values are specified at the command prompt, use these default values. # Replace us-west-2 with the AWS Region you're using for Amazon EC2. elsif ARGV.count.zero? region = 'us-west-2' # Otherwise, use the values as specified at the command prompt. else region = ARGV[0] end ec2_resource = Aws::EC2::Resource.new(region: region) list_instance_ids_states(ec2_resource) end run_me if $PROGRAM_NAME == __FILE__
  • Para obter detalhes da API, consulte DescribeInstances em Referência AWS SDK para Ruby da API.

Rust
SDK para Rust
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

Recupere detalhes de uma instância do EC2.

pub async fn describe_instance(&self, instance_id: &str) -> Result<Instance, EC2Error> { let response = self .client .describe_instances() .instance_ids(instance_id) .send() .await?; let instance = response .reservations() .first() .ok_or_else(|| EC2Error::new(format!("No instance reservations for {instance_id}")))? .instances() .first() .ok_or_else(|| { EC2Error::new(format!("No instances in reservation for {instance_id}")) })?; Ok(instance.clone()) }

Depois de criar uma instância do EC2, recupere e armazene seus detalhes.

/// Create an EC2 instance with the given ID on a given type, using a /// generated KeyPair and applying a list of security groups. pub async fn create( &mut self, ec2: &EC2, image_id: &str, instance_type: InstanceType, key_pair: &KeyPairInfo, security_groups: Vec<&SecurityGroup>, ) -> Result<(), EC2Error> { let instance_id = ec2 .create_instance(image_id, instance_type, key_pair, security_groups) .await?; let instance = ec2.describe_instance(&instance_id).await?; self.instance = Some(instance); Ok(()) }
  • Para obter detalhes da API, consulte a DescribeInstances referência da API AWS SDK for Rust.

SAP ABAP
SDK para SAP ABAP
nota

Há mais informações sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no AWS Code Examples Repository.

TRY. oo_result = lo_ec2->describeinstances( ). " oo_result is returned for testing purposes. " " Retrieving details of EC2 instances. " DATA: lv_istance_id TYPE /aws1/ec2string, lv_status TYPE /aws1/ec2instancestatename, lv_instance_type TYPE /aws1/ec2instancetype, lv_image_id TYPE /aws1/ec2string. LOOP AT oo_result->get_reservations( ) INTO DATA(lo_reservation). LOOP AT lo_reservation->get_instances( ) INTO DATA(lo_instance). lv_istance_id = lo_instance->get_instanceid( ). lv_status = lo_instance->get_state( )->get_name( ). lv_instance_type = lo_instance->get_instancetype( ). lv_image_id = lo_instance->get_imageid( ). ENDLOOP. ENDLOOP. MESSAGE 'Retrieved information about EC2 instances.' TYPE 'I'. CATCH /aws1/cx_rt_service_generic INTO DATA(lo_exception). DATA(lv_error) = |"{ lo_exception->av_err_code }" - { lo_exception->av_err_msg }|. MESSAGE lv_error TYPE 'E'. ENDTRY.
  • Para obter detalhes da API, consulte a DescribeInstances referência da API AWS SDK for SAP ABAP.

Para obter uma lista completa de guias para desenvolvedores de AWS SDK e exemplos de código, consulteCrie recursos do Amazon EC2 usando um AWS SDK. Este tópico também inclui informações sobre como começar e detalhes sobre versões anteriores do SDK.