Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eladkehat/astromech
AWS service utilities for Lambda functions.
https://github.com/eladkehat/astromech
Last synced: 27 days ago
JSON representation
AWS service utilities for Lambda functions.
- Host: GitHub
- URL: https://github.com/eladkehat/astromech
- Owner: eladkehat
- License: mit
- Created: 2019-04-13T19:47:38.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-05-09T12:23:26.000Z (over 5 years ago)
- Last Synced: 2024-11-16T15:20:31.988Z (about 2 months ago)
- Language: Python
- Homepage:
- Size: 27.3 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Astromech - AWS Service Utilities for Lambda Functions
Astromech is a collection of utilities that I found myself copying all over my lambda functions and serverless
projects. For the sake of DRYing up my code, I collected them in a single library.## Service Clients
Astromech implements lazy-initialization for Boto3 service clients:For each service, there is a global client variable that gets reused between invocations of the labmda function
container. Code that want access to the client achieves this by using a `client()` function that initializes it
if necessary.Code example:
```python
from astromech import s3, dynamodbs3.client().get_object(Bucket=..., Key=...)
dynamodb.table().get_item(Key=...)
```## LocalStack Support Made Easy
The service client initialization functions, look for the environment variable `LOCALSTACK_[SERVICE]_URL`
(for example, `LOCALSTACK_S3_URL`).
If it finds one, then it uses its value as the `endpoint_url` for the Boto3 client function.All you have to do to run tests with [LocalStack](https://localstack.cloud) is to set these variables in your local
environment. No changes to the code are necessary.
Naturally, this works with any other downloadable version of AWS services, like
[DynamoDB local](https://hub.docker.com/r/amazon/dynamodb-local).## Utility Functions
There are a few utility functions in each service. These usually save 2-3 lines of boilerplate code. Not a lot,
but for very common functionality that is repeated all across the code base, it becomes worthwhile.For example, to check if an object exists on S3, you have to send a `head_object` request and catch the exception
if it doesn't exist. With `astromech.s3` you just call `exists(bucket, key)`, much like you would do with a local
file.## Why "Astromech"?
In the Star Wars universe, astromech is a type of utility droid, the most famous of which (whom?) is R2-D2.Read more on [Wookiepedia](https://starwars.fandom.com/wiki/Astromech_droid).
![R2-series astromech droids](https://vignette.wikia.nocookie.net/starwars/images/1/1d/Threeartoos.jpg/revision/latest?cb=20060115025836&format=original)