How to configure Serverless to forward API Gateway to headless Chrome? - amazon-web-services

My end goal is to have headless Chrome running on AWS Lambda so that tests running on a different server can talk to it. These PHP tests use the WebDriver protocol to drive Chrome. (Selenium is not involved here at all.)
This Dockerfile is what I use in local development and I would like to adapt this to AWS Lambda and API Gateway.
The headless Chrome binary itself is available at https://github.com/adieuadieu/serverless-chrome/
In the past I have used bref which
To run HTTP APIs and websites on AWS Lambda, Bref runs your code using PHP-FPM. That means PHP applications can run on Lambda just like on any other PHP hosting platform.
Emphasis mine. This is what I would like to get: forward all incoming WebDriver requests (which are just HTTP requests at the end of the day) to headless Chrome
How do you configure serverless to do this? Or do you need some glue script ?

Related

Can I use fire base to host my flutter web app while still using AWS amplify for Cognito and DataStore

Hi I was wondering if it was possible to host my flutter Web app on Firebase while using AWS Amplify for its DataStore and Cognito services or does AWS NOT support Flutter Web at all yet. Im having issues hosting it on Amplify and was wondering if there were any solutions.
After you build it, a Flutter web app is just a bunch of HTML and JavaScript, so you can serve it from any hosting platform. And once the JavaScript runs in the browser, it can connect to any service.
If you're having trouble making something work, we can typically help better if you show us the minimal information that is needed to reproduce where you are stuck.

How to deploy frontend application to GCE properly?

