We have a cloud application that runs on AWS. This application consists of AWS Lambda functions and uses various AWS services, including S3, SQS, SNS, DynamoDB, Timestream, IoT Core (MQTT broker), Redis, and Kinesis.
Is it possible to run this application on-premises in a secure environment without an Internet connection and without rewriting the code? I understand that AWS Outpost allows running Lambda functions. However, will it even work without ever being able to connect to the AWS cloud?
If this is not possible, what is the recommended/right way for updating such application to support on-premises and cloud environments?
2
Answers
Lambda, SQS, and other serverless services are not designed to be ran on-premises using Outpost, precisely because they are serverless.
Outpost in meant to enable running server-full managed services such as EC2, ECS, etc…, on-premises.
So to answer your question, there is, afaik, no right way to migrate a serverless application off the cloud without any code changes. Your application needs to support all the constraint of running on-premises, which means using servers (even if they are provided in a managed way using Outposts).
If you want "your own AWS" as on-premises services, you can use LocalStack. It provides AWS-compatible services running on your own systems.
Localstack is promoted as: "Develop and test your AWS applications locally to reduce development time and increase product velocity. Reduce unnecessary AWS spend and remove the complexity and risk of maintaining AWS dev accounts."
Or, you could use the AWS Serverless Application Model (sam local) to test Lambda functions locally.
Or, you can use ‘wrappers’ like lambda-local – npm to simulate the environment.
For a good discussion on this topic, see: Best Way to Run a Lambda Locally? : r/aws
Outposts is not something you should be considering. It is a rack of hardware installed in your own data center to run compute and other services with lower latency than connecting to AWS. It would be overkill (and overpriced) for your situation.