0% found this document useful (0 votes)
78 views

Cloud Computing File - 1800879

This document contains a lab file on cloud computing that was submitted to Baba Banda Singh Bahadur Engineering College in partial fulfillment of the requirements for a Bachelor of Technology degree in Computer Science and Engineering. It includes 7 practical experiments on topics like installing VirtualBox and different operating systems in VirtualBox, simulating a cloud scenario using a simulator, implementing scheduling algorithms, studying cloud security management, identity management, and case studies of Amazon Web Services, Microsoft Azure and Google Cloud services. The first practical provides steps to install VirtualBox on Windows and Linux. The second practical provides steps to install Kali Linux in VirtualBox. The third practical provides steps to simulate a cloud scenario by creating a datacenter with one host and running one cloudlet
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
78 views

Cloud Computing File - 1800879

This document contains a lab file on cloud computing that was submitted to Baba Banda Singh Bahadur Engineering College in partial fulfillment of the requirements for a Bachelor of Technology degree in Computer Science and Engineering. It includes 7 practical experiments on topics like installing VirtualBox and different operating systems in VirtualBox, simulating a cloud scenario using a simulator, implementing scheduling algorithms, studying cloud security management, identity management, and case studies of Amazon Web Services, Microsoft Azure and Google Cloud services. The first practical provides steps to install VirtualBox on Windows and Linux. The second practical provides steps to install Kali Linux in VirtualBox. The third practical provides steps to simulate a cloud scenario by creating a datacenter with one host and running one cloudlet
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 70

A FILE OF CLOUD COMPUTING LAB

At

BABA BANDA SINGH BAHADUR ENGINEERING COLLEGE

SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENT FOR THE

AWARD OF THE DEGREE OF

BACHELOR OF TECHNOLOGY

(Computer Science & Engineering)

SUBMITTED BY:

MANJINDER KAUR (1800879)

SUBMITTED TO:
PROF. GURWINDER SINGH

DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING

BABA BANDA SINGH BAHADUR ENGINEERING COLLEGE,


FATEHGARH SAHIB

1
Table of contents
Sr. no. content Page no.

1. Install VirtualBox/VMware Workstation on different OS. 3

2. Install different operating systems in Virtual Box. 5

3. Simulate a cloud scenario using simulator. 8

4. Implement scheduling algorithms. 26

5. To Study Cloud Security management. 66

6. To study and implementation of identity management. 78

7. Case Study - Amazon Web Services/Microsoft 84


Azure/Google cloud services.

2
PRACTICAL NO. 1
Aim: Install VirtualBox/VMware Workstation on different OS.

Step 1:
Download VirtualBox installer for Windows The installer can be found on its download page
here https://www.virtualbox.org/wiki/Downloads
Step 2:
Open the VirtualBox EXE file. Go to the location to which the EXE file downloaded and
double-click the file. Doing so will open the VirtualBox installation window.

Step 3:
Navigate through the installation prompts. Do the following:

● Click Next on the first three pages.

● Click Yes when prompted.

● Click Install

3
● Click Yes when prompted.

Step 4:
Click Finish when prompted. It's in the lower-right side of the window. Doing so will close the
installation window and open VirtualBox. Now that you've installed and opened VirtualBox, you
can create a virtual machine in order to run any operating system on your PC

4
PRACTICAL NO. 2
Aim: Install different operating systems in Virtual Box.

Installing kali linux in virtual box


Requirements:

● At least 20 GB of disk space

● At least 1 GB of RAM (preferably 2) for i386 and amd64 architectures

● VirtualBox (or alternative virtualization software)

Step 1:
Download Kali Linux ISO Image
On the official Kali Linux website downloads section, you can find Kali Linux .iso images.
These images are uploaded every few months, providing the latest official releases.
Navigate to the Kali Linux Downloads page and find the packages available for download.
Depending on the system you have, download the 64-Bit or 32-Bit version.
Step 2:
Create Kali Linux VirtualBox Container
After downloading the .iso image, create a new virtual machine and import Kali as its OS.
1. Launch VirtualBox Manager and click the New icon.
2. Name and operating system. A pop-up window for creating a new VM appears. Specify
a name and a destination folder. The Type and Version change automatically, based on the
name you provide. Make sure the information matches the package you downloaded and
click Next.

5
3. Memory size. Choose how much memory to allocate to the virtual machine and click Next.
The default setting for Linux is 1024 MB. However, this varies depending on your individual
needs.
4. Hard disk. The default option is to create a virtual hard disk for the new VM.
Click Create to continue. Alternatively, you can use an existing virtual hard disk file or decide
not to add one at all.

5. Hard disk file type. Stick to the default file type for the new virtual hard
disk, VDI (VirtualBox Disk Image). Click Next to continue.
6. Storage on a physical hard disk. Decide between Dynamically allocated and Fixed size.
The first choice allows the new hard disk to grow and fill up space dedicated to it. The second,
fixed size, uses the maximum capacity from the start. Click Next.

6
7. File location and size. Specify the name and where you want to store the virtual hard disk.
Choose the amount of file data the VM is allowed to store on the hard disk. We advise giving it
at least 8 GB. Click Create to finish.
Now you created a new VM. The VM appears on the list in the VirtualBox Manager.

7
PRACTICAL NO. 3

Aim: Simulate a cloud scenario using simulator.

STEP BY STEP INSTALLATION OF CLOUD SIM INTO ECLIPSE

Before you start to setup CloudSim, following resources must be Installed/downloaded on the
local system

Java Development Kit(JDK): As the CloudSim simulation toolkit is a class library written in
the Java programming language, therefore, the latest version of Java(JDK) should be installed on
your machine, which can be downloaded from https://www.oracle.com/java/technologies/javase-
jdk16-downloads.html

Eclipse IDE for Java developers: As per your current installed operating system
(Linux/Windows). Before you download to make sure to check if 32-bit or 64-bit version is
applicable to your Computer machine.
https://www.eclipse.org/downloads/packages/release/kepler/sr1/eclipse-ide-java-developers

Download CloudSim source code: To date, various versions of CloudSim are released the latest
version is 5.0, which is based on a container-based engine. Whereas to keep the setup simple
for beginners we will be setting up the most used version i.e. 3.0.3, which can be directly
downloaded by clicking on link https://github.com/Cloudslab/cloudsim/releases

One external requirement of CloudSim i.e. common jar package of math-related functions is
to be downloaded from the Apache website or you may directly download by clicking here.

