Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/phoenix-alpha/pulumi-ddb-s3-stream
https://github.com/phoenix-alpha/pulumi-ddb-s3-stream
Last synced: 10 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/phoenix-alpha/pulumi-ddb-s3-stream
- Owner: Phoenix-Alpha
- Created: 2022-07-06T13:23:11.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-07-06T13:24:01.000Z (over 2 years ago)
- Last Synced: 2024-04-30T02:54:24.815Z (8 months ago)
- Language: Python
- Size: 5.86 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[![Deploy](https://get.pulumi.com/new/button.svg)](https://app.pulumi.com/new)
# Overview
The purpose of this bucket is to set up best practices for quickly developing Pulumi projects in Python.
## Directory structure
```
.
├── Makefile
├── Pulumi.yaml
├── README.md
├── handler.py
├── pulumi
│ ├── __main__.py
│ ├── component.py
│ ├── compute.py
│ ├── dynamic_providers
│ │ ├── __init__.py
│ │ └── github
│ │ ├── __init__.py
│ │ └── label.py
│ ├── label.py
│ ├── stacks
│ │ └── Pulumi.dev.yaml
│ ├── storage.py
│ └── utils.py
└── requirements
├── dynamic_providers.txt
├── global.txt
└── lambda.txt
```Note that each Pulumi resource is separated by category (ex: compute, storage...)
[__main__.py](./pulumi/__main__.py) merely contains import statements.## Dynamic Provider
Pulumi [Dynamic Providers](https://www.pulumi.com/docs/intro/concepts/programming-model/#dynamicproviders) allows you to easily code in Python a provising logic for resources that do not yet have a Terraform provider.
The boilerplate is inspired upon the [Github example](https://www.pulumi.com/docs/intro/concepts/programming-model/#example-github-labels-rest-api) in the documentation.
The dynamic provider itself is in [pulumi/dynamic_providers/github](./pulumi/dynamic_providers/github) but the resource declaration has been moved to [pulumi/label.py](./pulumi/label.py).
Since most dynamic providers will require SDKs, we've created a separate requirements file for that purpose.
## Lambda
The [Makefile](./Makefile) contains basic boilerplate for packaging a Lambda (which you may or may not need depending on your project).
In order to notify Pulumi wether the Lambda needs to be updated, we're using a hashing mechanism (see [utils.py](./pulumi/utils.py) that checks the packages zip file : everytime you make a new zip, Pulumi detects the change and performs the update of the function during the next `pulumi up`.
Lambda also has its own requirements file in order to limit the package size : we only put in [requirements/lambda.txt](./requirements/lambda.txt) what is actually needed for the Lambda to run.
If your Lambda doesn't require extra `pip` packages then you can simply ignore the Layer part of the Makefile and in [compute.py](./pulumi/compute.py).# Getting started
A good place to start with Pulumi is the [Documentation](https://www.pulumi.com/docs/).
Most of the AWS-related documentation in Pulumi is somewhat lacking, so the best place to get info regarding AWS is to look at the [Terraform counterpart](https://www.terraform.io/docs/providers/aws/) (since Pulumi is merely a wrapper around it).
Ultimately, the best documentation for Pulumi is its source code available on [Github](https://github.com/pulumi/pulumi-aws/tree/master/sdk/python/pulumi_aws).