为什么Lambda突然抛出“请求已过期”错误?

时间:2017-06-15 08:45:14

标签: python amazon-web-services aws-lambda boto3

我的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."
}

发生了什么事?非常确定这不是代码错误,因为从早上开始运行相同的代码。

3 个答案:

答案 0 :(得分:1)

在我的情况下,这是因为我的aws_session_token过期了,我不得不替换所有凭据详细信息:

  1. aws_access_key_id
  2. aws_secret_access_key
  3. aws_session_token

替换所有细节后,错误不存在。

答案 1 :(得分:0)

问题是可能 Anup在this comment中谈到的15分钟延迟。

我通过重新上传部署包并重新测试它来解决它。有效!虽然相当奇怪的黑客。

[非常乐意接受一个可以解释Lambda / AWS这种奇怪行为背后原因的答案]

答案 2 :(得分:0)

当您的用于连接到AWS的凭据不存在或已过期时,会发生此错误。 请尝试更新您的凭据/密钥;不管您使用哪种方式授权连接到AWS,然后都应删除此错误。

这对我有用: 我更新了~/.aws/credentials文件,它发挥了神奇的作用。