在AWS Lambda的bash引导程序中,可以同时捕获stdout和stderr。下面是一个示例解决方案:
#!/bin/bash
# 执行命令,并将stdout和stderr重定向到临时文件
output=$(command 2>&1)
# 检查命令执行结果
if [ $? -eq 0 ]; then
# 命令执行成功,将stdout输出到日志
echo "$output" >> /tmp/log.txt
else
# 命令执行失败,将stdout和stderr输出到日志
echo "$output" >&2 >> /tmp/log.txt
fi
# 将日志上传到S3
aws s3 cp /tmp/log.txt s3://bucket-name/path/to/log.txt
在上面的示例中,我们使用command
来代替实际的命令,并将stdout和stderr重定向到临时文件/tmp/log.txt
。然后,我们检查命令的退出状态码,如果为0表示命令执行成功,将stdout输出到日志文件中;否则,将stdout和stderr输出到日志文件中。最后,我们使用AWS CLI将日志文件上传到S3存储桶。
请注意,上述示例中的command
是一个占位符,你需要将其替换为实际的命令。另外,你需要将bucket-name
替换为你的S3存储桶名称,以及path/to/log.txt
替换为你希望保存日志的路径。