我的Lambda函数通过boto3的create_instances
模块创建EC2服务器。
我从早上就开始触发这个Lambda,它创造了很好的实例。但突然间,我不断收到这个奇怪的错误:
{
"stackTrace": [
[
"/var/task/processing.py",
54,
"lambda_handler",
"KeyName=keyname, SubnetId='subnet-<>', SecurityGroupIds=['sg-<>'])"
],
[
"/var/runtime/boto3/resources/factory.py",
520,
"do_action",
"response = action(self, *args, **kwargs)"
],
[
"/var/runtime/boto3/resources/action.py",
83,
"__call__",
"response = getattr(parent.meta.client, operation_name)(**params)"
],
[
"/var/task/botocore/client.py",
251,
"_api_call",
"return self._make_api_call(operation_name, kwargs)"
],
[
"/var/task/botocore/client.py",
537,
"_make_api_call",
"raise ClientError(parsed_response, operation_name)"
]
],
"errorType": "ClientError",
"errorMessage": "An error occurred (RequestExpired) when calling the RunInstances operation: Request has expired."
}
发生了什么事?非常确定这不是代码错误,因为从早上开始运行相同的代码。
答案 0 :(得分:1)
在我的情况下,这是因为我的aws_session_token
过期了,我不得不替换所有凭据详细信息:
aws_access_key_id
aws_secret_access_key
aws_session_token
替换所有细节后,错误不存在。
答案 1 :(得分:0)
问题是可能 Anup在this comment中谈到的15分钟延迟。
我通过重新上传部署包并重新测试它来解决它。有效!虽然相当奇怪的黑客。
[非常乐意接受一个可以解释Lambda / AWS这种奇怪行为背后原因的答案]
答案 2 :(得分:0)
当您的用于连接到AWS的凭据不存在或已过期时,会发生此错误。 请尝试更新您的凭据/密钥;不管您使用哪种方式授权连接到AWS,然后都应删除此错误。
这对我有用:
我更新了~/.aws/credentials
文件,它发挥了神奇的作用。