Unzip Eclipse, CloudSim and Common Math libraries to some common folder.

Step 1: First of all, navigate to the folder where you have unzipped the eclipse folder and open
Eclipse.exe

Step 2: Now within Eclipse window navigate the menu: File -> New ->Java Project, to open the
new project wizard

8
Step 3: Now a detailed new project window will open, here you will provide the project name
and the path of CloudSim project source code, which will be done as follows:

● Project Name: CloudSim.

● Unselect the ‘Use default location’ option and then click on ‘Browse’ to open the path
where you have unzipped the CloudSim project and finally click Next to set project
settings

● Once done finally, click ‘Next’ to go to the next step i.e. setting up of project settings

9
● Now open ‘Libraries’ tab and if you do not find commons-math3-3.x.jar (here ‘x’ means
the minor version release of the library which could be 2 or greater) in the list then

10
simply click on ‘Add External Jar’ (commons-math3-3.x.jar will be included in the
project from this step)

● Once you have clicked on ‘Add External JAR’s‘Open the path where you have unzipped
the commons-math binaries and select ‘Commons-math3-3.x.jar’ and click on open.

11
● Ensure external jar that you opened in the previous step is displayed in the list and then
click on ‘Finish’ (your system may take 2-3 minutes to configure the project)

Step 4: Once the project is configured you can open the Project Explorer and start exploring the
CloudSim project. Also, for the first-time eclipse automatically start building the workspace for
newly configured CloudSim project, which may take some time depending on the configuration
of the computer system.

Following is the final screen which you will see after CloudSim is configured.

SIMULATING A CLOUD SCENARIO SHOWING HOW TO CREATE A


DATACENTER WITH ONE HOST AND RUN ONE CLOUDLET ON IT.

CloudSim Components

1. Data Centre: Represents Complete hardware. It has set of hosts (physical machine)
12
2. Datacenter Broker: This class represents a broker acting on behalf of a user. It modifies
two mechanisms: a mechanism for submitting VM provisioning requests to data centers
and another one for submitting tasks to VMs. The CloudSim users have to extend this
class for conducting experiments with their own policies.

3. Hosts: It is a Physical Machine. It has variables to represent memory, processors, id,


scheduling scheme etc.

4. Virtual Machine (Vm): It models a virtual machine. One host can initiate multiple
virtual machines and allocate cores based on predefined processor sharing policies (Space
Shared, Time Shared).
5. Cloudlets: A cloudlet class is also known as a task. ItModels the Cloud-based application
services which are commonly deployed in the data centers. Every application has a pre
assigned instruction length.

6. Cloudlet Scheduler: Determines how the available CPU resources of virtual machine are
divided among Cloudlets.

Source Code

package org.cloudbus.cloudsim.examples;

import java.text.DecimalFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.LinkedList;

13
import java.util.List;

import org.cloudbus.cloudsim.Cloudlet;

import org.cloudbus.cloudsim.CloudletSchedulerTimeShared;

import org.cloudbus.cloudsim.Datacenter;

import org.cloudbus.cloudsim.DatacenterBroker;

import org.cloudbus.cloudsim.DatacenterCharacteristics;

import org.cloudbus.cloudsim.Host;

import org.cloudbus.cloudsim.Log;

import org.cloudbus.cloudsim.Pe;

import org.cloudbus.cloudsim.Storage;

import org.cloudbus.cloudsim.UtilizationModel;

import org.cloudbus.cloudsim.UtilizationModelFull;

import org.cloudbus.cloudsim.Vm;

import org.cloudbus.cloudsim.VmAllocationPolicySimple;

import org.cloudbus.cloudsim.VmSchedulerTimeShared;

import org.cloudbus.cloudsim.core.CloudSim;

import org.cloudbus.cloudsim.provisioners.BwProvisionerSimple;

import org.cloudbus.cloudsim.provisioners.PeProvisionerSimple;

import org.cloudbus.cloudsim.provisioners.RamProvisionerSimple;

