Bitbucket Pipeline运行SQS消息发送脚本提示aws命令未找到如何解决
错误原因
报错./scripts/sendsqsreq.sh: line 14: aws: command not found的核心原因是你Bitbucket Pipeline执行该脚本的容器环境中,没有预安装AWS CLI工具,这是调用AWS SQS接口的必需依赖。
解决方案
你可以根据你的Pipeline场景选以下任意一种方案处理:
方案1:使用自带AWS CLI的运行镜像
如果你的发送SQS步骤不需要额外依赖,直接在bitbucket-pipelines.yml对应的step中指定官方AWS CLI镜像即可:steps: - step: name: 发送SQS消息 image: amazon/aws-cli:latest script: - ./scripts/sendsqsreq.sh方案2:在现有镜像中手动安装AWS CLI
如果你的step还要同时处理构建等其他任务,需要保留原有的运行镜像,就在执行脚本前添加安装AWS CLI的命令:- 若使用Debian/Ubuntu系镜像:
apt-get update && apt-get install -y awscli- 若使用Alpine系镜像:
apk add --no-cache aws-cli- 若需要安装最新AWS CLI v2版本,使用官方安装脚本:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip ./aws/install
注意事项
- 安装AWS CLI的命令必须和执行
sendsqsreq.sh的命令放在同一个Pipeline step中,Bitbucket Pipeline每个step都会启动全新的容器,跨step的安装操作不会生效。 - 提前在Bitbucket项目的变量配置中添加有权限调用SQS的
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY变量,AWS CLI会自动读取这两个变量完成认证,不需要写入脚本。 - 你当前脚本中
message-body的bitbukcet为拼写错误,建议修正为bitbucket,避免消息内容异常。
内容的提问来源于stack exchange,提问作者MaxxABillion
相关产品推荐
相关产品推荐

