Skip to main content

AWS Lambda Runtime Interface Client for Python

Project description

AWS Lambda Python Runtime Interface Client

We have open-sourced a set of software packages, Runtime Interface Clients (RIC), that implement the Lambda Runtime API, allowing you to seamlessly extend your preferred base images to be Lambda compatible. The Lambda Runtime Interface Client is a lightweight interface that allows your runtime to receive requests from and send requests to the Lambda service.

The Lambda Python Runtime Interface Client is vended through pip. You can include this package in your preferred base image to make that base image Lambda compatible.

Requirements

The Python Runtime Interface Client package currently supports Python versions:

  • 3.6.x up to and including 3.9.x

Usage

Creating a Docker Image for Lambda with the Runtime Interface Client

First step is to choose the base image to be used. The supported Linux OS distributions are:

  • Amazon Linux 2
  • Alpine
  • CentOS
  • Debian
  • Ubuntu

Then, the Runtime Interface Client needs to be installed. We provide both wheel and source distribution. If the OS/pip version used does not support manylinux2014 wheels, you will also need to install the required build dependencies. Also, your Lambda function code needs to be copied into the image.

# Include global arg in this stage of the build
ARG FUNCTION_DIR

# Install aws-lambda-cpp build dependencies
RUN apt-get update && \
  apt-get install -y \
  g++ \
  make \
  cmake \
  unzip \
  libcurl4-openssl-dev

