Advance AWS Interviewquestions
Advance AWS Interviewquestions
Answer:
Amazon Elastic Compute Cloud (Amazon EC2) is a Amazon web service that provides resizable
(scalable) computing capacity in the cloud. You can use Amazon EC2 to launch as many virtual
servers you need. In Amazon EC2 you can configure security and networking as well as
manage storage. Amazon EC2 service also helps in obtaining and configuring capacity using
minimal friction.
2. Question 2. What Are The Features Of The Amazon Ec2 Service?
Answer:
As the Amazon EC2 service is a cloud service so it has all the cloud features.
Amazon EC2 provides the following features:
o Virtual computing environment (known as instances)
o Pre-configured templates for your instances (known as Amazon Machine Images
– AMIs)
o Amazon Machine Images (AMIs) is a complete package that you need for your
server (including the operating system and additional software)
o Amazon EC2 provides various configurations of CPU, memory, storage and
networking capacity for your instances (known as instance type)
o Secure login information for your instances using key pairs (AWS stores the
public key and you can store the private key in a secure place)
o Storage volumes of temporary data is deleted when you stop or terminate your
instance (known as instance store volumes)
o Amazon EC2 provides persistent storage volumes (using Amazon Elastic Block
Store – EBS)
o A firewall that enables you to specify the protocols, ports, and source IP ranges
that can reach your instances using security groups
o Static IP addresses for dynamic cloud computing (known as Elastic IP address)
o Amazon EC2 provides metadata (known as tags)
o Amazon EC2 provides virtual networks that are logically isolated from the rest of
the AWS cloud, and that you can optionally connect to your own network (known as
virtual private clouds – VPCs)
3. Question 3. What Are The Security Best Practices For Amazon Ec2?
Answer:
For secure Amazon EC2 best practices, follow the following steps:
o Use AWS identity and access management to control access to your AWS
resources
o Restrict access by allowing only trusted hosts or networks to access ports on
your instance
o Review the rules in your security groups regularly
o Only open up permissions that your require
o Disable password-based login, for instance, launched from your AMI Complete
Amazon Web Services Tutorials
4. What are the types of Amazon EC2 instances?
Answer:
EC2 provide a total of 8 families of instance type which are classified according to their use
case.
a) General purpose (fixed performance and burstable performance)
b) Compute optimized (c3 and c4)
c) GPU optimized (g2)
d) Memory optimized (r3)
e) Storage optimized (I2 and D2)
9. Question 8. Can S3 Be Cast-off With Ec2 Instances, In Case Of “yes” Please Specify How
?
Answer :
Yes, it can be cast-off for instances with root approaches backed by native occurrence storage.
By using Amazon S3, developers have access to the similar extremely scalable, dependable,
fast, low-priced data storage substructure that Amazon uses to track its own worldwide
network of web sites. In order to perform systems in the Amazon EC2 atmosphere, developers
use the tools providing to load their Amazon Machine Images (AMIs) into Amazon S3 and to
transfer them between Amazon S3 and Amazon EC2. Additional use case might be for
websites hosted on EC2 to load their stationary content from S3
10. Question 9. What Are Regions And Availability Zones In Amazon Ec2 ? Explain In
Brief ?
Answer :
Amazon EC2 is hosted in multiple locations world-wide. These locations are composed of
regions and Availability Zones. Each region is a separate geographic area. Each region has
multiple, isolated locations known as Availability Zones.
Each region is completely independent. Each Availability Zone is isolated, but the Availability
Zones in a region are connected through low-latency links.
Question 10. Explain How To Launch Ec2 Instance In An Availability Zone ?
Answer :
Each region is completely independent and each Availability Zone is isolated. When you view
your resources, you’ll only see the resources tied to the region you have specified.
To launch a EC2 instance, you must select an AMI that’s in the same region (if the AMI is in
another region then you can copy the AMI to the region you are using). Now select an
Availability Zone or let AWS choose for you. After creating the EC2 instance, it will show up in
selected Availability Zone.
11. Question 21. What Is Amazon Machine Image And What Is The Relation Between
Instance And Ami ?
Answer :
Amazon Web Services provides several ways to access Amazon EC2, like web-based interface,
AWS Command Line Interface (CLI) and Amazon Tools for Windows Powershell. First, you
need to sign up for an AWS account and you can access Amazon EC2.
Amazon EC2 provides a Query API. These requests are HTTP or HTTPS requests that use the
HTTP verbs GET or POST and a Query parameter named Action.
12. Question 22. What Is Amazon Machine Image (ami) ?
Answer :
An Amazon Machine Image (AMI) is a template that contains a software configuration (for
example, an operating system, an application server, and applications). From an AMI, we
launch an instance, which is a copy of the AMI running as a virtual server in the cloud. We can
even launch multiple instances of an AMI.
13. Question 23. What Is The Relation Between Instance And Ami ?
Answer :
We can launch different types of instances from a single AMI. An instance type essentially
determines the hardware of the host computer used for your instance. Each instance type
offers different compute and memory capabilities.
After we launch an instance, it looks like a traditional host, and we can interact with it as we
would do with any computer. We have complete control of our instances; we can use sudo to
run commands that require root privileges.
14. Question 24. How To Migrate An Instance To Another Availability Zone ?
Answer :
You can migrate your EC2 instance from one Availability Zone to another.
Following are the steps to migrate an Instance to another Availability Zone:
o Create an AMI from the running instance
o Launch an instance from the AMI that you just created, specify the new
Availability Zone
o You can use the same instance type as the original instance, or select a new
instance type
o If the original instance has an associated Elastic IP address, then associate it with
the new instance
o If the original instance is a Reserved Instance, change the Availability Zone for
your reservation
15. Question 25. What Is Key Pair ?
Answer :
AWS uses public-key cryptography to secure the login information for your instance. A Linux
instance has no password; you use a key pair to log in to your instance securely.
You specify the name of the key pair when you launch your instance, then provide the private
key when you log in using SSH.
16. Question 26. How To Create Key Pair ?
Answer :
We can create one using the Amazon EC2 console. To launch instances in multiple regions,
we’ll need to create a key pair in each region.
Following are the steps to create Key Pair:
o Sign in to Amaon Web Service.
o From the AWS dashboard, choose EC2 to open the Amazon EC2 console.
o From the navigation bar, select a region for the key pair.
o In the left navigation pane, under NETWORK & SECURITY, click Key Pairs.
o Click Create Key Pair.
o Enter a name for the new key pair in the Key pair name field of the Create Key
Pair dialog box, and then click Create.
o The private key file is automatically downloaded by your browser. The base file
name is the name you specified as the name of your key pair, and the file name
extension is .pem.
17. Question 27. What Is The Use Of Key Pair ?
Answer :
Key pair is used to log in to your instance securely. This is public-key cryptography to secure
the login information for your instance.
18. Question 28. How To Create Your Own Amazon Machine Image (ami) ?
Answer :
You can customize a instance that is launched from a public AMI and then save that
configuration as a custom AMI for your own use.
Instances that you launch from your AMI use all the customizations that you’ve made.
19. Question 29. How To Determine The Root Device Type Of Your Ami ?
Answer :
We can determine the Root Device type of AMI using following 2 methods.
Method 1: Following are the steps to determine the Root Device type of an AMI using the
console
o Open the Amazon EC2 console
o In the navigation pane, click AMIs, and select the AMI
o Check the value of Root Device Type in the Details tab as follows
o If the value is ebs, this is an Amazon EBS-backed AMI
o If the value is instance store, this is an instance store-backed AMI
Method 2: Following are the steps to determine the root device type of an AMI using the
command line
We can use one of the following commands.
o describe-images (AWS CLI)
o Get-EC2Image (AWS Tools for Windows PowerShell)
2. Question 30. What Is The Size Limit For Amazon Ec2 Instance Store-backed Amis And
Amazon Ebs-backed Amis ?
Answer :
All AMIs are categorized as either backed by Amazon EBS or backed by instance store.
Backed by Amazon EBS – means that the root device for an instance launched from the AMI is
an Amazon EBS volume created from an Amazon EBS snapshot.
Backed by instance store – means that the root device for an instance launched from the AMI
is an instance store volume created from a template stored in Amazon S3.
Root device size limit for –
Amazon EBS – Backed is 16 TiB
Amazon Instance Store-Backed is 10 GiB
The easy way to manage an Amazon AWS EC2 server is from the AWS management console GUI.
But, if your environment has multiple servers, then it gets bit tedious to manage it from the AWS GUI.
Also, if you are Linux sysadmin, you would prefer to manage your EC2 instances from the command line.
Pretty much anything that you can do from AWS console UI can be done from the command line.
This tutorial explains the 15 most frequently performed EC2 operations with AWS EC2 command line
examples.
If you are new to Amazon AWS: 10 Most Popular Amazon AWS Storage and Database Services
Quick Reference
For your future quick reference, here are all the commands mentioned in this tutorial. Make sure to read
the details provided in this tutorial below to understand more about these commands.
aws ec2 run-instances --dry-run --image-id ami-08111162 --count 1 --instance-type t1.micro --key-name
MyKeyPair --security-groups my-ami-security-group
aws ec2 create-image --instance-id i-44a44ac3 --name "Dev AMI" --description "AMI for development
server"
aws ec2 deregister-image --image-id ami-2d574747 && aws ec2 delete-snapshot --snapshot-id snap-
4e665454
The following “aws ec2 describe-instances” will display detailed information about all instances that are
managed by you. The output will be in JSON format.
If you have way too many instances, you can use the filter option to view a specific instance.
The following will display only the instance which has the “Name” tag set as “dev-server”.
..
..
"State": {
"Code": 80,
"Name": "stopped"
},
..
..
"InstanceId": "i-e5888e46",
..
From the above output, we can see that this instance is currently “stopped” and is not running.
2. Start an Instance
The following “aws ec2 start-instances” command will start the instance that is specified in the –
instance-ids field.
This will also display the current state and the previous state of the instance in the output. As you see
from the following output, previously this instance was “stopped” and now it is in “pending” state and
will be started soon.
"StartingInstances": [
"InstanceId": "i-dddddd70",
"CurrentState": {
"Code": 0,
"Name": "pending"
},
"PreviousState": {
"Code": 80,
"Name": "stopped"
If you want to start multiple instances using a single command, provide all the instance ids at the end as
shown below.
3. Stop an Instance
The following “aws ec2 stop-instances” command will stop the instance that is specified in the –
instance-ids field.
As you see from the output, previously this particular instance was in “running” state and currently it is
in “stopping” state and will be stopped very soon.
{
"StoppingInstances": [
"InstanceId": "i-5c8282ed",
"CurrentState": {
"Code": 64,
"Name": "stopping"
},
"PreviousState": {
"Code": 16,
"Name": "running"
The following are the possible state name and state code for an instance:
0 is for pending
16 is for running
32 is for shutting-down
48 is for terminated
64 is for stopping
80 is for stopped
If you execute the above command on an instance that is already stopped, you’ll see both the previous
state and the current state as stopped.
To stop multiple instances together, specify one or more instances ids as shown below.
You can also force an instance to stop. This will not give the system an opportunity to flush the
filesystem level cache. Use this only when you know exactly what you are doing.
4. Terminate an Instance
The following “aws ec2 terminate-instances” command will terminate the instance that is specified in
the –instance-ids field.
As you see from the output, previously this particular instance was in “stopped” state and it is not in
“terminated” state.
Be very careful when you are terminating an instance, as you can’t get your instance back once it is
terminated. Terminate is not same as stop.
"TerminatingInstances": [
"InstanceId": "i-44a44ac3",
"CurrentState": {
"Code": 48,
"Name": "terminated"
},
"PreviousState": {
"Code": 80,
"Name": "stopped"
The following “aws ec2 create-tags” command will add a new tag to the specified instance.
In this example, we are adding a tag with Key as “Department”, and it’s Value as “Finance”
Now you’ll see that the new Tag has been added.
"Tags": [
"Value": "Finance",
"Key": "Department"
},
"Value": "dev-server",
"Key": "Name"
],
..
You can also verify the TAG from the AWS Management Console GUI as shown below.
6. Add Storage (Block Device) to an Instance
First, use the following command to get a list of all block device volumes that are available for you. Look
for those volumes that has the State as “available”
..
"AvailabilityZone": "us-east-1b",
"Attachments": [],
"Encrypted": false,
"VolumeType": "standard",
"VolumeId": "vol-1d5cc8cc",
"State": "available",
"SnapshotId": "",
"CreateTime": "2016-04-17T15:08:40.469Z",
"Size": 1
..
From the above, get the VolumeId, and use that in the following “aws ec2 attach-volume” command to
attach that volume to a particular instance.
In the following command, you should also specify the –device option, which will be the the disk name
that will be used at the OS level for this particular volume.
"AttachTime": "2016-04-17T15:14:10.144Z",
"InstanceId": "i-dddddd70",
"VolumeId": "vol-1d5cc8cc",
"State": "attaching",
"Device": "/dev/sdh"
}
Note: When you attach a volume to an instance from the AWS management console, by default it will
automatically populate the device. But in the AWS EC2 CLI, you have to specify the device name as
shown below.
After attaching the device, you’ll notice that the state changed from “available” to “attached” for this
particular volume.
..
"Attachments": [
"AttachTime": "2016-04-17T15:14:10.000Z",
"InstanceId": "i-dddddd70",
"VolumeId": "vol-1d5cc8cc",
"State": "attached",
..
The following command will create a new AWS EC2 instance for you.
This is equivalent to the “Launch Instance” that you’ll perform the AWS management console.
# aws ec2 run-instances --image-id ami-22111148 --count 1 --instance-type t1.micro --key-name stage-
key --security-groups my-aws-security-group
In the above command:
–image-id Specify the image id for the AMI that you want to launch. You can browse the AWS
marketplace and choose the correct image that is required for your project.
–count Specify the number of instance that you want to launch from this image. In this case, we
are creating only one new instance.
–instance-type In this example, I’m launching this instance as a t1.micro type, which doesn’t use
have CPU and RAM.
–key-name Specify the name of the key pair that you want to use this with system. You should
create your own key pair before launching your instance.
–security-groups Specify the name of the security groups. You should create a security group
with appropriate firewall rules that are required for your project.
The following is a sample full output of the above command, which display all the information about the
newly launched instance.
"OwnerId": "353535354545",
"ReservationId": "r-d6668103",
"Groups": [
"GroupName": "my-aws-security-group",
"GroupId": "sg-6cbebe01"
],
"Instances": [
{
"Monitoring": {
"State": "disabled"
},
"PublicDnsName": "",
"KernelId": "aki-91afcaf8",
"State": {
"Code": 0,
"Name": "pending"
},
"EbsOptimized": false,
"LaunchTime": "2016-04-17T19:13:56.000Z",
"ProductCodes": [],
"StateTransitionReason": "",
"InstanceId": "i-44a44ac3",
"ImageId": "ami-22111148",
"PrivateDnsName": "",
"KeyName": "stage-key",
"SecurityGroups": [
"GroupName": "my-aws-security-group",
"GroupId": "sg-6cbebe01"
],
"ClientToken": "",
"InstanceType": "t1.micro",
"NetworkInterfaces": [],
"Placement": {
"Tenancy": "default",
"GroupName": "",
"AvailabilityZone": "us-east-1c"
},
"Hypervisor": "xen",
"BlockDeviceMappings": [],
"Architecture": "x86_64",
"StateReason": {
"Message": "pending",
"Code": "pending"
},
"RootDeviceName": "/dev/sda1",
"VirtualizationType": "paravirtual",
"RootDeviceType": "ebs",
"AmiLaunchIndex": 0
If you get the following error message, then the instance type you’ve selected is not supported for this
AMI. Change the instance type and try again.
# aws ec2 run-instances --dry-run --image-id ami-08111162 --count 1 --instance-type t1.micro --key-
name MyKeyPair
A client error (InvalidParameterCombination) occurred when calling the RunInstances operation: Non-
Windows instances with a virtualization type of 'hvm' are currently not supported for this instance type.
The following are additional parameters that you can pass with the “aws ec2run-instances” command
The are few options that you can use pretty much with most of the AWS EC2 cli commands.
For example, you can use “–dry-run” option pretty much with all the AWS EC2 cli command. As the
name suggests, it will not really execute the command. This will only perform a dry-run and display all
possible error messages without really doing anything.
For example, the following is a dry-run operation when you want to stop an instance.
A client error (DryRunOperation) occurred when calling the StopInstances operation: Request would
have succeeded, but DryRun flag is set.
When you are performing a dry-run the following are the two possible errors:
If you have appropriate permission, it will display “DryRunOperation” error, and any other real
error message that are related to that specific command that you are executing.
If you don’t have permission to execute that particular command, it will display
“UnauthorizedOperation” error
You can also specify the input to the AWS EC2 cli in JSON format using the –cli-input-json option as
shown below.
If you don’t know exactly what kind of information needs to passed for a particular EC2 command in
JSON format, you can use –generate-cli-skeleton as shown below. Once you have the JSON output,
modify the appropriate values, and use it as an input to –cli-input-json option.
"DryRun": true,
"InstanceIds": [
"i-dddddd70"
],
"Force": true
The following is an example JSON file that can be used as an input to AWS EC2 CLI command.
# cat stop.json
"DryRun": true,
"InstanceIds": [
"i-dddddd70"
],
"Force": true
In the following example, we are using the above stop.json file as an value for the –client-input-json
option as shown below. Don’t forget to give “file://”
..
"InstanceId": "i-44a44ac3",
..
"InstanceType": "t1.micro",
For that, first stop the instance. Without stopping you cannot change the instance type.
The following “aws ec2 modify-instance-attribute” is used to change the instance type. In this example,
we are changing the instance type to “m1.small”
aws ec2 modify-instance-attribute --instance-id i-44a44ac3 --instance-type "{\"Value\": \"m1.small\"}"
..
"InstanceId": "i-44a44ac3",
..
"InstanceType": "m1.small",
If an instance type is not supported for your particular image, you’ll get the following error message. In
this example, t2.nano is not supported for this particular image.
From your particular instance that is running with all the configuration changes that you’ve done so far,
you can create a new image using the following “aws ec2 create-image” command.
# aws ec2 create-image --instance-id i-44a44ac3 --name "Dev AMI" --description "AMI for development
server"
{
"ImageId": "ami-2d574747"
This is helpful when you want to launch new instance based on this new image that you created which
has your changes in it.
Use the following “aws ec2 describe-images” command to view the details of the new image that you’ve
just created.
"Images": [
"VirtualizationType": "paravirtual",
"Hypervisor": "xen",
"ImageId": "ami-2d574747",
"RootDeviceType": "ebs",
"State": "available",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"DeleteOnTermination": true,
"SnapshotId": "snap-4e665454",
"VolumeSize": 8,
"VolumeType": "standard",
"Encrypted": false
],
"Architecture": "x86_64",
"KernelId": "aki-91afcaf8",
"OwnerId": "353535354545",
"RootDeviceName": "/dev/sda1",
"CreationDate": "2016-04-17T19:57:57.000Z",
"Public": false,
"ImageType": "machine",
So, when you are deleting your image you have to do two things.
First, use the “aws ec2 deregister-image” command to dereigser the Image.
Next, use the “aws ec2 delete-snapshot” command to delete the snapshot that is associated with your
image.
It is very easy to delete an running instance by mistake when you execute the terminate command by
mistake (Either from UI or from command line).
By default termination protection is turned off. This means that you can delete your instance by mistake.
To enable termination protection for your instance, use the “aws ec2 modify-instance-attribute”
command, and pass the “–disable-api-termination” option as shown below.
aws ec2 modify-instance-attribute --instance-id i-44a44ac3 --disable-api-termination
Later if you want to disable the termination protection, execute the following command.
Since you don’t have a physical access to the console for the instances that are running on AWS EC2, use
the following command.
This “aws ec2 get-console-output” command will display whatever was sent to the system console for
your particular instance.
This is very helpful when you are debugging some issues on your system.
The following “aws ec2 monitor-instances” command will enable advanced cloudwatch monitoring
provided by AWS to your specified instance.
"InstanceMonitorings": [
"InstanceId": "i-44a44ac3",
"Monitoring": {
"State": "enabled"
Since there are some cost associated with the monitoring of instance, you may want to enable
monitoring temporarily when you are debugging some issue, and later you can disable the montiroing
using the following command.
"InstanceMonitorings": [
"InstanceId": "i-44a44ac3",
"Monitoring": {
"State": "disabled"
]
}
The following “aws ec2 describe-key-pairs” command will display all keypairs that you’ve created so far
in AWS.
"KeyPairs": [
"KeyName": "prod-key",
"KeyFingerprint": "61:7c:f1:13:53:b0:3a:01:dd:dd:6c:90"
},
"KeyName": "stage-key",
"KeyFingerprint": "41:6c:d1:23:a3:c0:2a:0a:dc:db:60:4c"
To create a new Keypair use the following “aws ec2 create-key-pair” command. In this example, I’m
creating a key pair with name “dev-servers”. I’ll be using this key-pair for all my dev instances.
# aws ec2 create-key-pair --key-name dev-servers
"KeyName": "dev-servers",
dYXbKYMRlI59J5XKyPgC/67GL8\nXg
....
"KeyFingerprint": "3d:c2:c8:7f:d2:ee:1d:66"
If you have created a keypair by mistake, use the following command to delete it.