Community Cloud Pods
3 minute read
LocalStack supports Community Cloud Pods to give our community users a limited Cloud Pods experience. Using Community Cloud Pods, you get two commands: save
and load
to save the container state in a Cloud Pod and dump it into their running LocalStack container at any given time, respectively.
Getting started
In this getting started guide, we will demonstrate how community users can leverage Community Cloud Pods to save the state of their running LocalStack instance permanently. To get started, you would only need awscli
installed. We intend this feature to be open to community users; hence no LOCALSTACK_API_KEY
is required.
Let us start by creating some AWS resources in LocalStack. Just a mere example, let us create a S3 bucket and a SQS queue:
$ awslocal s3 mb s3://test
$ awslocal sqs create-queue --queue-name test-queue
Let us dump such a simple state into a Cloud Pod using the save
command. This command takes a file URI as an argument and creates a ZIP file in the specified directory. Assuming we want to create a pod named awesome-pod
in our Desktop folder, we will run the below commands to save an awesome-pod
in your Desktop directory:
$ localstack pod save file:///Users/<my_username>/Desktop/awesome-pod
Cloud Pods file:///Users/<my_username>/Desktop/awesome-pod successfully exported
This exported ZIP file now contains the state we previously created, and we can restore it at any time with the inverse command, i.e., load
. For instance, the following command will restore the same state of a fresh instance of LocalStack:
$ localstack pod load file:///Users/<my_username>/Desktop/awesome-pod
Cloud Pods file:///Users/<my_username>/Desktop/awesome-pod successfully loaded
It is worth noting that the load
command also allows loading a Cloud Pod stored at a given URL. We also provide a short-hand option to load Cloud Pods saved in a public GitHub repository. To showcase this possibility, we opened a new public repository at localstack/cloud-pods, where we started storing several Cloud Pods for demonstration purposes.
For example, we uploaded a Cloud Pod named s3-trigger-thumbnail
based on an official AWS documentation tutorial. This Cloud Pod stores a simple application consisting of two S3 buckets and a Lambda function. For each jpg
image uploaded in one of the buckets, the Lamda function will create a thumbnail of it and store it in the other bucket.
To load this Cloud Pod, you can run the following command:
$ localstack pod load git://localstack/cloud-pods/s3-trigger-thumbnail
Note
The above command is equivalent to:
$ localstack pod load https://raw.githubusercontent.com/localstack/cloud-pods/main/s3-trigger-thumbnail
To test the loaded pod, you can run the following command:
$ awslocal s3 cp <path_to_file>.jpg s3://img-bucket
To check the content of the destination bucket run the following command:
$ awslocal s3 ls s3://img-bucket-resized
Limitations
Community Cloud Pods have some limitations:
- Only Community-available AWS services can be saved and loaded in a Community Cloud Pod.
- Users are responsible for storing their saved states. Pro users can use our Cloud Pods platform to make storing and sharing their saved states easier.
- Cloud Pods for Community users do not support versioning out of the box.