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.6.tar.gz (29.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

serverlessrepo-0.1.6-py2.py3-none-any.whl (23.2 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: serverlessrepo-0.1.6.tar.gz
  • Upload date:
  • Size: 29.7 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.6.tar.gz
Algorithm Hash digest
SHA256 384dc37394ffe1c8036f79a78b15bada4cb954a39f07bdf68f123c1a191fd0b2
MD5 65e544c62e16fab7929f0c526db717a9
BLAKE2b-256 1294ece0d586123041d8a4311335266886d2b60dd1f30b1327780d7081843cbb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: serverlessrepo-0.1.6-py2.py3-none-any.whl
  • Upload date:
  • Size: 23.2 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.6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 f44b05c4752f641d55ca52ca7dc44ab109b520d3d56b06457239a058e241ff4d
MD5 0d7f7e067f2eeb4757d030bca4362e57
BLAKE2b-256 bfdbbac8bc18ef9f9fee11136e7d296551985de9e1ee5c0d8de69d29d00c3d20

See more details on using hashes here.

Supported by

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