

There are more AWS SDK examples available in the [AWS Doc SDK Examples](https://github.com/awsdocs/aws-doc-sdk-examples) GitHub repo.

# Code examples for Amazon EC2 using AWS SDKs
<a name="ec2_code_examples"></a>

The following code examples show you how to use Amazon Elastic Compute Cloud with an AWS software development kit (SDK).

*Basics* are code examples that show you how to perform the essential operations within a service.

*Actions* are code excerpts from larger programs and must be run in context. While actions show you how to call individual service functions, you can see actions in context in their related scenarios.

*Scenarios* are code examples that show you how to accomplish specific tasks by calling multiple functions within a service or combined with other AWS services.

**More resources**
+  **[ Amazon EC2 User Guide](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)** – More information about Amazon EC2.
+ **[Amazon EC2 API Reference](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Welcome.html)** – Details about all available Amazon EC2 actions.
+ **[AWS Developer Center](https://aws.amazon.com/developer/code-examples/?awsf.sdk-code-examples-product=product%23ec2)** – Code examples that you can filter by category or full-text search.
+ **[AWS SDK Examples](https://github.com/awsdocs/aws-doc-sdk-examples)** – GitHub repo with complete code in preferred languages. Includes instructions for setting up and running the code.

**Contents**
+ [Basics](ec2_code_examples_basics.md)
  + [Hello Amazon EC2](ec2_example_ec2_Hello_section.md)
  + [Learn the basics](ec2_example_ec2_Scenario_GetStartedInstances_section.md)
  + [Actions](ec2_code_examples_actions.md)
    + [`AcceptVpcPeeringConnection`](ec2_example_ec2_AcceptVpcPeeringConnection_section.md)
    + [`AllocateAddress`](ec2_example_ec2_AllocateAddress_section.md)
    + [`AllocateHosts`](ec2_example_ec2_AllocateHosts_section.md)
    + [`AssignPrivateIpAddresses`](ec2_example_ec2_AssignPrivateIpAddresses_section.md)
    + [`AssociateAddress`](ec2_example_ec2_AssociateAddress_section.md)
    + [`AssociateDhcpOptions`](ec2_example_ec2_AssociateDhcpOptions_section.md)
    + [`AssociateRouteTable`](ec2_example_ec2_AssociateRouteTable_section.md)
    + [`AttachInternetGateway`](ec2_example_ec2_AttachInternetGateway_section.md)
    + [`AttachNetworkInterface`](ec2_example_ec2_AttachNetworkInterface_section.md)
    + [`AttachVolume`](ec2_example_ec2_AttachVolume_section.md)
    + [`AttachVpnGateway`](ec2_example_ec2_AttachVpnGateway_section.md)
    + [`AuthorizeSecurityGroupEgress`](ec2_example_ec2_AuthorizeSecurityGroupEgress_section.md)
    + [`AuthorizeSecurityGroupIngress`](ec2_example_ec2_AuthorizeSecurityGroupIngress_section.md)
    + [`CancelCapacityReservation`](ec2_example_ec2_CancelCapacityReservation_section.md)
    + [`CancelImportTask`](ec2_example_ec2_CancelImportTask_section.md)
    + [`CancelSpotFleetRequests`](ec2_example_ec2_CancelSpotFleetRequests_section.md)
    + [`CancelSpotInstanceRequests`](ec2_example_ec2_CancelSpotInstanceRequests_section.md)
    + [`ConfirmProductInstance`](ec2_example_ec2_ConfirmProductInstance_section.md)
    + [`CopyImage`](ec2_example_ec2_CopyImage_section.md)
    + [`CopySnapshot`](ec2_example_ec2_CopySnapshot_section.md)
    + [`CreateCapacityReservation`](ec2_example_ec2_CreateCapacityReservation_section.md)
    + [`CreateCustomerGateway`](ec2_example_ec2_CreateCustomerGateway_section.md)
    + [`CreateDhcpOptions`](ec2_example_ec2_CreateDhcpOptions_section.md)
    + [`CreateFlowLogs`](ec2_example_ec2_CreateFlowLogs_section.md)
    + [`CreateImage`](ec2_example_ec2_CreateImage_section.md)
    + [`CreateInstanceExportTask`](ec2_example_ec2_CreateInstanceExportTask_section.md)
    + [`CreateInternetGateway`](ec2_example_ec2_CreateInternetGateway_section.md)
    + [`CreateKeyPair`](ec2_example_ec2_CreateKeyPair_section.md)
    + [`CreateLaunchTemplate`](ec2_example_ec2_CreateLaunchTemplate_section.md)
    + [`CreateNetworkAcl`](ec2_example_ec2_CreateNetworkAcl_section.md)
    + [`CreateNetworkAclEntry`](ec2_example_ec2_CreateNetworkAclEntry_section.md)
    + [`CreateNetworkInterface`](ec2_example_ec2_CreateNetworkInterface_section.md)
    + [`CreatePlacementGroup`](ec2_example_ec2_CreatePlacementGroup_section.md)
    + [`CreateRoute`](ec2_example_ec2_CreateRoute_section.md)
    + [`CreateRouteTable`](ec2_example_ec2_CreateRouteTable_section.md)
    + [`CreateSecurityGroup`](ec2_example_ec2_CreateSecurityGroup_section.md)
    + [`CreateSnapshot`](ec2_example_ec2_CreateSnapshot_section.md)
    + [`CreateSpotDatafeedSubscription`](ec2_example_ec2_CreateSpotDatafeedSubscription_section.md)
    + [`CreateSubnet`](ec2_example_ec2_CreateSubnet_section.md)
    + [`CreateTags`](ec2_example_ec2_CreateTags_section.md)
    + [`CreateVolume`](ec2_example_ec2_CreateVolume_section.md)
    + [`CreateVpc`](ec2_example_ec2_CreateVpc_section.md)
    + [`CreateVpcEndpoint`](ec2_example_ec2_CreateVpcEndpoint_section.md)
    + [`CreateVpnConnection`](ec2_example_ec2_CreateVpnConnection_section.md)
    + [`CreateVpnConnectionRoute`](ec2_example_ec2_CreateVpnConnectionRoute_section.md)
    + [`CreateVpnGateway`](ec2_example_ec2_CreateVpnGateway_section.md)
    + [`DeleteCustomerGateway`](ec2_example_ec2_DeleteCustomerGateway_section.md)
    + [`DeleteDhcpOptions`](ec2_example_ec2_DeleteDhcpOptions_section.md)
    + [`DeleteFlowLogs`](ec2_example_ec2_DeleteFlowLogs_section.md)
    + [`DeleteInternetGateway`](ec2_example_ec2_DeleteInternetGateway_section.md)
    + [`DeleteKeyPair`](ec2_example_ec2_DeleteKeyPair_section.md)
    + [`DeleteLaunchTemplate`](ec2_example_ec2_DeleteLaunchTemplate_section.md)
    + [`DeleteNetworkAcl`](ec2_example_ec2_DeleteNetworkAcl_section.md)
    + [`DeleteNetworkAclEntry`](ec2_example_ec2_DeleteNetworkAclEntry_section.md)
    + [`DeleteNetworkInterface`](ec2_example_ec2_DeleteNetworkInterface_section.md)
    + [`DeletePlacementGroup`](ec2_example_ec2_DeletePlacementGroup_section.md)
    + [`DeleteRoute`](ec2_example_ec2_DeleteRoute_section.md)
    + [`DeleteRouteTable`](ec2_example_ec2_DeleteRouteTable_section.md)
    + [`DeleteSecurityGroup`](ec2_example_ec2_DeleteSecurityGroup_section.md)
    + [`DeleteSnapshot`](ec2_example_ec2_DeleteSnapshot_section.md)
    + [`DeleteSpotDatafeedSubscription`](ec2_example_ec2_DeleteSpotDatafeedSubscription_section.md)
    + [`DeleteSubnet`](ec2_example_ec2_DeleteSubnet_section.md)
    + [`DeleteTags`](ec2_example_ec2_DeleteTags_section.md)
    + [`DeleteVolume`](ec2_example_ec2_DeleteVolume_section.md)
    + [`DeleteVpc`](ec2_example_ec2_DeleteVpc_section.md)
    + [`DeleteVpcEndpoints`](ec2_example_ec2_DeleteVpcEndpoints_section.md)
    + [`DeleteVpnConnection`](ec2_example_ec2_DeleteVpnConnection_section.md)
    + [`DeleteVpnConnectionRoute`](ec2_example_ec2_DeleteVpnConnectionRoute_section.md)
    + [`DeleteVpnGateway`](ec2_example_ec2_DeleteVpnGateway_section.md)
    + [`DeregisterImage`](ec2_example_ec2_DeregisterImage_section.md)
    + [`DescribeAccountAttributes`](ec2_example_ec2_DescribeAccountAttributes_section.md)
    + [`DescribeAddresses`](ec2_example_ec2_DescribeAddresses_section.md)
    + [`DescribeAvailabilityZones`](ec2_example_ec2_DescribeAvailabilityZones_section.md)
    + [`DescribeBundleTasks`](ec2_example_ec2_DescribeBundleTasks_section.md)
    + [`DescribeCapacityReservations`](ec2_example_ec2_DescribeCapacityReservations_section.md)
    + [`DescribeCustomerGateways`](ec2_example_ec2_DescribeCustomerGateways_section.md)
    + [`DescribeDhcpOptions`](ec2_example_ec2_DescribeDhcpOptions_section.md)
    + [`DescribeFlowLogs`](ec2_example_ec2_DescribeFlowLogs_section.md)
    + [`DescribeHostReservationOfferings`](ec2_example_ec2_DescribeHostReservationOfferings_section.md)
    + [`DescribeHosts`](ec2_example_ec2_DescribeHosts_section.md)
    + [`DescribeIamInstanceProfileAssociations`](ec2_example_ec2_DescribeIamInstanceProfileAssociations_section.md)
    + [`DescribeIdFormat`](ec2_example_ec2_DescribeIdFormat_section.md)
    + [`DescribeIdentityIdFormat`](ec2_example_ec2_DescribeIdentityIdFormat_section.md)
    + [`DescribeImageAttribute`](ec2_example_ec2_DescribeImageAttribute_section.md)
    + [`DescribeImages`](ec2_example_ec2_DescribeImages_section.md)
    + [`DescribeImportImageTasks`](ec2_example_ec2_DescribeImportImageTasks_section.md)
    + [`DescribeImportSnapshotTasks`](ec2_example_ec2_DescribeImportSnapshotTasks_section.md)
    + [`DescribeInstanceAttribute`](ec2_example_ec2_DescribeInstanceAttribute_section.md)
    + [`DescribeInstanceStatus`](ec2_example_ec2_DescribeInstanceStatus_section.md)
    + [`DescribeInstanceTypes`](ec2_example_ec2_DescribeInstanceTypes_section.md)
    + [`DescribeInstances`](ec2_example_ec2_DescribeInstances_section.md)
    + [`DescribeInternetGateways`](ec2_example_ec2_DescribeInternetGateways_section.md)
    + [`DescribeKeyPairs`](ec2_example_ec2_DescribeKeyPairs_section.md)
    + [`DescribeNetworkAcls`](ec2_example_ec2_DescribeNetworkAcls_section.md)
    + [`DescribeNetworkInterfaceAttribute`](ec2_example_ec2_DescribeNetworkInterfaceAttribute_section.md)
    + [`DescribeNetworkInterfaces`](ec2_example_ec2_DescribeNetworkInterfaces_section.md)
    + [`DescribePlacementGroups`](ec2_example_ec2_DescribePlacementGroups_section.md)
    + [`DescribePrefixLists`](ec2_example_ec2_DescribePrefixLists_section.md)
    + [`DescribeRegions`](ec2_example_ec2_DescribeRegions_section.md)
    + [`DescribeRouteTables`](ec2_example_ec2_DescribeRouteTables_section.md)
    + [`DescribeScheduledInstanceAvailability`](ec2_example_ec2_DescribeScheduledInstanceAvailability_section.md)
    + [`DescribeScheduledInstances`](ec2_example_ec2_DescribeScheduledInstances_section.md)
    + [`DescribeSecurityGroups`](ec2_example_ec2_DescribeSecurityGroups_section.md)
    + [`DescribeSnapshotAttribute`](ec2_example_ec2_DescribeSnapshotAttribute_section.md)
    + [`DescribeSnapshots`](ec2_example_ec2_DescribeSnapshots_section.md)
    + [`DescribeSpotDatafeedSubscription`](ec2_example_ec2_DescribeSpotDatafeedSubscription_section.md)
    + [`DescribeSpotFleetInstances`](ec2_example_ec2_DescribeSpotFleetInstances_section.md)
    + [`DescribeSpotFleetRequestHistory`](ec2_example_ec2_DescribeSpotFleetRequestHistory_section.md)
    + [`DescribeSpotFleetRequests`](ec2_example_ec2_DescribeSpotFleetRequests_section.md)
    + [`DescribeSpotInstanceRequests`](ec2_example_ec2_DescribeSpotInstanceRequests_section.md)
    + [`DescribeSpotPriceHistory`](ec2_example_ec2_DescribeSpotPriceHistory_section.md)
    + [`DescribeSubnets`](ec2_example_ec2_DescribeSubnets_section.md)
    + [`DescribeTags`](ec2_example_ec2_DescribeTags_section.md)
    + [`DescribeVolumeAttribute`](ec2_example_ec2_DescribeVolumeAttribute_section.md)
    + [`DescribeVolumeStatus`](ec2_example_ec2_DescribeVolumeStatus_section.md)
    + [`DescribeVolumes`](ec2_example_ec2_DescribeVolumes_section.md)
    + [`DescribeVpcAttribute`](ec2_example_ec2_DescribeVpcAttribute_section.md)
    + [`DescribeVpcClassicLink`](ec2_example_ec2_DescribeVpcClassicLink_section.md)
    + [`DescribeVpcClassicLinkDnsSupport`](ec2_example_ec2_DescribeVpcClassicLinkDnsSupport_section.md)
    + [`DescribeVpcEndpointServices`](ec2_example_ec2_DescribeVpcEndpointServices_section.md)
    + [`DescribeVpcEndpoints`](ec2_example_ec2_DescribeVpcEndpoints_section.md)
    + [`DescribeVpcs`](ec2_example_ec2_DescribeVpcs_section.md)
    + [`DescribeVpnConnections`](ec2_example_ec2_DescribeVpnConnections_section.md)
    + [`DescribeVpnGateways`](ec2_example_ec2_DescribeVpnGateways_section.md)
    + [`DetachInternetGateway`](ec2_example_ec2_DetachInternetGateway_section.md)
    + [`DetachNetworkInterface`](ec2_example_ec2_DetachNetworkInterface_section.md)
    + [`DetachVolume`](ec2_example_ec2_DetachVolume_section.md)
    + [`DetachVpnGateway`](ec2_example_ec2_DetachVpnGateway_section.md)
    + [`DisableVgwRoutePropagation`](ec2_example_ec2_DisableVgwRoutePropagation_section.md)
    + [`DisableVpcClassicLink`](ec2_example_ec2_DisableVpcClassicLink_section.md)
    + [`DisableVpcClassicLinkDnsSupport`](ec2_example_ec2_DisableVpcClassicLinkDnsSupport_section.md)
    + [`DisassociateAddress`](ec2_example_ec2_DisassociateAddress_section.md)
    + [`DisassociateRouteTable`](ec2_example_ec2_DisassociateRouteTable_section.md)
    + [`EnableVgwRoutePropagation`](ec2_example_ec2_EnableVgwRoutePropagation_section.md)
    + [`EnableVolumeIo`](ec2_example_ec2_EnableVolumeIo_section.md)
    + [`EnableVpcClassicLink`](ec2_example_ec2_EnableVpcClassicLink_section.md)
    + [`EnableVpcClassicLinkDnsSupport`](ec2_example_ec2_EnableVpcClassicLinkDnsSupport_section.md)
    + [`GetConsoleOutput`](ec2_example_ec2_GetConsoleOutput_section.md)
    + [`GetHostReservationPurchasePreview`](ec2_example_ec2_GetHostReservationPurchasePreview_section.md)
    + [`GetPasswordData`](ec2_example_ec2_GetPasswordData_section.md)
    + [`ImportImage`](ec2_example_ec2_ImportImage_section.md)
    + [`ImportKeyPair`](ec2_example_ec2_ImportKeyPair_section.md)
    + [`ImportSnapshot`](ec2_example_ec2_ImportSnapshot_section.md)
    + [`ModifyCapacityReservation`](ec2_example_ec2_ModifyCapacityReservation_section.md)
    + [`ModifyHosts`](ec2_example_ec2_ModifyHosts_section.md)
    + [`ModifyIdFormat`](ec2_example_ec2_ModifyIdFormat_section.md)
    + [`ModifyImageAttribute`](ec2_example_ec2_ModifyImageAttribute_section.md)
    + [`ModifyInstanceAttribute`](ec2_example_ec2_ModifyInstanceAttribute_section.md)
    + [`ModifyInstanceCreditSpecification`](ec2_example_ec2_ModifyInstanceCreditSpecification_section.md)
    + [`ModifyNetworkInterfaceAttribute`](ec2_example_ec2_ModifyNetworkInterfaceAttribute_section.md)
    + [`ModifyReservedInstances`](ec2_example_ec2_ModifyReservedInstances_section.md)
    + [`ModifySnapshotAttribute`](ec2_example_ec2_ModifySnapshotAttribute_section.md)
    + [`ModifySpotFleetRequest`](ec2_example_ec2_ModifySpotFleetRequest_section.md)
    + [`ModifySubnetAttribute`](ec2_example_ec2_ModifySubnetAttribute_section.md)
    + [`ModifyVolumeAttribute`](ec2_example_ec2_ModifyVolumeAttribute_section.md)
    + [`ModifyVpcAttribute`](ec2_example_ec2_ModifyVpcAttribute_section.md)
    + [`MonitorInstances`](ec2_example_ec2_MonitorInstances_section.md)
    + [`MoveAddressToVpc`](ec2_example_ec2_MoveAddressToVpc_section.md)
    + [`PurchaseHostReservation`](ec2_example_ec2_PurchaseHostReservation_section.md)
    + [`PurchaseScheduledInstances`](ec2_example_ec2_PurchaseScheduledInstances_section.md)
    + [`RebootInstances`](ec2_example_ec2_RebootInstances_section.md)
    + [`RegisterImage`](ec2_example_ec2_RegisterImage_section.md)
    + [`RejectVpcPeeringConnection`](ec2_example_ec2_RejectVpcPeeringConnection_section.md)
    + [`ReleaseAddress`](ec2_example_ec2_ReleaseAddress_section.md)
    + [`ReleaseHosts`](ec2_example_ec2_ReleaseHosts_section.md)
    + [`ReplaceIamInstanceProfileAssociation`](ec2_example_ec2_ReplaceIamInstanceProfileAssociation_section.md)
    + [`ReplaceNetworkAclAssociation`](ec2_example_ec2_ReplaceNetworkAclAssociation_section.md)
    + [`ReplaceNetworkAclEntry`](ec2_example_ec2_ReplaceNetworkAclEntry_section.md)
    + [`ReplaceRoute`](ec2_example_ec2_ReplaceRoute_section.md)
    + [`ReplaceRouteTableAssociation`](ec2_example_ec2_ReplaceRouteTableAssociation_section.md)
    + [`ReportInstanceStatus`](ec2_example_ec2_ReportInstanceStatus_section.md)
    + [`RequestSpotFleet`](ec2_example_ec2_RequestSpotFleet_section.md)
    + [`RequestSpotInstances`](ec2_example_ec2_RequestSpotInstances_section.md)
    + [`ResetImageAttribute`](ec2_example_ec2_ResetImageAttribute_section.md)
    + [`ResetInstanceAttribute`](ec2_example_ec2_ResetInstanceAttribute_section.md)
    + [`ResetNetworkInterfaceAttribute`](ec2_example_ec2_ResetNetworkInterfaceAttribute_section.md)
    + [`ResetSnapshotAttribute`](ec2_example_ec2_ResetSnapshotAttribute_section.md)
    + [`RevokeSecurityGroupEgress`](ec2_example_ec2_RevokeSecurityGroupEgress_section.md)
    + [`RevokeSecurityGroupIngress`](ec2_example_ec2_RevokeSecurityGroupIngress_section.md)
    + [`RunInstances`](ec2_example_ec2_RunInstances_section.md)
    + [`RunScheduledInstances`](ec2_example_ec2_RunScheduledInstances_section.md)
    + [`StartInstances`](ec2_example_ec2_StartInstances_section.md)
    + [`StopInstances`](ec2_example_ec2_StopInstances_section.md)
    + [`TerminateInstances`](ec2_example_ec2_TerminateInstances_section.md)
    + [`UnassignPrivateIpAddresses`](ec2_example_ec2_UnassignPrivateIpAddresses_section.md)
    + [`UnmonitorInstances`](ec2_example_ec2_UnmonitorInstances_section.md)
    + [`UpdateSecurityGroupRuleDescriptionsIngress`](ec2_example_ec2_UpdateSecurityGroupRuleDescriptionsIngress_section.md)
+ [Scenarios](ec2_code_examples_scenarios.md)
  + [Build and manage a resilient service](ec2_example_cross_ResilientService_section.md)
  + [Configure container service connectivity](ec2_example_ecs_ServiceConnect_085_section.md)
  + [Create a basic virtual private network](ec2_example_vpc_GettingStartedCLI_section.md)
  + [Create a container task for the serverless launch type](ec2_example_ecs_GettingStarted_086_section.md)
  + [Creating a container service for virtual machine instances](ec2_example_ecs_GettingStarted_018_section.md)
  + [Creating a relational database instance](ec2_example_rds_GettingStarted_036_section.md)
  + [Creating and managing a service networking mesh](ec2_example_vpc_lattice_GettingStarted_055_section.md)
  + [Creating and managing block storage volumes](ec2_example_ec2_GettingStarted_020_section.md)
  + [Get started with dedicated network connections](ec2_example_directconnect_GettingStarted_051_section.md)
  + [Get started with software marketplace purchasing](ec2_example_ec2_GettingStarted_030_section.md)
  + [Getting started with big data processing clusters](ec2_example_emr_GettingStarted_037_section.md)
  + [Getting started with document databases](ec2_example_docdb_GettingStarted_025_section.md)
  + [Getting started with graph databases](ec2_example_ec2_GettingStarted_064_section.md)
  + [Getting started with in-memory caching](ec2_example_ec2_GettingStarted_065_section.md)
  + [Getting started with load balancing](ec2_example_elastic_load_balancing_v2_GettingStarted_058_section.md)
  + [Getting started with managed streaming](ec2_example_ec2_GettingStarted_057_section.md)
  + [Getting started with network transit gateways](ec2_example_vpc_TransitGatewayGettingStarted_section.md)
  + [Getting started with video transport streaming](ec2_example_mediaconnect_GettingStarted_081_section.md)
  + [Getting started with virtual machines](ec2_example_ec2_GettingStarted_013_section.md)
  + [Run CPU stress tests on virtual machine instances using fault injection](ec2_example_iam_GettingStarted_069_section.md)
  + [Virtual private network with IP address management](ec2_example_vpc_GettingStartedIpam_section.md)
  + [Virtual private network with private servers](ec2_example_vpc_GettingStartedPrivate_section.md)
  + [Working with block storage encryption, snapshots, and volume initialization](ec2_example_ec2_GettingStarted_022_section.md)
  + [Working with network peering connections](ec2_example_ec2_GettingStarted_015_section.md)