Here's the problem: I have a web application consisting of frontend part (written in VueJS) and backend part (API service written in Go).
What's the simplest and proper way to deploy such kind of application to GCE? The web application must be able to serve HTTPS.
In AWS world I could deploy frontend part to S3 (which supports HTTPS) and then deploy Go API to ElasticBeanstalk, for example. In GCE world there is Cloud Storage Standard that also supports serving static content (so I can deploy my VueJS part there), but it does not support HTTPS.
There is also Firebase, that supports HTTPS, but the only backend part I can use with that is Google Cloud Functions which means the whole backend part must be reworked.
Any idea what pattern I can use here to solve the problem? Or maybe I'm totally wrong and need to take a different look at it?
Firebase is the simplest way to deploy your frontend on Google's infrastructure. It handles certificate provisioning for you, so you get HTTPS out of the box. I'm not sure why you think Cloud Functions is the only backend you can use with it. You can use any backend you like, including Amazon's ElasticBeanstalk. I use both App Engine and Compute Engine backends with a Firebase frontend.
You could also do it the "old way" (how it was done when App Engine was Google's only cloud offering), and deploy your frontend to App Engine; it handles static content just fine.
There's not a single right way to do it. Your options are vast, and choosing one service to serve your frontend content in no way limits your choice for running your backend.

AWS Mobile Hub: Sample code for web application

I like the friendly interface that AWS Mobile Hub provides to disparate Amazon services, but I'd like to use it to create a web application, rather than a native iOS or Android app.
It's not clear to me how to do so, since there's no option for javascript sample code or any mention of web applications:
Am I missing something? Is there documentation for this use-case elsewhere?
All of the resources that are configured by various features in Mobile Hub (e.g., NoSQL Database, Cloud Logic APIs) are usable directly from a web app in the browser. For example, you can turn on the App Content Delivery feature, enable web hosting on your Amazon S3 bucket, download/copy the AWS JavaScript SDK into your Amazon S3 bucket, and start writing your web app. The JavaScript SDK will allow you to interact with your Mobile Hub resources (found on the "Resources" page in the left Nav menu in Mobile Hub's console).
However, we do realize these steps are tedious and we have had similar feedback from other customers. So, we are actively working to make these steps easier.
In the meantime, you can get the AWS JavaScript SDK here:
https://aws.amazon.com/sdk-for-browser/
And, you may find some of our github samples are a good starting point, like this one:
https://github.com/awslabs/lambda-refarch-webapp
For those looking to build web apps, AWS has a JavaScript library called AWS Amplify that makes building cloud web apps easy: https://aws.github.io/aws-amplify/

micro service web app with AWS

I am developing a web application for image upload and retrieval with AWS cloud services using a micro service architecture.
I am new to AWS and micro service architecture, please help me map the components of the architecture to AWS components.
Do i consider each micro service to run on one EC2 instance with auto scaling and load balancing?
Or do I run each micro service on one EC2 cluster?
If i put my static html files in an S3, how can i call database methods to load the html pages with content?
Is it by calling am API gateway from the client?
I have searched the web, but was unable to find a tutorial which implements multiple services as micro services using AWS EC2 / ECS.
Please help me figure out how to map my requirements and if there are any tutorials on implementing a similar app, will be very helpful.
Thank you in advance! :)
In short, you could use the serverless architecture i.e (with AWS's APIGateway and Lambda services) to build robust micro service based web applications.
Since you said that you were new to micro services architecture, I am listing down the best approaches.
Frontend/client
Single page applications(SPA) work well in the front-end and as they are a static site, they could be easily deployed to S3. This is the most cost efficient approach for SPAs. Here is a video deploying SPA on S3. This video will guide you through step by step instructions for deploying your SPA.
In case, you use react and redux in the front end, check out these steps for deploying react app to S3.
Backend
AWS EC2 is a good option. But there are many more alternatives available. As you said, you were new to backend, setting up EC2, VPC's and Elastic-ip is a little difficult process.
Nowadays, SPA's cover a lot of business logic, routing, etc., We need our backend only as API's for performing CRUD operations with database. I would like to suggest a bleeding edge technology called serverless. Here is the tutorial for launching your backend within 5 minutes. AWS lambda is a service that is called as function as service. You can build your backend using AWS lambda + API gateway + DynamoDB.
For eg: say you want to register some details in backend, you will POST all the data from client to your backend with url and proper path. In AWS lambda, you write your logic for POST as a function, which contains the logic to parse the data from request and send to dynamoDB. Now, this function can be exposed to world by connecting this function with API gateway( an another service in AWS). At the end we get an API, which can be used in your angular 2 APP. SO, on invoking the POST, angular 2 -> API gateway -> Lambda(extract request and send to DB) -> dynamoDB.
Benefits of using serverless compared to EC2.
You don't need to manage your server(EC2) from updating the new security patch to auto-scaling, everything is taken care by lambda. Serverless is a fully managed service.
You only pay when your lambda functions are invoked. On the contrast, even though your web app doesn't receive traffic for a given day, you have to pay the day-tariff for the given day.
Here is my github repo which could be a boiler plate for reactJS + Serverless + graphQL web app.
Having said, try serverless when compared to traditional backend approach. Any questions on this would be welcomed.

Amazon SimpleDB Web Page Application

I am a new developer to the AWS cloud. I am writing an Android App that interfaces with the SimpleDB. I have found many references and have successfully interfaced my app with the SimpleDB using the AWS SDK and using the anonymous TVM - works great.
The problem is I will need a web site to interface to the same data via AWS SimpleDB. The web site also needs to interface with Google Maps. For the first phase, the site can be completely private, but down the road I would want to be able to make the site available to the public, utilizing one set of security Credentials.
After reading some of the documentation - I am extremely confused about how to do this. Do I need to host the site on AWS? Which API do I use that could interface with my web site code-mostly JQUERY and JavaScript? I see there is a PHP API? (Not too familiar with PHP) I saw some examples using REST calls via AJAX. If anyone has any feedback or simple examples, or explanations that would be great.
Yes, you should host your web site on an EC2 instance (although you can host it on any other server or hosting service).
Your site should also integrate with AWS services, like SimpleDB or DynamoDB.
It will be easier for you to start with Node.js that will run your JQuery and other JavaScript code natively. Check out the new SDK for Node.js.
If you have a static site of mostly js and HTML, you can use amazon s3 to host your site.