Skip to main content

A Python library with convenience helpers for working with the AWS Serverless Application Repository.

Project description

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
    • It installs Pipenv to manage package dependencies. Then it creates a virtualenv and installs dependencies from Pipfile (including dev).
  • 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 tests separately to verify that tests pass.
    • Check code style with make flake and make lint.
  • 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

serverlessrepo-0.1.8.tar.gz (31.2 kB view details)

Uploaded Source

Built Distribution

serverlessrepo-0.1.8-py2.py3-none-any.whl (23.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file serverlessrepo-0.1.8.tar.gz.

File metadata

  • Download URL: serverlessrepo-0.1.8.tar.gz
  • Upload date:
  • Size: 31.2 kB
  • Tags: Source
  • Uploaded using 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.1

File hashes

Hashes for serverlessrepo-0.1.8.tar.gz
Algorithm Hash digest
SHA256 533389d41a51450e50cc01405ab766550170149c08e1c85b3a1559b0fab4cb25
MD5 3bb11ffa4825fc853351c4c804079eef
BLAKE2b-256 d75e23d3c350b65bd0fdf972800879f10ac282b9390da43ff2f33068f492c4d7

See more details on using hashes here.

File details

Details for the file serverlessrepo-0.1.8-py2.py3-none-any.whl.

File metadata

  • Download URL: serverlessrepo-0.1.8-py2.py3-none-any.whl
  • Upload date:
  • Size: 23.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using 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.1

File hashes

Hashes for serverlessrepo-0.1.8-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d40e83d29175ba3eddaa02f1dac57332d1dec495e012cd2e80366be9ad7c94a5
MD5 bb5663ea4e78eb53da1c8b0eef030d95
BLAKE2b-256 cac9c6c4dbaf3c1f2b23015db89f5830b3785e356095675cbcdd029a0733a4bc

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page