AWS Serverless Application Repository - Python
A Python library with convenience helpers for working with the AWS Serverless Application Repository.
Installation
Simply use pip to install the library:
pip install serverlessrepo
Basic Usage
The serverlessrepo module provides a simple interface for publishing applications and managing application permissions. To get started, import the serverlessrepo module:
import serverlessrepo
Publish Applications
publish_application(template, sar_client=None)
Given an AWS Serverless Application Model (SAM) template, it publishes a new application using the specified metadata in AWS Serverless Application Repository. If the application already exists, it updates metadata of the application and publishes a new version if specified in the template.
For example:
import boto3
import yaml
from serverlessrepo import publish_application
sar_client = boto3.client('serverlessrepo', region_name='us-east-1')
with open('template.yaml', 'r') as f:
template = f.read()
# if sar_client is not provided, we will initiate the client using region inferred from aws configurations
output = publish_application(template, sar_client)
# Alternatively, pass parsed template as a dictionary
template_dict = yaml.loads(template)
output = publish_application(template_dict, sar_client)
The output of publish_application has the following structure:
{
'application_id': 'arn:aws:serverlessrepo:us-east-1:123456789012:applications/test-app',
'actions': ['CREATE_APPLICATION'],
'details': {
'Author': 'user1',
'Description': 'hello',
'Name': 'hello-world',
'SemanticVersion': '0.0.1',
'SourceCodeUrl': 'https://github.com/hello'}
}
}
There are three possible values for the actions field:
['CREATE_APPLICATION']- Created a new application.['UPDATE_APPLICATION']- Updated metadata of an existing application.['UPDATE_APPLICATION', 'CREATE_APPLICATION_VERSION']- Updated metadata of an existing application and created a new version, only applicable if a new SemanticVersion is provided in the input template.
details has different meaning based on the actions taken:
- If a new application is created, it shows metadata values used to create the application.
- If application is updated, it shows updated metadata values.
- If application is updated and new version is created, it shows updated metadata values as well as the new version number.
update_application_metadata(template, application_id, sar_client=None)
Parses the application metadata from the SAM template and only updates the metadata.
For example:
import boto3
import yaml
from serverlessrepo import update_application_metadata
sar_client = boto3.client('serverlessrepo', region_name='us-east-1')
with open('template.yaml', 'r') as f:
template = f.read()
application_id = 'arn:aws:serverlessrepo:us-east-1:123456789012:applications/test-app'
# if sar_client is not provided, we will initiate the client using region inferred from aws configurations
update_application_metadata(template, application_id, sar_client)
# Alternatively, pass parsed template as a dictionary
template_dict = yaml.loads(template)
update_application_metadata(template_dict, application_id, sar_client)
Manage Application Permissions
make_application_public(application_id, sar_client=None)
Makes an application public so that it's visible to everyone.
make_application_private(application_id, sar_client=None)
Makes an application private so that it's only visible to the owner.
share_application_with_accounts(application_id, account_ids, sar_client=None)
Shares the application with specified AWS accounts.
Examples
import boto3
from serverlessrepo import (
make_application_public,
make_application_private,
share_application_with_accounts
)
application_id = 'arn:aws:serverlessrepo:us-east-1:123456789012:applications/test-app'
sar_client = boto3.client('serverlessrepo', region_name='us-east-1')
# Share an application publicly
make_application_public(application_id, sar_client)
# Make an application private
make_application_private(application_id, sar_client)
# Share an application with other AWS accounts
share_application_with_accounts(application_id, ['123456789013', '123456789014'], sar_client)
Development
- Fork the repository, then clone to your local:
git clone https://github.com/<username>/aws-serverlessrepo-python.git
- Set up the environment:
make init - Install new packages:
pipenv install [package names]- Pipenv will automatically update Pipfile and Pipfile.lock for you.
- Add new dependencies to setup.py install_requires if they are needed for consumers of this library.
- Verify that everything works:
make build- You can run
make testseparately to verify that tests pass. - Check code style with
make flakeandmake lint.
- You can run
- Make code changes, run all verifications again before sending a Pull Request:
make pr
License
This library is licensed under the Apache 2.0 License.
Metadata
Release files for serverlessrepo 0.1.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| serverlessrepo-0.1.10.tar.gz | 29.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| serverlessrepo-0.1.10-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 53.7 kB
Release files / serverlessrepo-0.1.10.tar.gz
| Download URL | serverlessrepo-0.1.10.tar.gz |
|---|---|
| Size | 29.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
671f48038123f121437b717ed51f253a55775590f00fbab6fbc6a01f8d05c017
|
|
BLAKE2b-256 checksum How to use checksums |
3099c19bb97609a2f8089082f7f882c90393fb2e99027d8c2094e8cc4ac3d83b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.3
|
Release files / serverlessrepo-0.1.10-py2.py3-none-any.whl
| Download URL | serverlessrepo-0.1.10-py2.py3-none-any.whl |
|---|---|
| Size | 23.7 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
b99c69be8ce87ccc48103fbe371ba7b148c3374c57862e59118c402522e5ed52
|
|
BLAKE2b-256 checksum How to use checksums |
fa3a0cc09e616bd4f20f108b01cd2b85bc73151698c57e772aadf32773e20763
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.3
|