summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-04-10 19:16:24 +0000
committerCoprDistGit <infra@openeuler.org>2023-04-10 19:16:24 +0000
commitbc176c83404b48c587f5bd283b3e0580ef42a881 (patch)
treee78dc3a697f7ede370855be0915c439d531d3d5c
parenta706135ed25caa0ba8688c87ec8c8dfc0a252897 (diff)
automatic import of python-awslambdaric
-rw-r--r--.gitignore1
-rw-r--r--python-awslambdaric.spec608
-rw-r--r--sources1
3 files changed, 610 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..f2cd2da 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/sources b/sources
new file mode 100644
index 0000000..19bf2ca
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+79715ea1b6c7774caa13b4521c5ace09 awslambdaric-2.0.4.tar.gz