如何在provided.al2023自定义运行时的Lambda函数中安装AWS CLI
解决provided.al2023自定义运行时Lambda无AWS CLI的问题
Lambda的provided.al2023自定义运行时默认未预装AWS CLI,且系统默认包管理工具(apt/yum/dnf)因环境只读无法正常使用,以下是可行解决方案:
方案1:使用boto3替代AWS CLI(推荐)
Lambda运行时自带Python环境,boto3是AWS官方SDK,比CLI更适合编程场景,无需额外安装。示例代码:
import boto3 # 示例:调用S3列出存储桶 s3_client = boto3.client('s3') buckets = s3_client.list_buckets() print([bucket['Name'] for bucket in buckets['Buckets']])
方案2:临时下载AWS CLI二进制到/tmp目录
Lambda仅/tmp目录具备可写权限,可直接下载预编译的AWS CLI v2二进制包使用:
# 下载压缩包到/tmp curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "/tmp/awscliv2.zip" # 解压到/tmp目录 unzip /tmp/awscliv2.zip -d /tmp # 指定安装目录到/tmp(默认系统目录只读) /tmp/aws/install -i /tmp/aws-cli -b /tmp # 添加到环境变量并验证 export PATH=/tmp:$PATH aws --version
注意:该方案每次冷启动都需重复执行,适合临时测试场景。
方案3:打包AWS CLI到自定义运行时部署包
若需每次调用直接可用,可将AWS CLI二进制文件打包到部署包中:
- 在本地或EC2实例中下载并安装AWS CLI到本地目录:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip ./aws/install -i ./aws-cli -b ./bin
- 将本地的
aws-cli和bin目录复制到自定义运行时部署包的根目录 - 在Lambda执行脚本中添加环境变量:
export PATH=$LAMBDA_TASK_ROOT/bin:$PATH # 验证安装 aws --version
此方案无需每次冷启动重复下载,性能更优。
内容的提问来源于stack exchange,提问作者mgg
相关产品推荐
相关产品推荐

