Is it possible to compile a code in Amazon EC2? - web-services

I am writing an online judge like spoj.pl .I would like to compile the source code in EC2. Is it possible to compile and execute the C,C++,Java codes in Ec2 ? Do we have access to run shell commands ?

Yes - EC2 instances have operating systems just like your PC.
If you chose a Windows instance, you can Remote Desktop to it and install Eclipse or whatever.
If you chose Linux, it is a bit more tricky since you will have to do more work with the terminal
though you can install NX client and also "remote desktop" to your instance.

Yes it is possible. Since EC2 instances run standard operating systems, you can do pretty much anything you would do in a non-EC2 server.
On Linux, the usual way to run commands is through SSH. When you create an EC2 instance, you are asked to either create or provide a key pair. You must configure your SSH client to use the private key to connect to the EC2 instance.

Related

Confirming that shell is running on an Amazon WorkSpace

I am currently writing a number of shell scripts which will run both on an Amazon Workspaces Linux instance and elsewhere on other Linux hosts (e.g. Amazon Linux EC2 instances).
I would like to have certain Bash variable values configured differently depending on whether or not a given script is being run on a WorkSpaces instance.
Given this, I was wondering if there is a way of checking at the OS level whether the host is an Amazon WorkSpace or not?
Although possibly not fail proof, one method of identifying whether a Linux host is one of the Amazon Linux WorkSpaces hosts is to look for the presence of the /usr/share/icons/amazon-workspaces directory where the icon assets for MATE window manager theme are stored.

Can I use create a share between an EC2 instances and my local machine?

Just to give you a context... I'm new to the aws world and all the services that provides.
I have a legacy application which I need to share some binarys with a client, and I was trying to use a ec2 instance (Amazon Linux AMI) with samba, to map it into a windows local machine.
I was able to establish a conection with another ec2 instances (same vpc), just as a tryout. But I wasn't able to do so with my windows machine or even with a linux vm I have.
The inbound rules for this concept ec2 instance was fully open (All traffic allowed).
Main question
Is it possible to do? Share a file system between a ec2-instances with a (over internet) local machine?
Just saying:
S3 storage isn't an option.
And in my region FSX still ain't implemented and for latency reasons is a no go.
Please ask as many questions you want, I'll try to anwser them as fast as I Can.
Kind Regads.
TL;DR - it's possible, but there's no 'simple' solution (in my opinion).
I thought of two possible solutions that you can implement, here we go ...
1: AWS EFS, AWS Direct Connect and Docker
A possible solution would be using AWS Elastic File System (EFS), AWS Direct Connect and a Docker Linux container.
Drawbacks
If it's the first time you encounter with the above AWS services or Docker, then it's going to be a bit of a journey to learn about them
EFS pricing - it's not so cheap, and you also need to consider the inbound and outbound traffic, it's best to use the calculator that is in the pricing page
EFS performance - if you only share files then it should be okay, but if you expect to get high speeds, then remember that it's not an EBS volume, so for higher speeds you need to pay more money
AWS Direct Connect pricing - you also need to take that into consideration
Security - I'm not sure how sensitive your data is, but you need to make sure you create a very strict VPC, with Security Groups and Network Access List rules - read about the VPC Security Best Practices
Steps to implement the solution
Follow the Walkthrough: Create and Mount a File System On-Premises with AWS Direct Connect and VPN, also, here are the steps on how to combine it with Docker
(Optional) To make it a bit easier - for Windows to "support" Linux file-system, you should use Windows Git Bash. If you're not sure how to use install 3rd-party apps in Windows Git Bash (like aws-vault) then read this blog post
Create an EFS in AWS, and mount it to your EC2 instance, read more about it here
Use AWS Direct Connect to connect to your VPC from your local Windows machine
Install Docker for Windows on your local machine
Create a Docker Volume, and mount the same EFS to that volume - a good example for this step
Test it - SSH to your EC2 instance, create a file on the EFS volume and then check in your local Docker Linux container that this file appears on the EFS volume
I omitted the security steps because it's up to you how strict you want your solution to be.
2: Using S3 as a shared file-system
You can try out this tool s3fs-fuse, but you'll still need to use a Docker Linux container since you're on Windows. I haven't tested it but it looks promising. You can read this blog post, it's a step-by-step tutorial on how to do it, and also shares some other possible solutions.

Invoking Windows EC2 terminal remotely

I need to connect to my Windows EC2 terminal to invoke a local script on it from a different machine CMD.
I tried to search and I 'v found the following: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect.html. This solves the problem for Linux, not windows. Any suggestion or lead for a solution?
On Windows machines, you can remotely SSH onto your EC2 instance using a bash shell, which supports SSH.
If you have git bash installed, it can do the trick for you.
You will need the pem file which you can generate before launching your EC2 instance, at the very last step. Else, you can also use your own key - see docs from AWS here.
You can look into the option of session manager.
Please refer: https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html
To give you a brief, Session Manager is a fully managed AWS Systems Manager capability that lets you manage your Amazon EC2 instances, on-premises instances, and virtual machines (VMs) through an interactive one-click browser-based shell or through the AWS CLI.

Creating an iso of a RHEL instance

I have an amazon ec2 instance with RHEL 7.3 on it. I would like to convert this into an iso so that I can migrate it wherever I want. What are the best tools to create an iso of a virtual machine. Or how do I clone/backup this VM so that I can restore it anywhere I want?
You can work with VM and AWS programatically via AWS CLI commands.
You want to get familiar with import-task and export-task commands.
The best place to start is by reading an official AWS guides for:
Exporting an Instance as a VM Using VM Import/Export
Importing a VM as an Image Using VM Import/Export
The key information you need to pick up from the guide is this quote:
"You can't export an instance from Amazon EC2 unless you previously
imported it into Amazon EC2 from another virtualization environment."
Yes, there are solutions, one of them linked by #Nicholas Smith. That being said, if you go the unofficial route you might end up in a dark alley where help might not be available. I highly recommend and warn here to not proceed with trying to clone EC2 into VM at this point. You will spend a lot of time with a huge risk factor for future.
For you to be able to achieve what you want, you need to create a RHEL VM using any VM software, you need to load this VM into AWS and then you will be able to work with VM in AWS making any necessary changes and export again for local or transportation needs.
As you are running a widely-used Linux distribution - RHEL, you can attempt to recreate your EC2 environment manually by launching a VM that runs the same kernel version along with the same package versions. From there, you can tarball what files you need from your production instance and copy them over to your on-premise site by using SCP/SFTP.
Just get your RHEL environment into VM locally and import to AWS and you set.
Clonezilla provides functionality to create images. Generated images can be converted to ISO files.
It doesn't seem to be something that Amazon promote as a service however the aws cli tools have an ec2-unbundle command for extracting from an AMI. There's a guide here on how to download and run an EC2 AMI locally by using it.
Caveat is it appears the ec2-unbundle command currently only works on Linux and not OS X or Windows.

Does Amazon EC2 allow to install tools?

In case of dedicates servers, we are allowed to install any software. Does Amazon EC2 instance allow to install tools?
Yes, EC2 is like a virtual machine that create to your own spec, and then request copies of it to be started by Amazon.
There is lots more information on this site:
http://aws.amazon.com/ec2/
http://aws.amazon.com/ec2/faqs
Yes, EC2 provides the same as a dedicated server plus you can replicate the image and start multiple instances.
Your question has already been answered. But to even illustrate the point futher. Amazon EC2 even allows you to setup your own operating system.
As far as I can tell it must be a unix/linux operating system, but you can go so far as to build your own kernel
limitless possibilites here.