diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-04-10 19:16:24 +0000 | 
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-04-10 19:16:24 +0000 | 
| commit | bc176c83404b48c587f5bd283b3e0580ef42a881 (patch) | |
| tree | e78dc3a697f7ede370855be0915c439d531d3d5c | |
| parent | a706135ed25caa0ba8688c87ec8c8dfc0a252897 (diff) | |
automatic import of python-awslambdaric
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-awslambdaric.spec | 608 | ||||
| -rw-r--r-- | sources | 1 | 
3 files changed, 610 insertions, 0 deletions
| @@ -0,0 +1 @@ +/awslambdaric-2.0.4.tar.gz diff --git a/python-awslambdaric.spec b/python-awslambdaric.spec new file mode 100644 index 0000000..a642e37 --- /dev/null +++ b/python-awslambdaric.spec @@ -0,0 +1,608 @@ +%global _empty_manifest_terminate_build 0 +Name:		python-awslambdaric +Version:	2.0.4 +Release:	1 +Summary:	AWS Lambda Runtime Interface Client for Python +License:	Apache Software License +URL:		https://github.com/aws/aws-lambda-python-runtime-interface-client +Source0:	https://mirrors.nju.edu.cn/pypi/web/packages/c9/c1/c851767acd173512fe6089445b3a611283932961ace5dc8fdc337c440538/awslambdaric-2.0.4.tar.gz +BuildArch:	noarch + +Requires:	python3-simplejson +Requires:	python3-importlib-metadata + +%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](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html), 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](https://pypi.org/project/awslambdaric).  +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.7.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](https://www.python.org/dev/peps/pep-0599/) wheels, you will also need to install the required build dependencies. +Also, your Lambda function code needs to be copied into the image. + +```dockerfile +# 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): +```dockerfile +# Define custom function directory +ARG FUNCTION_DIR="/function" + +FROM public.ecr.aws/docker/library/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 public.ecr.aws/docker/library/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`: +```python +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](https://github.com/aws/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.  + +```shell script +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 +``` +2) Run your Lambda image function using the docker run command.  + +```shell script +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`.  + +3) Post an event to the following endpoint using a curl command:  + +```shell script +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](https://docs.aws.amazon.com/lambda/latest/dg/images-test.html#images-test-alternative).* + + +## Development + +### Building the package +Clone this repository and run: + +```shell script +make init +make build +``` + +### Running tests + +Make sure the project is built: +```shell script +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. +```shell script +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](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue. + +## License + +This project is licensed under the Apache-2.0 License. + + +%package -n python3-awslambdaric +Summary:	AWS Lambda Runtime Interface Client for Python +Provides:	python-awslambdaric +BuildRequires:	python3-devel +BuildRequires:	python3-setuptools +BuildRequires:	python3-pip +%description -n python3-awslambdaric +## 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](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html), 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](https://pypi.org/project/awslambdaric).  +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.7.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](https://www.python.org/dev/peps/pep-0599/) wheels, you will also need to install the required build dependencies. +Also, your Lambda function code needs to be copied into the image. + +```dockerfile +# 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): +```dockerfile +# Define custom function directory +ARG FUNCTION_DIR="/function" + +FROM public.ecr.aws/docker/library/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 public.ecr.aws/docker/library/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`: +```python +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](https://github.com/aws/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.  + +```shell script +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 +``` +2) Run your Lambda image function using the docker run command.  + +```shell script +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`.  + +3) Post an event to the following endpoint using a curl command:  + +```shell script +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](https://docs.aws.amazon.com/lambda/latest/dg/images-test.html#images-test-alternative).* + + +## Development + +### Building the package +Clone this repository and run: + +```shell script +make init +make build +``` + +### Running tests + +Make sure the project is built: +```shell script +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. +```shell script +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](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue. + +## License + +This project is licensed under the Apache-2.0 License. + + +%package help +Summary:	Development documents and examples for awslambdaric +Provides:	python3-awslambdaric-doc +%description help +## 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](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html), 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](https://pypi.org/project/awslambdaric).  +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.7.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](https://www.python.org/dev/peps/pep-0599/) wheels, you will also need to install the required build dependencies. +Also, your Lambda function code needs to be copied into the image. + +```dockerfile +# 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): +```dockerfile +# Define custom function directory +ARG FUNCTION_DIR="/function" + +FROM public.ecr.aws/docker/library/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 public.ecr.aws/docker/library/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`: +```python +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](https://github.com/aws/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.  + +```shell script +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 +``` +2) Run your Lambda image function using the docker run command.  + +```shell script +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`.  + +3) Post an event to the following endpoint using a curl command:  + +```shell script +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](https://docs.aws.amazon.com/lambda/latest/dg/images-test.html#images-test-alternative).* + + +## Development + +### Building the package +Clone this repository and run: + +```shell script +make init +make build +``` + +### Running tests + +Make sure the project is built: +```shell script +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. +```shell script +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](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue. + +## License + +This project is licensed under the Apache-2.0 License. + + +%prep +%autosetup -n awslambdaric-2.0.4 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then +	find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then +	find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then +	find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then +	find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then +	find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-awslambdaric -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 2.0.4-1 +- Package Spec generated @@ -0,0 +1 @@ +79715ea1b6c7774caa13b4521c5ace09  awslambdaric-2.0.4.tar.gz | 
