lambda - AWS lambda- 升级包
问题描述
根据 AWS,他们正在从 python lambda 环境中删除 botocore(https://aws.amazon.com/blogs/developer/removing-the-vendored-version-of-requests-from-botocore/)
他们说我们需要在使用它之前从终端窗口运行 pip install 请求。每当我们使用 Gitlab CI/CD 管道将云基础设施部署到 AWS 时,我们如何运行“pip3 install”?有人有什么想法吗?
这是示例管道
zip-creation:
image: "python:3.7"
stage: package
before_script:
- apt update
- apt install zip -y
- pip install awscli
script:
- cd scripts/app-infra/
- zip -r puloski-services-log-error.zip puloski-services-log-error.py
- zip -r puloski-subscription-filter-custom-resource.zip puloski-subscription-filter-custom-resource.py
- zip -r puloski-s3.zip puloski-s3.py cfnresponse.py
- zip -r puloski-infra.zip *.yml *.json puloski-ssm-param-versions.sh puloski-services-log-error.zip puloski-subscription-filter-custom-resource.zip puloski-s3.zip -x buildspec.yml gitlab-ci.yml *.py yamllint-rules
artifacts:
paths:
- scripts/app-infra/buildspec.zip
- scripts/app-infra/puloski-infra.zip
expire_in: 3 day
解决方案
您可以更新管道以包含 Lambda 函数所需的包,如下所示:
script:
- cd scripts/app-infra/ && mkdir packages && cd packages
- pip install requests -t . #or python3 -m pip install requests -t .
- cd ..
#Making zip with respective files only. Including requests package for all zip files in this example.
#Package1
- cp puloski-services-log-error.py packages/
- zip -r puloski-services-log-error.zip packages/*
- rm packages/puloski-services-log-error.py
#Package2
- cp puloski-subscription-filter-custom-resource.py packages/
- zip -r puloski-subscription-filter-custom-resource.zip packages/*
- rm packages/puloski-subscription-filter-custom-resource.py
#Package3
- cp {puloski-s3.py,cfnresponse.py} packages/
- zip -r puloski-s3.zip packages/*
- rm packages/puloski-s3.py packages/cfnresponse.py
- zip -r puloski-infra.zip *.yml *.json puloski-ssm-param-versions.sh puloski-services-log-error.zip puloski-subscription-filter-custom-resource.zip puloski-s3.zip -x buildspec.yml gitlab-ci.yml *.py yamllint-rules packages
在这里您可以观察到我们已经在特定目录中安装了请求包并制作了 zip 文件,同时包含了该包及其依赖项。
推荐阅读
- c# - ASP.NET Core 3.0 Web API 路由不起作用
- sql - 获取通过一个属性连接的父级及其子级
- mysql - Sequelize 中的关联抛出错误为
未连接到 - java - 这个程序有什么错误?它没有给出任何输出。为什么?
- javascript - 如何在 Vue.js 中将列表拆分为页面?
- rest - 使用 OpenAPI 到底有什么意义?
- r - 使用 tidyeval 编写自定义 case_when 函数以在 dplyr mutate 中使用
- azure - 单个天蓝色应用程序中的多个功能未触发
- angular - 在 Angular (8.0) 中创建将在 FormGroup 和 FormArray 中使用的可重用部分或组件
- javascript - 使用 ajax 和 php 动态更改 html