Я пытаюсь повторно развернуть ранее работающую облачную функцию Python с помощью встроенного редактора. Без изменений в исходном файле или файле require.txt развертывание завершается сбоем со следующим сообщением об ошибке:
Deployment failure:
Function failed on loading user code. Error message: Error: cannot communicate with function.
Журналы функций содержат следующую информацию:
{
insertId: "-xueafgcygm"
logName: "projects/xxx/logs/cloudaudit.googleapis.com%2Factivity"
operation: {
id: "operations/YXBvdGV4MzYwL3VzLWNlbnRyYWwxL2RvTG9hZEFwb3RleDM2MFByb2R1Y3QvSHhiWWlvVHVmdkE"
last: true
producer: "cloudfunctions.googleapis.com"
}
protoPayload: {
@type: "type.googleapis.com/google.cloud.audit.AuditLog"
authenticationInfo: {
principalEmail: "xxx@gmail.com"
}
methodName: "google.cloud.functions.v1.CloudFunctionsService.UpdateFunction"
requestMetadata: {
destinationAttributes: {
}
requestAttributes: {
}
}
resourceName: "projects/xxx/locations/us-central1/functions/doLoadProduct"
serviceName: "cloudfunctions.googleapis.com"
status: {
code: 3
message: "INVALID_ARGUMENT"
}
}
receiveTimestamp: "2019-11-04T16:17:00.108301794Z"
resource: {
labels: {
function_name: "doLoadProduct"
project_id: "xxx"
region: "us-central1"
}
type: "cloud_function"
}
severity: "ERROR"
timestamp: "2019-11-04T16:16:59.612Z"
}
Это начало происходитьв прошлую пятницу и продолжается сегодня. Я также пробовал локальное развертывание, используя функции gcloud deploy, где я получаю похожее сообщение об ошибке:
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Function failed on loading user code. Error message: Error: cannot communicate with function.
Я был бы признателен за некоторые указания по дальнейшим шагам для решения этой проблемы.
--- Обновление ---
С предложениями Дастина предоставить файл с исходным кодом и требованиями, я работал над тем, чтобы выяснить, смогу ли я воссоздать проблему с минимальным количеством кода, насколько это возможно.
main.py
import base64
import mysql.connector as db
from google.cloud import storage
def hello_pubsub(event, context):
pubsub_message = base64.b64decode(event['data']).decode('utf-8')
print(pubsub_message)
needs.txt
google-cloud-storage==1.21.0
mysql-connector-python==8.0.18
Оказывается, версии google-cloud-storage несовместимы. Измените на mysql-connector-phthon <8.0.18, и функция развернется нормально. </p>
Таким образом, проблема решена.