Skip to content

Instantly share code, notes, and snippets.

@johnfosborneiii
Created July 3, 2024 19:08
Show Gist options
  • Save johnfosborneiii/eaeeeae2639d8d83a949575a7b1181cb to your computer and use it in GitHub Desktop.
Save johnfosborneiii/eaeeeae2639d8d83a949575a7b1181cb to your computer and use it in GitHub Desktop.
FROM cgr.dev/chainguard-private/python:3.12-dev AS chainguard-builder
USER 0
ARG PACKAGES="cosign"
RUN mkdir -p /newroot/etc && \
cp -a /etc/apk /newroot/etc && \
apk update && \
apk add --no-cache --initdb --root /newroot $PACKAGES && \
find /newroot -mindepth 1 -maxdepth 1 -type d \( ! -name usr -a ! -name var \) -exec rm -rf {} + && \
rm -rf /newroot/usr/share* && \
rm -rf /newroot/var/log* && \
rm -rf /newroot/var/spool* && \
rm -rf /newroot/var/cache/*
RUN mkdir -p /newroot/function && \
site_packages=$(python -c 'import site; print(site.getsitepackages()[0])') && \
new_path="/newroot/${site_packages}" && \
pip install --target="${new_path}" --upgrade awslambdaric flask==2.0.3 flask_lambda werkzeug==2.0.3 --no-cache-dir
RUN mkdir -p /newroot/app && \
cat <<EOF > /newroot/app/app.py
from flask import Flask, jsonify
from flask_lambda import FlaskLambda
app = FlaskLambda(__name__)
@app.route("/")
def hello():
return jsonify({"message": "Hello AWS Lambda - From Chainguard"})
def handler(event, context):
with app.test_client() as client:
response = client.get('/')
return {
'statusCode': response.status_code,
'headers': {k: v for k, v in response.headers.items()},
'body': response.data.decode('utf-8')
}
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080)
EOF
FROM cgr.dev/chainguard-private/python:3.12
WORKDIR /app
COPY --chown=65532:65532 --from=chainguard-builder /newroot /
ENTRYPOINT ["python", "-m", "awslambdaric"]
CMD ["app.handler"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment