how to use Amazon SWF internal? - amazon-web-services

I would like to try Amazon SWF development on my pc. But, It seems to me that I must register to Amazon AWS cloud in order to use Amazon Simple Workflow. What I need is to run all Amazon stuff in a single machine without the need of Amazon hosted services (or authentication).
The documentation for Amazon Simple Workflow Service is here.
Can you please help?

You could run the workflow locally using the aws test framework. In this case everything (activites and decision workers) will run locally on the instance that you will be running the test framework, only that no swf api will be invoked. So you can test the orchestration logic of the decision worker without needing a aws account.

Using cloud services offline doesn't make much sense. You will definitely need to sign up for an AWS account to be able to play with SWF. There is a free tier which should be sufficient for your development.

Related

AWS equivalent to Azure Logic Apps

Is there an AWS equivalent to Azure Logic Apps?
Furthermore I would like to know if someone has experiences regarding a migration of Azure Integration Services into AWS and if a comparison between Azure and AWS regarding the integration stack exists.
Based on the information provided here, the equivalent of Logic Apps in AWS is Step Functions.
You might also be able to use AWS Simple Workflow.
I'm not sure about Azure Integration Services but it sounds like AWS Migration Hub

Serverles web app with automatically created, scheduled one time jobs

I'm trying to figure out if it's feasible to create a serverless web app in which an API function creates a job that is scheduled to run once at a specific time and date.
I've looked at the three main providers, AWS, Google Cloud and Microsoft Azure. All three provide everything needed for a serverless web app in general, but I'm not sure I understand if any of them support what I described above.
AWS has CloudWatch, which has an API. However, there is nothing about Events in the API doc, it looks like Events can only be created by hand in the console or via Terraform.
Google Cloud has the Scheduler. However, there is no mention of an API in the docs. It does support Terraform too, though.
Microsoft has the Azure Scheduler, and that one seems to support creating jobs via an API.
Doesn't Terraform require an API, so am I missing anything?
I'm completely new to serverless web apps. Is this even the correct approach to do this?
Edit:
I just realized that it's possible to create Amazon CloudWatch events via an API, however, it's called EventBridge... That makes me think I might have missed something in Google Cloud as well. However, I'm still wondering if this is the right approach?
To provide a little more detail on what I want to do:
A user creates an event in the web frontend.
My API function that the frontend calls creates some cloud version of a cronjob that is to be run once at a specific time and date
The job triggers another function that does something with a third party API at the time specified by the user
On Google Cloud, you can deploy your app on serverless services (Cloud Run, Cloud Function or App Engine). Then, you can set up a Cloud Scheduler. Cloud Scheduler can call an HTTP URL and then to trigger you serverless service.
About the API accessibility of Google Cloud services, "All is API". So you can do all what you can on the console or with the GCLOUD cli, with API calls.

AWS choices for single microservice (spring boot) for Angular 7 client

I'm relatively new to AWS and wanted suggestions about the best options for my needs. I have a single spring boot API that is to be accessible only to my angular 7 client. The client will go in an S3 bucket. I need suggestions for how to host the API (it needs a MySQL autogenerated db).
So far I have seen ECS vs Elastic Beanstalk vs. Amplify. Can someone experienced suggest me an option that won't be overkill for this small project? The API could be called frequently depending on traffic to the client.
If you have suggestions from Azure or Google Cloud Platform those would be welcome too.
Thank you!
AWS provides the EC2 service where you can create an instance (virtual machine) and install/deploy manually your application and all the required software. For personal or very small projects this can be an option, but you should consider that your backend will not be able to scale to more instances automatically (or by configuration), you will have to take care of the configuration and backups of your database, etc.
For production-grade applications there are a lot of advantages of separating your application components, using a specific service for each component.
Given your application stack, I would recommend considering this approach:
Create a relational DB with AWS RDS
Deploy your Spring backend to AWS Beanstalk
Deploy your Angular frontend to AWS S3 (it can be served as static content)
Create a CloudFront distribution with two origins, to route the requests that must be delivered to backend (usually using a URL convention like /api/) and frontend ()

What parts of the AWS should I use for a web portal?

I am currently working on a web portal for a foundation. Applicants for a grant will receive access data in advance independently of this portal. New applications will then be created and processed in the portal itself. Once an application is complete, it is sent off. Later the application will be approved or rejected.
There are a number of technical specifications on which I have no influence. The frontend should be implemented using Html+Javascript. The backend should use the Amazon Web Services (AWS). If there is a need to program something for the backend - then C# should be used.
I know how to implement the classic client-server solution. At the moment, however, AWS offers me an unmanageable set of services. And here I'm hoping for suggestions as to which of the services I should take a closer look at. Ideally, no complete 'server solution' should run on a virtual server. Instead, Lambda functions are mentioned again and again. So would Amazon RDS and AWS Lambda be a sensible and sufficient combination? Did I miss something?
Thank you very much for your suggestions.
One solution would be to use AWS S3 to server HTML, CSS, JS, Images and other static content. You could use AWS Lambda via AWS API Gateway to serve as a backend. AWS Lambda would then connect to AWS RDS or AWS DynamoDB if you would prefer a NoSQL solution.
Image taken from AWS Github repo
You can get a more detailed description of how to set this up at
https://github.com/aws-samples/aws-serverless-workshops/tree/master/WebApplication/

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.