2017-06-15 45 views
0

我的Lambda函數通過boto3的create_instances模塊創建EC2服務器。爲什麼Lambda突然拋出「Request has expired」錯誤?

自從早上我就一直在觸發這個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." 
} 

發生了什麼事?很確定這不是代碼錯誤,因爲自早晨起就運行相同的代碼。

+1

嘗試手動發射相同數量的情況下,相同尺寸和區域,並看看會發生什麼。看看極限,也許你已經達到了極限,或者如果你的Lambda運行在VPC上,它可能是VPC網絡堆棧的一部分。 – Raf

+1

谷歌後,我發現這種類型的錯誤是在一些情況下:1)請求到達服務超過15分鐘後請求的日期戳或超過15分鐘後請求到期日期(如爲pre簽名的URL),或者請求中的日期標記將來超過15分鐘。 2)如果您使用的是臨時安全證書,則如果憑證已過期,也會發生此錯誤。 – Anup

+0

@Raf Ran從Lambda外面的確切代碼。它創建了一個實例。但是,Lambda仍然拋出這個錯誤。 – Dawny33

回答

0

問題是可能是 Anup在this comment中談到的15分鐘延遲。

我通過重新上傳部署包並重新測試它來解決它。有效!不過很奇怪。

[會更樂意接受一個答案可以解釋背後的λ/ AWS的這種怪異的行爲的原因]