首页 > 解决方案 > 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

标签: lambdaaws-lambdagitlabgitlab-ci

解决方案


您可以更新管道以包含 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 文件,同时包含了该包及其依赖项。


推荐阅读