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 test 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.10.tar.gz (29.9 kB view details)

Uploaded Source

Built Distribution

serverlessrepo-0.1.10-py2.py3-none-any.whl (23.7 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: serverlessrepo-0.1.10.tar.gz
  • Upload date:
  • Size: 29.9 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.3

File hashes

Hashes for serverlessrepo-0.1.10.tar.gz
Algorithm Hash digest
SHA256 671f48038123f121437b717ed51f253a55775590f00fbab6fbc6a01f8d05c017
MD5 726f4443dd93bb02c573cc1b55fc573a
BLAKE2b-256 3099c19bb97609a2f8089082f7f882c90393fb2e99027d8c2094e8cc4ac3d83b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: serverlessrepo-0.1.10-py2.py3-none-any.whl
  • Upload date:
  • Size: 23.7 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.3

File hashes

Hashes for serverlessrepo-0.1.10-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b99c69be8ce87ccc48103fbe371ba7b148c3374c57862e59118c402522e5ed52
MD5 646777b8e419300bbd469e270d1efe87
BLAKE2b-256 fa3a0cc09e616bd4f20f108b01cd2b85bc73151698c57e772aadf32773e20763

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