public class CloudSimExample1 {

private static List<Cloudlet> cloudletList;

private static List<Vm> vmlist;

14
@SuppressWarnings("unused")

public static void main(String[] args) {

Log.printLine("Starting CloudSimExample1...");

try {

int num_user = 1; // number of cloud users

Calendar calendar = Calendar.getInstance();

boolean trace_flag = false; // mean trace events

CloudSim.init(num_user, calendar, trace_flag);

Datacenter datacenter0 = createDatacenter("Datacenter_0");

DatacenterBroker broker = createBroker();

int brokerId = broker.getId();

vmlist = new ArrayList<Vm>();

int vmid = 0;

int mips = 1000;

long size = 10000; // image size (MB)

int ram = 512; // vm memory (MB)

long bw = 1000;

int pesNumber = 1; // number of cpus

String vmm = "Xen"; // VMM name

Vm vm = new Vm(vmid, brokerId, mips, pesNumber, ram, bw, size,


vmm, new CloudletSchedulerTimeShared());

vmlist.add(vm);

broker.submitVmList(vmlist);

15
cloudletList = new ArrayList<Cloudlet>();

int id = 0;

long length = 400000;

long fileSize = 300;

long outputSize = 300;

UtilizationModel utilizationModel = new UtilizationModelFull();

Cloudlet cloudlet = new Cloudlet(id, length, pesNumber, fileSize,


outputSize, utilizationModel, utilizationModel, utilizationModel);

cloudlet.setUserId(brokerId);

cloudlet.setVmId(vmid);

cloudletList.add(cloudlet);

broker.submitCloudletList(cloudletList);

CloudSim.startSimulation();

CloudSim.stopSimulation();

List<Cloudlet> newList = broker.getCloudletReceivedList();

printCloudletList(newList);

Log.printLine("CloudSimExample1 finished!");

} catch (Exception e) {

e.printStackTrace();

Log.printLine("Unwanted errors happen");

private static Datacenter createDatacenter(String name) {

List<Host> hostList = new ArrayList<Host>();

16
List<Pe> peList = new ArrayList<Pe>();

int mips = 1000;

peList.add(new Pe(0, new PeProvisionerSimple(mips))); // need to store Pe id and


MIPS Rating

int hostId = 0;

int ram = 2048; // host memory (MB)

long storage = 1000000; // host storage

int bw = 10000;

hostList.add(

new Host(

hostId,

new RamProvisionerSimple(ram),

new BwProvisionerSimple(bw),

storage,

peList,

new VmSchedulerTimeShared(peList)

);

String arch = "x86"; // system architecture

String os = "Linux"; // operating system

String vmm = "Xen";

double time_zone = 10.0; // time zone this resource located

double cost = 3.0; // the cost of using processing in this resource

double costPerMem = 0.05; // the cost of using memory in this resource

17
double costPerStorage = 0;

double costPerBw = 0.0; // the cost of using bw in this resource

LinkedList<Storage> storageList = new LinkedList<Storage>();

DatacenterCharacteristics characteristics = new DatacenterCharacteristics(

arch, os, vmm, hostList, time_zone, cost, costPerMem,

costPerStorage, costPerBw);

Datacenter datacenter = null;

try {

datacenter = new Datacenter(name, characteristics, new


VmAllocationPolicySimple(hostList), storageList, 0);

} catch (Exception e) {

e.printStackTrace();

return datacenter;

private static DatacenterBroker createBroker() {

DatacenterBroker broker = null;

try {

broker = new DatacenterBroker("Broker");

} catch (Exception e) {

e.printStackTrace();

return null;

18
return broker;

private static void printCloudletList(List<Cloudlet> list) {

int size = list.size();

Cloudlet cloudlet;

String indent = " ";

Log.printLine();

Log.printLine("========== OUTPUT ==========");

Log.printLine("Cloudlet ID" + indent + "STATUS" + indent

+ "Data center ID" + indent + "VM ID" + indent + "Time" + indent

+ "Start Time" + indent + "Finish Time");

DecimalFormat dft = new DecimalFormat("###.##");

for (int i = 0; i < size; i++) {

cloudlet = list.get(i);

Log.print(indent + cloudlet.getCloudletId() + indent + indent);

if (cloudlet.getCloudletStatus() == Cloudlet.SUCCESS) {

Log.print("SUCCESS");

Log.printLine(indent + indent + cloudlet.getResourceId()

+ indent + indent + indent + cloudlet.getVmId()

+ indent + indent

19
+ dft.format(cloudlet.getActualCPUTime()) +
indent

+ indent + dft.format(cloudlet.getExecStartTime())

+ indent + indent

+ dft.format(cloudlet.getFinishTime()));

Output:

20
PRACTICAL NO. 4

Aim: Implement scheduling algorithms.

Implementation of Shortest Job First algorithm using

cloudSim DatacenterBroker.java package

org.cloudbus.cloudsim;

import java.util.ArrayList; import

java.util.HashMap; import

java.util.LinkedList; import

java.util.List; import

java.util.Map;

import org.cloudbus.cloudsim.core.CloudSim; import

org.cloudbus.cloudsim.core.CloudSimTags; import

org.cloudbus.cloudsim.core.SimEntity; import

org.cloudbus.cloudsim.core.SimEvent; import

org.cloudbus.cloudsim.lists.CloudletList; import

org.cloudbus.cloudsim.lists.VmList;

public class DatacenterBroker extends SimEntity {

protected List<? extends Vm> vmsCreatedList;

21
protected List<? extends

Cloudlet> cloudletList;

protected List<? extends

Cloudlet> cloudletSubmittedList; /**

The cloudlet received list. */

protected List<? extends Cloudlet> cloudletReceivedList;

/** The cloudlets submitted. */ protected int

cloudletsSubmitted; /** The vms requested. */

protected int vmsRequested; /** The vms

acks. */ protected int vmsAcks; /** The vms

destroyed. */ protected int vmsDestroyed; /** The

datacenter ids list. */ protected List<Integer>

datacenterIdsList; /** The datacenter requested ids list.

*/ protected List<Integer> datacenterRequestedIdsList;

/** The vms to datacenters map. */ protected

Map<Integer, Integer> vmsToDatacentersMap;

protected Map<Integer,

DatacenterCharacteristics> datacenterCharacteristicsList;

public DatacenterBroker(String name) throws Exception {

super(name);

setVmList(new ArrayList<Vm>());

22
setVmsCreatedList(new ArrayList<Vm>());

setCloudletList(new ArrayList<Cloudlet>());

setCloudletSubmittedList(new

ArrayList<Cloudlet>());

setCloudletReceivedList(new ArrayList<Cloudlet>());

cloudletsSubmitted = 0; setVmsRequested(0);

setVmsAcks(0); setVmsDestroyed(0);

setDatacenterIdsList(new LinkedList<Integer>());

setDatacenterRequestedIdsList(new ArrayList<Integer>());

setVmsToDatacentersMap(new HashMap<Integer, Integer>());

setDatacenterCharacteristicsList(new HashMap<Integer,

DatacenterCharacteristics>());

public void submitVmList(List<? extends

Vm> list) { getVmList().addAll(list);

public void submitCloudletList(List<? extends Cloudlet> list) {

getCloudletList().addAll(list);

public void bindCloudletToVm(int cloudletId, int vmId) {

CloudletList.getById(getCloudletList(), cloudletId).setVmId(vmId);

public void processEvent(SimEvent ev) { switch

23
(ev.getTag()) {

// Resource characteristics request

case

CloudSimTags.RESOURCE_CHARACTERISTICS_REQUEST:

processResourceCharacteristicsRequest(ev);

break;

CloudSimTags.RESOURCE_CHARACTERISTICS:

processResourceCharacteristics(ev);

break;

CloudSimTags.VM_CREATE_ACK:

processVmCreate(ev);

break;

CloudSimTags.CLOUDLET_RETURN:

processCloudletReturn(ev);

break;

CloudSimTags.END_OF_SIMULATION:

shutdownEntity();

break;

default: processOtherEvent(ev);

break;

protected void processResourceCharacteristics(SimEvent ev) {

24
DatacenterCharacteristics characteristics = (DatacenterCharacteristics) ev.getData();

getDatacenterCharacteristicsList().put(characteristics.getId(), characteristics);

if (getDatacenterCharacteristicsList().size() ==

getDatacenterIdsList().size()) {

setDatacenterRequestedIdsList(new ArrayList<Integer>());

createVmsInDatacenter(getDatacenterIdsList().get(0));

processResourceCharacteristicsRequest(SimEvent ev) {

setDatacenterIdsList(CloudSim.getCloudResourceList()); setDatacenterCharacteristicsList(new

HashMap<Integer,

DatacenterCharacteristics>());

Log.printLine(CloudSim.clock() + ": " + getName() + ": Cloud Resource

List received with " + getDatacenterIdsList().size() + "

resource(s)"); for (Integer datacenterId :

getDatacenterIdsList()) {

sendNow(datacenterId,

CloudSimTags.RESOURCE_CHARACTERISTICS, getId());

processVmCreate(SimEvent ev) { int[] data =

(int[]) ev.getData(); int datacenterId = data[0];

25
int vmId = data[1];

int result = data[2];

if (result == CloudSimTags.TRUE) { getVmsToDatacentersMap().put(vmId, datacenterId);

getVmsCreatedList().add(VmList.getById(getVmList(), vmId));

Log.printLine(CloudSim.clock() + ": " + getName() + ": VM #" + vmId

+ ", Host #"

+ " has been created in Datacenter #" + datacenterId

vmId).getHost().getId());

+ VmList.getById(getVmsCreatedList(),

} else {

Log.printLine(CloudSim.clock() + ": " + getName() + ": Creation of VM #" + vmId

+ " failed in Datacenter #" + datacenterId);

incrementVmsAcks();

(getVmsCreatedList().size() == getVmList().size() - getVmsDestroyed())

submitCloudlets();

} else {

(getVmsRequested() == getVmsAcks()) {

for (int nextDatacenterId : getDatacenterIdsList()) {

if

(!getDatacenterRequestedIdsList().contains(nextDatacenterId)) {

createVmsInDatacenter(nextDatacenterId);

26
return;

// all datacenters already queried if (getVmsCreatedList().size() > 0) { // if some vm

were created

submitCloudlets();

} else { // no vms created. abort

Log.printLine(CloudSim.clock() + ": " + getName() + ": none of the required VMs could

be created. Aborting");

finishExecution();

protected void processCloudletReturn(SimEvent ev) { Cloudlet

cloudlet = (Cloudlet) ev.getData();

getCloudletReceivedList().add(cloudlet);

Log.printLine(CloudSim.clock() + ": " + getName() +

": Cloudlet " + cloudlet.getCloudletId()

+ " received"); cloudletsSubmitted--;

if (getCloudletList().size() == 0 && cloudletsSubmitted == 0) { // all cloudlets executed

Log.printLine(CloudSim.clock() + ": " + getName() + ": All

Cloudlets executed. Finishing...");

27
clearDatacenters();

finishExecution(); } else { // some cloudlets haven't finished

yet if

(getCloudletList().size() > 0 && cloudletsSubmitted == 0) {

clearDatacenters();

createVmsInDatacenter(0);

protected void processOtherEvent(SimEvent ev) { if (ev == null) {

Log.printLine(getName() + ".processOtherEvent(): " + "Error - an event is null.");

return;

Log.printLine(getName() + ".processOtherEvent(): "

+ "Error - event unknown by this DatacenterBroker.");

protected void createVmsInDatacenter(int datacenterId) {

int requestedVms = 0;

String datacenterName = CloudSim.getEntityName(datacenterId);

for (Vm vm : getVmList()) {

if (!getVmsToDatacentersMap().containsKey(vm.getId())) {

Log.printLine(CloudSim.clock() + ": " + getName() + ":

Trying to Create VM #" + vm.getId()

28
+ " in " + datacenterName); sendNow(datacenterId,

CloudSimTags.VM_CREATE_ACK, vm);

requestedVms++;

getDatacenterRequestedIdsList().add(datacenterId);

setVmsRequested(requestedVms); setVmsAcks(0);

protected void submitCloudlets() {

int vmIndex = 0;

List <Cloudlet> sortList= new ArrayList<Cloudlet>(); ArrayList<Cloudlet> tempList = new

ArrayList<Cloudlet>(); for(Cloudlet cloudlet: getCloudletList())

tempList.add(cloudlet);

int totalCloudlets= tempList.size(); for(int

i=0;i<totalCloudlets;i++)

Cloudlet smallestCloudlet= tempList.get(0); for(Cloudlet checkCloudlet:

tempList)

{ if(smallestCloudlet.getCloudletLength()>checkCloudlet.getCloudletLength())

smallestCloudlet= checkCloudlet;

29
}

sortList.add(smallestCloudlet);

tempList.remove(smallestCloudlet);

int count=1;

for(Cloudlet printCloudlet: sortList)

Log.printLine(count+".Cloudler

Id:"+printCloudlet.getCloudletId()+",Cloudlet

Length:"+printCloudlet.getCloudletLength()); count++;}

for (Cloudlet cloudlet : sortList) {

Vm vm;

if (cloudlet.getVmId() == -1) {

vm = getVmsCreatedList().get(vmIndex);

} else { // submit to the specific vm

vm = VmList.getById(getVmsCreatedList(), cloudlet.getVmId());

if (vm == null) { // vm was not created

Log.printLine(CloudSim.clock() + ": " + getName()

+ ": Postponing execution of cloudlet "

+ cloudlet.getCloudletId() + ": bount

VM not available");

continue;

30
}

Log.printLine(CloudSim.clock() + ": " + getName() + ": Sending cloudlet "

+ cloudlet.getCloudletId() + " to VM #" + vm.getId());

cloudlet.setVmId(vm.getId());

sendNow(getVmsToDatacentersMap().get(vm.getId()),

CloudSimTags.CLOUDLET_SUBMIT, cloudlet);

cloudletsSubmitted++;

vmIndex = (vmIndex + 1) % getVmsCreatedList().size();

getCloudletSubmittedList().add(cloudlet);

// remove submitted cloudlets from waiting list for (Cloudlet cloudlet :

getCloudletSubmittedList()) {

getCloudletList().remove(cloudlet);

protected void clearDatacenters() { for

(Vm vm : getVmsCreatedList()) {

Log.printLine(CloudSim.clock() + ": " + getName() + ":

Destroying VM #" + vm.getId());

sendNow(getVmsToDatacentersMap().get(vm.getId()),

CloudSimTags.VM_DESTROY, vm);

31
}

getVmsCreatedList().clear();

protected void finishExecution() { sendNow(getId(),

CloudSimTags.END_OF_SIMULATION);

@Override public void

shutdownEntity() {

Log.printLine(getName() + " is shutting down...");

}e cloudsim.core.SimEntity#startEntity()

@Override

public void startEntity() {

Log.printLine(getName() + " is starting...");

schedule(getId(), 0,

CloudSimTags.RESOURCE_CHARACTERISTICS_REQUEST);

@SuppressWarnings("unchecked") public <T extends Vm>

List<T> getVmList() {

return (List<T>) vmList;

protected <T extends Vm> void setVmList(List<T> vmList) { this.vmList = vmList;

@SuppressWarnings("unchecked") public <T

32
extends Cloudlet> List<T> getCloudletList() {

return (List<T>) cloudletList;

protected <T extends Cloudlet> void setCloudletList(List<T> cloudletList) {

this.cloudletList = cloudletList; }

@SuppressWarnings("unchecked") public <T extends

Cloudlet> List<T> getCloudletSubmittedList() { return

(List<T>) cloudletSubmittedList;

protected <T extends Cloudlet>

void

setCloudletSubmittedList(List<T> cloudletSubmittedList) {

this.cloudletSubmittedList = cloudletSubmittedList;

@SuppressWarnings("unchecked") public <T extends

Cloudlet> List<T> getCloudletReceivedList() { return

(List<T>) cloudletReceivedList;

protected <T extends Cloudlet>

void setCloudletReceivedList(List<T>

cloudletReceivedList) {

this.cloudletReceivedList = cloudletReceivedList;

33
@SuppressWarnings("unchecked") public <T extends Vm> List<T> getVmsCreatedList()

{ return (List<T>) vmsCreatedList;

protected <T extends Vm> void setVmsCreatedList(List<T>

vmsCreatedList) { this.vmsCreatedList = vmsCreatedList;

protected int getVmsRequested() { return vmsRequested;

protected void setVmsRequested(int vmsRequested) { this.vmsRequested

= vmsRequested;

protected int getVmsAcks() { return vmsAcks;

protected void setVmsAcks(int vmsAcks) { this.vmsAcks = vmsAcks;

Protected void incrementVmsAcks()

{ vmsAcks++;

protected int getVmsDestroyed() { return vmsDestroyed;

protected void setVmsDestroyed(int

vmsDestroyed) { this.vmsDestroyed = vmsDestroyed;

34
}

protected List<Integer> getDatacenterIdsList() { return datacenterIdsList;

protected void setVmsToDatacentersMap(Map<Integer, Integer>

vmsToDatacentersMap) { this.vmsToDatacentersMap =

vmsToDatacentersMap;

protected Map<Integer, DatacenterCharacteristics>

getDatacenterCharacteristicsList() {

return datacenterCharacteristicsList;

/**

* Sets the datacenter characteristics list.

* @param datacenterCharacteristicsList the datacenter characteristics list

*/

protected void setDatacenterCharacteristicsList(

Map<Integer, DatacenterCharacteristics> datacenterCharacteristicsList) {

this.datacenterCharacteristicsList = datacenterCharacteristicsList;

/**

* Gets the datacenter requested ids list.

35
* @return the datacenter requested ids list

*/

protected List<Integer> getDatacenterRequestedIdsList() {

return datacenterRequestedIdsList;

} /**

* Sets the datacenter requested ids list.

* @param datacenterRequestedIdsList the new datacenter requested ids list

*/ protected void

setDatacenterRequestedIdsList(List<Integer> datacenterRequestedIdsList)

{ this.datacenterRequestedIdsList

= datacenterRequestedIdsList;

Simulation.java package

examples.org.cloudbus.cloudsim.examples; import

java.text.DecimalFormat; import

java.util.ArrayList; import java.util.Calendar; import

java.util.LinkedList; import java.util.List;

import java.util.Random;

import org.cloudbus.cloudsim.Cloudlet; import

36
org.cloudbus.cloudsim.CloudletSchedulerSpaceShared;

import org.cloudbus.cloudsim.CloudletSchedulerTimeShared;

import org.cloudbus.cloudsim.Datacenter; import

org.cloudbus.cloudsim.DatacenterBroker; import

org.cloudbus.cloudsim.DatacenterCharacteristics; import

org.cloudbus.cloudsim.Host; import

org.cloudbus.cloudsim.Log; import org.cloudbus.cloudsim.Pe;

import org.cloudbus.cloudsim.Storage; import

org.cloudbus.cloudsim.UtilizationModel; import

org.cloudbus.cloudsim.UtilizationModelFull; import

org.cloudbus.cloudsim.Vm;

import org.cloudbus.cloudsim.VmAllocationPolicySimple; import

org.cloudbus.cloudsim.VmSchedulerTimeShared; import

org.cloudbus.cloudsim.core.CloudSim; import

org.cloudbus.cloudsim.provisioners.BwProvisionerSimple; import

org.cloudbus.cloudsim.provisioners.PeProvisionerSimple; import

org.cloudbus.cloudsim.provisioners.RamProvisionerSimple; /**

* An example showing how to create * scalable simulations.

*/

public class Simulation {

/** The cloudlet list. */ private static

List<Cloudlet> cloudletList;

/** The vmlist. */

37
private static List<Vm> vmlist;

private static List<Vm> createVM(int userId, int vms) {

//Creates a container to store VMs. This list is passed to the broker later

LinkedList<Vm> list = new LinkedList<Vm>();

//VM Parameters

long size = 10000; //image size

(MB) int ram = 512; //vm memory (MB) int mips =

1000; long bw =

1000;

int pesNumber = 1; //number of cpus

String vmm = "Xen"; //VMM name

//create VMs

Vm[] vm = new Vm[vms];

for(int i=0;i<vms;i++){

vm[i] = new Vm(i, userId, mips, pesNumber, ram, bw, size, vmm, new

CloudletSchedulerSpaceShared());

//for creating a VM with a space shared scheduling policy for cloudlets:

//vm[i] = Vm(i, userId, mips, pesNumber, ram, bw, size, vmm, new

CloudletSchedulerSpaceShared());

list.add(vm[i]);

return list;

} private static List<Cloudlet> createCloudlet(int userId, int

38
cloudlets){

// Creates a container to store Cloudlets

LinkedList<Cloudlet> list = new LinkedList<Cloudlet>();

//cloudlet parameters long length =

1000; long fileSize = 300; long

outputSize = 300;

int pesNumber = 1;

UtilizationModel utilizationModel = new UtilizationModelFull();

Cloudlet[] cloudlet = new Cloudlet[cloudlets];

for(int i=0;i<cloudlets;i++){

Random r= new Random();

cloudlet[i] = new Cloudlet(i, length +r.nextInt(2000), pesNumber,

fileSize, outputSize, utilizationModel, utilizationModel, utilizationModel);

// setting the owner of these Cloudlets

cloudlet[i].setUserId(userId); list.add(cloudlet[i]);

return list;

////////////////////////// STATIC METHODS ///////////////////////

/**

* Creates main() to run this example

*/

39
public static void main(String[] args) {

Log.printLine("Starting CloudSimExample6...");

try {

// First step: Initialize the CloudSim package. It should be called

// before creating any entities. int num_user = 3;

// number of grid users Calendar calendar =

Calendar.getInstance(); boolean trace_flag = false; // mean trace events

// Initialize the CloudSim library

CloudSim.init(num_user, calendar, trace_flag);

// Second step: Create Datacenters

//Datacenters are the resource providers in CloudSim. We need at list one of them to run a

CloudSim simulation

Datacenter datacenter0 = createDatacenter("Datacenter_0");

Datacenter datacenter1 = createDatacenter("Datacenter_1");

//Third step: Create Broker

DatacenterBroker broker = createBroker();

int brokerId = broker.getId();

//Fourth step: Create VMs and Cloudlets and send them to broker vmlist =

createVM(brokerId,10); //creating 20 vms

40
cloudletList = createCloudlet(brokerId,40); // creating 40 cloudlets

broker.submitVmList(vmlist);

broker.submitCloudletList(cloudletList);

// Fifth step: Starts the simulation

CloudSim.startSimulation();

// Final step: Print results when simulation is over

List<Cloudlet> newList = broker.getCloudletReceivedList();

CloudSim.stopSimulation();

printCloudletList(newList);

//Print the debt of each user to each datacenter datacenter0.printDebts();

datacenter1.printDebts();

Log.printLine("CloudSimExample6 finished!");

catch (Exception e)

e.printStackTrace();

Log.printLine("The simulation has been terminated due to an unexpected error");

41
private static Datacenter createDatacenter(String name){

// Here are the steps needed to create a PowerDatacenter:

// 1. We need to create a list to store one or more

// Machines

List<Host> hostList = new ArrayList<Host>();

// 2. A Machine contains one or more PEs or CPUs/Cores. Therefore, should

// create a list to store these PEs before creating

// a Machine.

List<Pe> peList1 = new ArrayList<Pe>();

int mips = 1000;

// 3. Create PEs and add these into the list. //for a quad-core machine, a list of

4 PEs is required:

peList1.add(new Pe(0, new PeProvisionerSimple(mips))); // need to store Pe id and MIPS


Rating

peList1.add(new Pe(1, new PeProvisionerSimple(mips)));

peList1.add(new Pe(2, new PeProvisionerSimple(mips))); peList1.add(new Pe(3, new

PeProvisionerSimple(mips)));

//Another list, for a dual-core machine List<Pe> peList2

= new ArrayList<Pe>(); peList2.add(new Pe(0, new

PeProvisionerSimple(mips))); peList2.add(new

42
Pe(1, new PeProvisionerSimple(mips)));

//4. Create Hosts with its id and list of PEs and add them to the list of machines

int hostId=0;

int ram = 2048; //host memory (MB)

long storage = 1000000; //host storage int

bw = 10000;

hostList.add(

new Host(

hostId,

new RamProvisionerSimple(ram),

new BwProvisionerSimple(bw),

storage,

peList1,

new VmSchedulerTimeShared(peList1)

); // This is our first machine

hostId++;

hostList.add(

new Host(

43
hostId,

new

RamProvisionerSimple(ram), new

BwProvisionerSimple(bw), storage, peList2,

new VmSchedulerTimeShared(peList2)

); // Second machine

//To create a host with a space-shared allocation policy for PEs to VMs:

//hostList.add(

// new Host(

// hostId,

//

new CpuProvisionerSimple(peList1),

// new RamProvisionerSimple(ram),

// new BwProvisionerSimple(bw),

// storage,

// new VmSchedulerSpaceShared(peList1)

// )

// );

//To create a host with a oportunistic space-shared allocation policy for PEs to VMs:

//hostList.add(

// new Host(

44
// hostId,

// new CpuProvisionerSimple(peList1),

// new RamProvisionerSimple(ram),

// new BwProvisionerSimple(bw),

// storage,

// new

VmSchedulerOportunisticSpaceShared(peList1)

// )

//

);

// 5. Create a DatacenterCharacteristics object that stores

the

// properties of a data center: architecture, OS, list of

// Machines, allocation policy: time- or space-shared, time zone // and its

price (G$/Pe time unit).

String arch = "x86"; // system architecture

String os = "Linux"; // operating system

String vmm = "Xen";

double time_zone = 10.0; // time zone this resource located

double cost = 3.0; // the cost of using processing in this resource

double costPerMem = 0.05; // the cost of using memory in this resource

double costPerStorage = 0.1; // the cost of using storage in this resource

double costPerBw = 0.1; // the cost of using bw in this

45
resource

LinkedList<Storage> storageList = new LinkedList<Storage>(); //we are not adding SAN

devices by now

DatacenterCharacteristics characteristics = new DatacenterCharacteristics( arch,

os, vmm, hostList, time_zone, cost, costPerMem, costPerStorage, costPerBw);

// 6. Finally, we need to create a PowerDatacenter object. Datacenter datacenter = null;

try {

datacenter = new Datacenter(name, characteristics, new

VmAllocationPolicySimple(hostList), storageList, 0);

} catch (Exception e) {

e.printStackTrace();

return datacenter;

//We strongly encourage users to develop their own broker policies, to submit vms and cloudlets

according

//to the specific rules of the simulated scenario private static

DatacenterBroker createBroker(){ DatacenterBroker broker =

null; try { broker = new DatacenterBroker("Broker");

46
} catch (Exception e) {

e.printStackTrace();

return null;

return broker;

@SuppressWarnings("deprecation")

private static void printCloudletList(List<Cloudlet> list) { int size =

list.size();

Cloudlet cloudlet;

String indent = " ";

Log.printLine();

Log.printLine("========== OUTPUT ==========");

Log.printLine("Cloudlet ID" + indent + "STATUS" + indent +

"Data center ID" + indent + "VM ID" + indent + indent +

"Time" + indent + "Start Time" + indent + "Finish Time" +indent+"user id"+indent);

DecimalFormat dft = new DecimalFormat("###.##");

for (int i = 0; i < size; i++) { cloudlet = list.get(i);

Log.print(indent + cloudlet.getCloudletId() + indent + indent);

47
if (cloudlet.getCloudletStatus() == Cloudlet.SUCCESS){

Log.print("SUCCESS");

Log.printLine( indent + indent + cloudlet.getResourceId()

+ indent + indent + indent + cloudlet.getVmId() + indent + indent +

indent + dft.format(cloudlet.getActualCPUTime()) + indent + indent

dft.format(cloudlet.getExecStartTime())+ indent + indent + indent +

dft.format(cloudlet.getFinishTime())+indent +cloudlet.getUserId());

}}}}

48
PRACTICAL NO. 5

Aim: To Study Cloud Security management.

Objectives: From this experiment, the student will be able,

● To understand the security features of Cloud.

● To learn the technique of application security management and its complexity

● To understand the importance of cloud security management from application


point of view

Outcomes: The learner will be able to

● Student can study and implement single-sign-on.

● To use current techniques, skills, and tools necessary for computing practice.

● To match the industry requirements in the domains of Database management,


Programming and Networking with the required management skills.

Hardware / Software Required: Ubuntu operating system, Virtual machine, WAMP/ZAMP


server, Any tool or technology can be used for implementation of web application e.g., JAVA,
PHP, etc.

Theory:

Cloud computing security is the set of control-based technologies and policies designed to
adhere to regulatory compliance rules and protect information, data applications and
infrastructure associated with cloud computing use. Because of the cloud's very nature as a
shared resource, identity management, privacy and access control are of particular concern. With
more organizations using cloud computing and associated cloud providers for data operations,
proper security in these and other potentially vulnerable areas have become a priority for
organizations contracting with a cloud computing provider.

Cloud computing security processes should address the security controls the cloud provider will
incorporate to maintain the customer's data security, privacy and compliance with necessary
49
regulations. The processes will also likely include a business continuity and databackup plan in
the case of a cloud security breach.

Physical security

Cloud service providers physically secure the IT hardware (servers, routers, cables etc.) against
unauthorized access, interference, theft, fires, floods etc. and ensure that essential supplies (such
as electricity) are sufficiently robust to minimize the possibility of disruption. This is normally
achieved by serving cloud applications from 'world-class' (i.e. professionally specified, designed,
constructed, managed, monitored and maintained) data centers.

Personnel security

Various information security concerns relating to the IT and other professionals associated with
cloud services are typically handled through pre-, para- and post-employment activities such as
security screening potential recruits, security awareness and training programs, proactive security
monitoring and supervision, disciplinary procedures and contractual obligations embedded in
employment contracts, service level agreements, codes of conduct, policies etc.

Application security

Cloud providers ensure that applications available as a service via the cloud (SaaS) are secure by
specifying, designing, implementing, testing and maintaining appropriate application security
measures in the production environment. Note that - as with any commercial software - the
controls they implement may not necessarily fully mitigate all the risks they have identified, and
that they may not necessarily have identified all the risks that are of concern to customers.
Consequently, customers may also need to assure themselves that cloud applications are
adequately secured for their specific purposes, including their compliance obligations.

Procedure:

Security using MFA(Multi Factor Authentication) device code:

1) goto aws.amazon.com

2) click on "My Account"

3) select "AWS management console" and click on it

4) Give Email id in the required field

if you are registering first time then select "I am a new user" radio button

5) click on "sign in using our secure server" button

50
6) follow the instruction and complete the formalities

(Note: do not provide any credit card details or bank details)

sign out from

7) Again go to "My Account"

select "AWS management console" and click on it

Sign in again by entering the user name and valid password ( check "I am returning user and my
password is" radio button)

Now you are logged in as a Root User

All AWS project can be viewed by you, but you cant make any changes in it or you cant create
new thing as you are not paying any charges to amazon (for reason refer step:6)

To create the user in a root user follow the steps mentioned below:

1) click on "Identity and Access Management" in security and identity project

2) click in "Users" from dashboard

It will take you to "Create New Users"

click on create new user button

enter the "User Name"

(select "Generate and access key for each user" checkbox, it will create a user with a specific
key)

click on "Create" button at right bottom

3) once the user is created click on it

4) go to security credentials tab

5) click on "Create Access Key", it will create an access key for user.

6) click on "Manage MFA device" it will give you one QR code displayed on the screen

you need to scan that QR code on your mobile phone using barcode scanner (install it in
mobile phone)you also need to install "Google Authenticator" in your mobile phone to generate
the MFA code

51
7) Google authenticator will keep on generating a new MFA code after every 60 seconds

that code you will have to enter while logging as a user.

Hence, the security is maintained by MFA device code...

one can not use your AWS account even if it may have your user name and password, because
MFA code is on your MFA device (mobiel phone in this case) and it is getting changed after
every 60 seconds.

Permissions in user account:

After creating the user by following above mentioned steps; you can give certain permissions to
specific user

1) click on created user

2) goto "Permissions" tab

3) click on "Attach Policy" button

4) select the needed policy from given list and click on apply.

Result:

Step 1 :goto aws.amazon.com

52
Step 2 : Click on "My Account". Select "AWS management console" and click on it. Give Email
id in the required field

53
Step 3: Addition of security features

54
Step 4: Sign in to an AWS account

55
Step 5 : Creation of users

Step 6: Adding users to group

56
Step 7: Creating Access key

57
58
Step 8 : Setting permissions to users

59
60
PRACTICAL NO. 6

Aim: To study and implementation of identity management.

Identity management (ID management) is the organizational process for ensuring that individuals
have the appropriate access to technology resources. More specifically, this includes the
identifying, authentication and authorization of a person, or persons, to have access to
applications, systems or networks.
This is done by associating user rights and restrictions with established identities. Managed
identities can also refer to software processes that need access to organizational systems. Identity
management can be considered an essential component for security. Identity management
includes authenticating users and determining whether they're allowed access to particular
systems. ID management works hand-in-hand with identity access manageme systems. Identity
management is focused on authentication, while access management is aimed at authorization.
The main goal of identity management is to ensure that only authenticated users are granted
access to the specific applications, systems or IT environments for which they are authorized.
This includes control over user provisioning and the process of onboarding new users such as
employees, partners, clients and other stakeholders. Identity management also includes control
over the process of authorizing system or network permissions for existing users and the
offboarding of users who are no longer authorized to access organization systems.
OwnCloud is open source file sync and share software for everyone from individuals operating
the free ownCloud Server edition, to large enterprises and service providers operating the
ownCloud Enterprise Subscription. ownCloud provides a safe, secure, and compliant file
synchronization and sharing solution on servers that you control. You can share one or more files
and folders on your computer, and synchronize them with your ownCloud server.

61
Step 2 : By default, the ownCloud Web interface opens to your Files page. You can add, remove,
and share files, and make changes based on the access privileges set by you (if you are
administering the server) or by your server administrator. You can access your ownCloud files
with the ownCloud web interface and create, preview, edit, delete, share, and re-share files. Your
ownCloud administrator has the option to disable these features, so if any of them are missing on
your system ask your server administrator.

62
Step 3: Apps Selection Menu: Located in the upper left corner, click the arrow to open a
dropdown menu to navigate to your various available apps. Apps Information field: Located in
the left sidebar, this provides filters and tasks associated with your selected app. Application
View: The main central field in the ownCloud user interface. This field displays the contents or
user features of your selected app.

63
Step 4: Share the file or folder with a group or other users, and create public shares with
hyperlinks. You can also see who you have shared with already, and revoke shares by clicking
the trash can icon. If username auto-completion is enabled, when you start typing the user or
group name ownCloud will automatically complete it for you. If your administrator has enabled
email notifications, you can send an email notification of the new share from the sharing screen.

64
65
Step 5: Five Share permissions are :
Can share; allows the users you share with to re-share.
Can edit; allows the users you share with to edit your shared files, and to collaborate using the
Documents app.
Create; allows the users you share with to create new files and add them to the share.
Change; allows uploading a new version of a shared file and replacing it.
Delete; allows the users you share with to delete shared files.

66
PRACTICAL NO. 7

Aim: Case Study - Amazon Web Services/Microsoft Azure/Google cloud services

Cloud computing is a term referred to storing and accessing data over the internet. It doesn't store
any data on the hard disk of your personal computer. In cloud computing, you can access data
from a remote server.
Amazon web service is a platform that offers flexible, reliable, scalable, easy-to-use and
costeffective cloud computing solutions.
AWS is a comprehensive, easy to use computing platform offered Amazon. The platform is
developed with a combination of infrastructure as a service (IaaS), platform as a service (PaaS)
and packaged software as a service (SaaS) offerings History of AWS
• 2002- AWS services launched
• 2006- Launched its cloud products
• 2012- Holds first customer event
• 2015- Reveals revenues achieved of $4.6 billion
• 2016- Surpassed $10 billon revenue target
• 2016- Release snowball and snowmobile
• 2019- Offers nearly 100 cloud services
Important AWS Services
Amazon Web Services offers a wide range of different business purpose global cloudbased
products. The products include storage, databases, analytics, networking, mobile, development
tools, enterprise applications, with a pay-as-you-go pricing model. Here, are essential AWS
services. AWS Compute Services
Here, are Cloud Compute Services offered by Amazon:
1. EC2(Elastic Compute Cloud) - EC2 is a virtual machine in the cloud on which you have OS
level control. You can run this cloud server whenever you want.
2. LightSail -This cloud computing tool automatically deploys and manages the computer,
storage, and networking capabilities required to run your applications.
3. Elastic Beanstalk — The tool offers automated deployment and provisioning of resources like
a highly scalable production website.

67
4. EKS (Elastic Container Service for Kubernetes) — The tool allows you to Kubernetes on
Amazon cloud environment without installation.
5. AWS Lambda — This AWS service allows you to run functions in the cloud. The tool is a big
cost saver for you as you to pay only when your functions execute.
Storage
1. Amazon Glacier- It is an extremely low-cost storage service. It offers secure and fast storage
for data archiving and backup.
2. Amazon Elastic Block Store (EBS)- It provides block-level storage to use with Amazon EC2
instances. Amazon Elastic Block Store volumes are networkattached and remain independent
from the life of an instance.
3. AWS Storage Gateway- This AWS service is connecting on-premises software applications
with cloud-based storage. It offers secure integration between the company's on-premises and
AWS's storage infrastructure.

Security Services
1. IAM (Identity and Access Management) — IAM is a secure cloud security service which
helps you to manage users, assign policies, form groups to manage multiple users.
2. Inspector — It is an agent that you can install on your virtual machines, which reports any
security vulnerabilities.
3. Certificate Manager — The service offers free SSL certificates for your domains that are
managed by Route53.
4. WAF (Web Application Firewall) — WAF security service offers applicationlevel protection
and allows you to block SQL injection and helps you to block cross-site scripting attacks.
5. Cloud Directory — This service allows you to create flexible, cloud-native directories for
managing hierarchies of data along multiple dimensions.
6. KMS (Key Management Service) — It is a managed service. This security service helps you to
create and control the encryption keys which allows you to encrypt your data.
7. Organizations — You can create groups of AWS accounts using this service to manages
security and automation settings.
8. Shield — Shield is managed DDoS (Distributed Denial of Service protection service). It offers
safeguards against web applications running on AWS.
9. Macie — It offers a data visibility security service which helps classify and protect your
sensitive critical content.
10. GuardDuty —It offers threat detection to protect your AWS accounts and workloads.

68
Database Services
1. Amazon RDS- This Database AWS service is easy to set up, operate, and scale a relational
database in the cloud.
2. Amazon DynamoDB- It is a fast, fully managed NoSQL database service. It is a simple
service which allow cost-effective storage and retrieval of data. It also allows you to serve any
level of request traffic.
3. Amazon ElastiCache- It is a web service which makes it easy to deploy, operate, and scale an
in-memory cache in the cloud.
4. Neptune- It is a fast, reliable and scalable graph database service.
5. Amazon RedShift - It is Amazon's data warehousing solution which you can use to perform
complex OLAP queries.

Developer Tools
1. CodeStar — Codestar is a cloud-based service for creating, managing, and working with
various software development projects on AWS.
2. CodeCommit — It is AWS's version control service which allows you to store your code and
other assets privately in the cloud.
3. CodeBuild — This Amazon developer service help you to automates the process of building
and compiling your code.
4. CodeDeploy — It is a way of deploying your code in EC2 instances automatically.
5. CodePipeline — It helps you create a deployment pipeline like testing, building, testing,
authentication, deployment on development and production environments.
6. Cloud9 —It is an Integrated Development Environment for writing, running, and debugging
code in the cloud.

Mobile Services

69
1. Mobile Hub — Allows you to add, configure and design features for mobile apps.
2. Cognito — Allows users to signup using his or her social identity.
3. Device Farm — Device farm helps you to improve the quality of apps by quickly testing
hundreds of mobile devices.

70

You might also like