# Copy function code
RUN mkdir -p ${FUNCTION_DIR}
COPY app/* ${FUNCTION_DIR}

# Install the function's dependencies
RUN pip install \
    --target ${FUNCTION_DIR} \
        awslambdaric

The next step would be to set the ENTRYPOINT property of the Docker image to invoke the Runtime Interface Client and then set the CMD argument to specify the desired handler.

Example Dockerfile (to keep the image light we use a multi-stage build):

# Define custom function directory
ARG FUNCTION_DIR="/function"

FROM python:buster as build-image

# Include global arg in this stage of the build
ARG FUNCTION_DIR

# Install aws-lambda-cpp build dependencies
RUN apt-get update && \
  apt-get install -y \
  g++ \
  make \
  cmake \
  unzip \
  libcurl4-openssl-dev

# Copy function code
RUN mkdir -p ${FUNCTION_DIR}
COPY app/* ${FUNCTION_DIR}

# Install the function's dependencies
RUN pip install \
    --target ${FUNCTION_DIR} \
        awslambdaric


FROM python:buster

# Include global arg in this stage of the build
ARG FUNCTION_DIR
# Set working directory to function root directory
WORKDIR ${FUNCTION_DIR}

# Copy in the built dependencies
COPY --from=build-image ${FUNCTION_DIR} ${FUNCTION_DIR}

ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ]
CMD [ "app.handler" ]

Example Python handler app.py:

def handler(event, context):
    return "Hello World!"

Local Testing

To make it easy to locally test Lambda functions packaged as container images we open-sourced a lightweight web-server, Lambda Runtime Interface Emulator (RIE), which allows your function packaged as a container image to accept HTTP requests. You can install the AWS Lambda Runtime Interface Emulator on your local machine to test your function. Then when you run the image function, you set the entrypoint to be the emulator.

To install the emulator and test your Lambda function

  1. From your project directory, run the following command to download the RIE from GitHub and install it on your local machine.
mkdir -p ~/.aws-lambda-rie && \
    curl -Lo ~/.aws-lambda-rie/aws-lambda-rie https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie && \
    chmod +x ~/.aws-lambda-rie/aws-lambda-rie
  1. Run your Lambda image function using the docker run command.
docker run -d -v ~/.aws-lambda-rie:/aws-lambda -p 9000:8080 \
    --entrypoint /aws-lambda/aws-lambda-rie \
    myfunction:latest \
        /usr/local/bin/python -m awslambdaric app.handler

This runs the image as a container and starts up an endpoint locally at http://localhost:9000/2015-03-31/functions/function/invocations.

  1. Post an event to the following endpoint using a curl command:
curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

This command invokes the function running in the container image and returns a response.

Alternately, you can also include RIE as a part of your base image. See the AWS documentation on how to Build RIE into your base image.

Development

Building the package

Clone this repository and run:

make init
make build

Running tests

Make sure the project is built:

make init build

Then,

  • to run unit tests: make test
  • to run integration tests: make test-integ
  • to run smoke tests: make test-smoke

Troubleshooting

While running integration tests, you might encounter the Docker Hub rate limit error with the following body:

You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limits

To fix the above issue, consider authenticating to a Docker Hub account by setting the Docker Hub credentials as below CodeBuild environment variables.

DOCKERHUB_USERNAME=<dockerhub username>
DOCKERHUB_PASSWORD=<dockerhub password>

Recommended way is to set the Docker Hub credentials in CodeBuild job by retrieving them from AWS Secrets Manager.

Security

If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our vulnerability reporting page. Please do not create a public github issue.

License

This project 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

awslambdaric-2.0.1.tar.gz (8.5 MB view details)

Uploaded Source

Built Distributions

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

awslambdaric-2.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (573.1 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

awslambdaric-2.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (579.6 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

awslambdaric-2.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (573.1 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

awslambdaric-2.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (580.4 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

awslambdaric-2.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (573.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

awslambdaric-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (335.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

awslambdaric-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (332.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

awslambdaric-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (335.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

awslambdaric-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (332.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

awslambdaric-2.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (335.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

awslambdaric-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (332.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

awslambdaric-2.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (335.8 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

awslambdaric-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (333.2 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

awslambdaric-2.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (334.9 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

awslambdaric-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (332.3 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ARM64

File details

Details for the file awslambdaric-2.0.1.tar.gz.

File metadata

  • Download URL: awslambdaric-2.0.1.tar.gz
  • Upload date:
  • Size: 8.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.5

File hashes

Hashes for awslambdaric-2.0.1.tar.gz
Algorithm Hash digest
SHA256 4605901db88b4855190bbafba3aedf3a27f0ebe52db0ea7befef33b3da9d1fff
MD5 f53c78edb19cc0e986d119f309e8d068
BLAKE2b-256 e987c7e32f81766eedce6d8b5ac79ed35b5417cd6d9166837a4c3e727a767a14

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: awslambdaric-2.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 573.1 kB
  • Tags: PyPy, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.0

File hashes

Hashes for awslambdaric-2.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 006ce356098645426042d041cea0d2130cb5657b3521729c52bbe83b2594f7d9
MD5 3768683e15794262014d82de8f44d35e
BLAKE2b-256 330618f457a524cf0562f25aae0dec432881c9f61b81feaead43875ba541510b

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for awslambdaric-2.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 09d69333d23f74b269b0dce6e259d07457e5d72f02dcbc19f8c584b84065e52c
MD5 0f8ca6cc7a12b6dde754f8febbb572a3
BLAKE2b-256 2c03365f277c82fb0771d45af2f61b5b97cd8bee15356da6bf00185f65caee8e

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: awslambdaric-2.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 573.1 kB
  • Tags: PyPy, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.0

File hashes

Hashes for awslambdaric-2.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d54f97499c18aca8bbe58b9dcb397309516420bfe2bb07e89c97d982490a994c
MD5 ecaaf2bfda7a6e06a401a3f3df873b06
BLAKE2b-256 8382fa6d8110b111b26083cdb0ebfe56f6728dea309ddab65ffe93b2e6051002

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for awslambdaric-2.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f5f174b47e107899a5e411f69a58c05cf5f8ba4855155dfec32bb762ed210008
MD5 d1626e81f3bcd7495edb4c4ab9c6986c
BLAKE2b-256 a6a16759f8d051f32777aae8be7618fc6c5e7326e16060dd091d0fc74f4ddd4e

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: awslambdaric-2.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 573.9 kB
  • Tags: PyPy, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.0

File hashes

Hashes for awslambdaric-2.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0e9a57d1774d14e47d9ea5cb0a77cedd2c50748186461d7640d24ff9369ed279
MD5 b8f855e63ab838b521262c0e7f209346
BLAKE2b-256 9dae172feb626a382fac1fa3617dc9d5715a642b07ab1ef8422e7322b7e21394

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for awslambdaric-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3a444b2158a2e5c2e96da920bfadd83fcab6b17ad7442a6efe237eb0f7ea5a81
MD5 b2f7d7e15e89fe2e0adb7ac00e66a475
BLAKE2b-256 97013f20b3cba3fe06b47cfcbe7e24b429526f69ed76dbba9243f7ca3395ccbd

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: awslambdaric-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 332.7 kB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.0

File hashes

Hashes for awslambdaric-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3981d84efeba86e6c6611b12c51878bf6c89c4a173c6dede67ffc1a71d6e2dda
MD5 938928641b4aebe157985b989519f263
BLAKE2b-256 e1c4b7856fc7d7a5a580fb62655835752c1afd874ba8ceed4bd4a385f5ba79b2

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for awslambdaric-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 57525db8316ebd7152e152d38adb7a029e5d61476eca3334a6ee5792a0496930
MD5 e620d5c1813f62b6b076196303392506
BLAKE2b-256 eeafa212fae4401bce77e48190e591d50d39471c958e00b19b8b79e31b9b0790

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: awslambdaric-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 332.5 kB
  • Tags: CPython 3.9, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.0

File hashes

Hashes for awslambdaric-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2c7773f0852fe42fc01f1b398ba46117080424ed2c03033aac6fb4e686660e91
MD5 6ce719f4c2214c1a92ed799388e72a18
BLAKE2b-256 48d09bf1ec04f9539b02b952ac0e2cd6740e2e5c9e5c301635c67036b5f08199

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for awslambdaric-2.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cc5183909e50ca725875af86acceadad158f4efee227f52533653818318debf2
MD5 65b044cc5685fb8b3b35d6e1ce2004cc
BLAKE2b-256 6408ff7001b87da1c1295bb6ca3a8f5676df90f2527bbc0c718d282c8a05271b

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: awslambdaric-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 332.6 kB
  • Tags: CPython 3.8, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.0

File hashes

Hashes for awslambdaric-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8cfb527889e1b0f94c9033112b96eef00a2bc0c9b8503b947863205718e0521a
MD5 b7c382503e3853cbb5242a454a76133f
BLAKE2b-256 c6b202a5ec2fa8ca6815ec38f3805dbebf8eef2848d471e3916ff2dcddb0647e

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for awslambdaric-2.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dc7d8ca977e6899ebf1052783a4bf8118d239796a19f9d49b690ba3ada578d90
MD5 2dda8bf9d0e1dbec7e7378365a772ee4
BLAKE2b-256 bcf0421444e18e4fea075bdd874eb870f466eba755d77311d45520a91748da36

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: awslambdaric-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 333.2 kB
  • Tags: CPython 3.7m, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.0

File hashes

Hashes for awslambdaric-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bd5ded7c2508ac191cc29fdfe76d539eef60131916b8e0ff05686f1ff5438008
MD5 d0dc7c90380235440e1bf799c8959758
BLAKE2b-256 4d3fffe102824123b44335030b5218dfd5ede2c3de02d762da45d5da6c0159be

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for awslambdaric-2.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 573c2b32f663ed8e3c5458806a631acb9483e4b19a928c28783df1477273b0d3
MD5 dff768d51845264acc48180c54ab7ffa
BLAKE2b-256 654ec79a8e3390f61b92639871c2bd1c14d307ab35035f35a5b5f3739ecf085a

See more details on using hashes here.

File details

Details for the file awslambdaric-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: awslambdaric-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 332.3 kB
  • Tags: CPython 3.6m, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.3 CPython/3.8.0

File hashes

Hashes for awslambdaric-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0f8667a7e419a0dad6caff78246e4aa7ceb18d9f4049cfa17d9982bcbf8831ab
MD5 f3c3e890ff0d8ea8bd4d727ff3dc8e58
BLAKE2b-256 92f2d0f3fa86ec4494a47ef00c94aeb3c64a938637f6fd553119d06ee29f43ef

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