Amazon ec2 检索ec2资源清册时发生身份验证错误。已找到AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY环境变量,但可能不正确

Amazon ec2 检索ec2资源清册时发生身份验证错误。已找到AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY环境变量,但可能不正确,amazon-ec2,ubuntu-14.04,ansible,boto,ansible-playbook,Amazon Ec2,Ubuntu 14.04,Ansible,Boto,Ansible Playbook,我们正在使用Ansible和aws cli进行应用程序的部署、配置管理和编排。这是实现这些过程自动化的好方法。 不幸的是,有时(我不能确切指出时间,但这是在与ansible合作几天后发生的)我会收到以下信息: 检索ec2资源清册时发生身份验证错误。AWS\u访问\u密钥\u ID和 已找到AWS\u SECRET\u ACCESS\u密钥环境变量,但可能不正确 我使用Ubuntu14.04运行ansible,我不会更改任何与aws访问密钥或密钥相关的内容。我也试着和波托一起工作,但行动都是一样的

我们正在使用Ansible和aws cli进行应用程序的部署、配置管理和编排。这是实现这些过程自动化的好方法。
不幸的是,有时(我不能确切指出时间,但这是在与ansible合作几天后发生的)我会收到以下信息:

检索ec2资源清册时发生身份验证错误。AWS\u访问\u密钥\u ID和 已找到AWS\u SECRET\u ACCESS\u密钥环境变量,但可能不正确

我使用Ubuntu14.04运行ansible,我不会更改任何与aws访问密钥或密钥相关的内容。我也试着和波托一起工作,但行动都是一样的。 唯一有帮助的是重新启动我的机器。
你知道是什么导致了这个问题吗

谢谢,
Effi

似乎amazon身份验证机制使用客户端时间戳,请参见:

时间戳要求
有效的时间戳(使用HTTP日期头或x-amz-Date替代项)对于 已验证的请求。此外,还包括客户端时间戳 具有经过身份验证的请求必须在收到请求后15分钟内发出 S3收到请求时的系统时间

所以我用了():


为了更新我的日期和时间,它是固定的:)

我假设它以前运行过,现在不工作了。确保您的aws cli参数已全部设置,并且aws用户有权运行ansible脚本。只需在您的机器上运行date命令,看看您的时间是否正确。如果没有,请使用time server更新您的计算机时间,它将解决您的问题。

请分享您是如何设置凭据、环境变量的?还有更多细节。如果您使用的是awscli,我想您应该先检查与aws ec2 descripe instances的连接?尝试在aws cli中设置凭据更稳定,因为命令-->aws Configurantanks Raul,但是
aws configure
没有帮助:(我将AWS_SECRET_ACCESS_KEY和AWS_SECRET_ACCESS_KEY设置为env.variables
export AWS_ACCESS_KEY\ID=XXX export AWS_SECRET_ACCESS_KEY=XXX
我花了7个小时试图解决这个问题,直到我发现这个问题。我的计算机的日期不对……谢谢
sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"