如何将GitLab上需企业VPN的Python脚本部署到AWS Lambda并配置Cron定时任务
AWS Lambda 定时运行需企业VPN的Python脚本全流程指南
1. 前置准备
- 拥有对应权限的AWS账号(需包含Lambda、VPC、EventBridge、IAM操作权限)
- 企业VPN的端点信息、认证凭证(预共享密钥、账号密码等)
- 存放Python脚本的GitLab仓库权限、GitLab CI/CD启用权限
2. 配置AWS端VPN与Lambda网络绑定
- 先在AWS VPC控制台配置站点到站点VPN连接,对接你的企业VPN端点,完成路由配置、安全组放行,确保VPC内资源可以正常访问企业内网资源
- 进入Lambda控制台新建Python运行时的函数,在函数配置的「VPC」选项卡,绑定刚才配置好VPN的VPC、私有子网,配置允许访问企业内网的安全组
- 测试Lambda基础连通性:在Lambda控制台运行测试代码,验证是否能正常访问企业内网的目标服务,示例测试代码如下:
import requests def lambda_handler(event, context): # 替换为你企业内网的可访问测试地址 resp = requests.get("http://your-intranet-test-address.com/ping") return resp.status_code
3. 配置GitLab CI/CD自动部署代码到Lambda
- 先在AWS IAM控制台创建专门用于GitLab部署的用户,授予
AWSLambda_FullAccess权限(最小权限可按需收缩),生成Access Key和Secret Key - 进入GitLab对应仓库的「Settings - CI/CD - Variables」,添加3个保密变量:
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_REGION,值对应你刚才生成的AWS凭证和部署区域 - 在仓库根目录新建
.gitlab-ci.yml文件,写入部署配置,示例配置如下:
stages: - deploy deploy_lambda: stage: deploy image: amazon/aws-cli:latest only: - main # 仅main分支提交时触发部署,可按需修改 script: - aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID - aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY - aws configure set region $AWS_REGION # 打包当前目录代码,忽略无用文件 - zip -r lambda_function.zip . -x ".git/*" ".gitlab-ci.yml" # 更新Lambda函数代码 - aws lambda update-function-code --function-name 你的Lambda函数名称 --zip-file fileb://lambda_function.zip
- 提交代码到main分支,查看GitLab CI/CD流水线运行状态,确认部署成功后到Lambda控制台验证代码已经同步
4. 配置定时Cron触发规则
- 进入AWS EventBridge控制台,新建规则,规则类型选择「定时规则」
- Cron表达式按你需要的执行时间配置,注意AWS EventBridge的Cron为UTC时间,比如要每天北京时间上午9点执行,对应UTC时间凌晨1点,表达式为
0 1 * * ? * - 目标类型选择「Lambda函数」,选择你之前创建的Lambda函数,保存规则即可
- 可以手动触发一次EventBridge规则,验证Lambda是否能正常执行、返回预期结果
常见问题排查
- 若Lambda无法访问企业内网:优先检查VPC路由表是否指向VPN连接、安全组是否放行了对应出站端口、VPN连接状态是否正常
- 若GitLab部署失败:检查IAM用户权限是否足够、GitLab变量是否配置正确、Lambda函数名称是否填写正确
- 若定时触发不生效:检查Cron表达式的时区是否正确、EventBridge规则状态是否启用、Lambda函数的执行权限是否允许EventBridge调用
内容的提问来源于stack exchange,提问作者Kristina
相关产品推荐
相关产品推荐

