Fehlerbehebung

API not enabled or service account deleted Fehler

Beim Aufruf der Cloud Life Sciences API kann es zu einem oder beiden der folgenden Fehler kommen:

  • API not enabled or service account deleted
  • checking service account permission: Account deleted: PROJECT_ID

Führen Sie folgende Schritte der Reihe nach aus, um diese Probleme zu beheben:

  1. Prüfen Sie, ob die Cloud Life Sciences API und die Compute Engine API aktiviert sind.
  2. Prüfen Sie, ob das Dienstkonto für den Cloud Life Sciences-Dienst-Agent ordnungsgemäß konfiguriert ist.
  3. Prüfen Sie, ob das Compute Engine-Standarddienstkonto ordnungsgemäß konfiguriert ist.

Cloud Life Sciences API und Compute Engine API aktivieren

Prüfen Sie, ob die Cloud Life Sciences API und die Compute Engine API in Ihrem Google Cloud-Projekt aktiviert sind:

  1. Aktivieren Sie die Cloud Life Sciences API:

    Cloud Life Sciences API aktivieren

  2. Aktivieren Sie die Compute Engine API:

    Compute Engine API aktivieren

Wenn ein Fehler auftritt, der besagt, dass Sie nicht die Berechtigung haben, Google Cloud APIs für Ihr Projekt zu aktivieren, lesen Sie APIs aktivieren und deaktivieren.

Cloud Life Sciences-Dienstkonto oder Rolle des Cloud Life Sciences-Dienst-Agents fehlt

Das Dienstkonto Cloud Life Sciences-Dienst-Agent wird automatisch erstellt, wenn Sie eine Pipeline zum ersten Mal in einem Google Cloud-Projekt ausführen. Sie können die Pipeline mit der Google Cloud CLI oder den REST API und RPC API ausführen. Der Cloud Life Sciences-Dienst-Agent ist ein von Google verwaltetes Dienstkonto. Sie können das Dienstkonto nicht löschen. Es wird aber möglicherweise nicht auf der Seite Identitäts- und Zugriffsverwaltung angezeigt. Dies kann zu Fehlern bei der Cloud Life Sciences API führen.

Damit die Cloud Life Sciences API funktioniert und Aufgaben wie das Ausführen von Pipelines auf Compute Engine-VMs erfüllt, muss das Dienstkonto Cloud Life Sciences-Dienst-Agent vorhanden sein. Außerdem muss sie die IAM-Rolle Life Sciences-Dienst-Agent haben.

Wenn eines der folgenden Probleme auftritt, erstellen Sie das Dienstkonto Cloud Life Sciences-Dienst-Agent neu oder weisen Sie ihm die IAM-Rolle Life Sciences-Dienst-Agent zu:

  • Sie finden das Dienstkonto Cloud Life Sciences-Dienst-Agent nicht auf der Seite Identitäts- und Zugriffsverwaltung.
  • Sie finden das Dienstkonto Cloud Life Sciences-Dienst-Agent, es enthält jedoch nicht die Rolle Life Sciences-Dienst-Agent.

Verwenden Sie die Google Cloud CLI, um dem Dienstkonto Cloud Life Sciences-Dienst die Rolle lifesciences.serviceAgent mit der Kennung des Dienstkontos hinzuzufügen. Sie hat das Format service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.

Führen Sie den Befehl gcloud projects add-iam-policy-binding aus, um das Dienstkonto neu zu erstellen oder ihm die Cloud IAM-Rolle Life Sciences-Dienst-Agent zuzuweisen. Wie Sie die PROJECT_ID und PROJECT_NUMBER finden, erfahren Sie unter Projekte identifizieren.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.com \
    --role=roles/lifesciences.serviceAgent

Wenn die Anfrage erfolgreich ist, wird in der Eingabeaufforderung eine Meldung ähnlich der folgenden angezeigt:

Updated IAM policy for project [PROJECT_ID].
bindings:
...
- members:
  - serviceAccount:service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.com
  role: roles/lifesciences.serviceAgent
...
etag: VALUE
version: VALUE

Wechseln Sie zur Seite "Identitäts- und Zugriffsverwaltung" zurück und kontrollieren Sie Folgendes:

  • Die Spalte Mitglied enthält eine Dienstkontokennung im Format service-PROJECT_NUMBER@gcp-sa-lifesciences.iam.gserviceaccount.
  • Der Cloud Life Sciences-Dienst-Agent ist in der Spalte Name in derselben Zeile enthalten wie in der Spalte Mitglied.
  • Der Life Sciences-Dienst-Agent ist in der Spalte Rolle in derselben Zeile enthalten wie in der Spalte Mitglied.

Compute Engine-Standarddienstkonto fehlt

Neu erstellte Google Cloud-Projekte enthalten das Compute Engine-Standarddienstkonto, das mit der folgenden E-Mail-Adresse identifiziert werden kann:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

Das Dienstkonto muss in Ihrem Google Cloud-Projekt vorhanden sein. Andernfalls kann die Cloud Life Sciences API keine Pipelines auf Compute Engine-VMs ausführen. Wenn Sie das Dienstkonto aus Ihrem Projekt löschen, können möglicherweise keine Anwendungen ausgeführt werden, die von den Anmeldedaten des Dienstkontos abhängen. Wenn Sie das Compute Engine-Standarddienstkonto versehentlich löschen, können Sie es innerhalb von 30 Tagen wiederherstellen. Weitere Informationen finden Sie unter Dienstkonto wiederherstellen.

Keine Authentifizierung bei der Cloud Life Sciences API möglich

Wenn Sie eine Pipeline mit der Cloud Life Sciences API ausführen und dafür als Anmeldedaten statt gcloud auth application-default login ein Dienstkonto verwenden, muss das Dienstkonto die folgenden Rollen haben:

  • roles/lifesciences.workflowsRunner
  • roles/iam.serviceAccountUser

Führen Sie die folgenden Schritte über die Google Cloud Console oder die Google Cloud CLI aus, um diese Rollen Ihrem Dienstkonto hinzuzufügen:

Console

  1. Prüfen Sie, ob die Cloud Life Sciences API aktiviert ist.
  2. Suchen Sie in der Google Cloud Console auf der IAM-Seite nach Ihrem Dienstkonto.
  3. Klicken Sie in der dem Dienstkonto entsprechenden Spalte Übernahme auf das Bleistiftsymbol. Der Bereich Berechtigungen bearbeiten wird geöffnet.
  4. Klicken Sie auf Weitere Rolle hinzufügen und suchen Sie nach den Rollen Life Sciences-Workflows-Runner und Dienstkontonutzer.
  5. Wählen Sie die Rolle aus und klicken Sie auf Speichern. Die Rollen lifesciences.workflowsRunner und iam.serviceAccountUser werden dem Dienstkonto hinzugefügt.

gcloud

Führen Sie den Befehl gcloud projects add-iam-policy-binding aus, um die Dienstkontoberechtigungen hinzuzufügen. Wie Sie die PROJECT_ID und PROJECT_NUMBER finden, erfahren Sie unter Projekte identifizieren.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@SERVICE_ACCOUNT_ID.iam.gserviceaccount.com \
    --role=roles/lifesciences.workflowsRunner
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@SERVICE_ACCOUNT_ID.iam.gserviceaccount.com \
    --role=roles/iam.serviceAccountUser

Keine Authentifizierung mit Standardanmeldedaten für Anwendungen möglich

Beim Aufruf der Cloud Life Sciences API kann es zu einer Fehlermeldung kommen, die besagt, dass Ihre Standardanmeldedaten für Anwendungen nicht verfügbar sind.

Informationen dazu, wie Sie Standardanmeldedaten für Anwendungen konfigurieren oder Anmeldedaten zur Authentifizierung manuell an Anwendungen oder Befehle übergeben, finden Sie unter Authentifizierung für Server-zu-Server-Anwendungen einrichten.

Fehlercodes

Die Cloud Life Sciences API kann die folgenden Fehlercodes zurückgeben:

RESOURCE EXHAUSTED (8)

Code: 8

Status: RESOURCE_EXHAUSTED

Kategorie: Nutzerfehler

Beschreibung: Eine Ressource ist aufgebraucht. Dies kann darauf hinweisen, dass Ihre Anwendung ein Admin API-Kontingent auf Projektebene ausgeschöpft hat.

Empfohlene Maßnahme: Wiederholen Sie den Vorgang.

FAILED_PRECONDITION (9)

Code: 9

Status: FAILED_PRECONDITION

Kategorie: Nutzerfehler

Vollständiger Fehler: Execution failed: while running "[USER_COMMAND_LINE]": unexpected exit status [NUMBER] was not ignored

Beschreibung: Der Vorgang wurde abgelehnt, weil eine Nutzeraktion einen Exit-Status ungleich null zurückgegeben hat. Es wird ein Ausschnitt der Standardfehlerausgabe der Aktion angezeigt, mit dessen Hilfe Sie das Problem diagnostizieren können. Um die vollständigen Logs von der virtuellen Maschine der Compute Engine (VM) hochzuladen, verwenden Sie bei einer Pipelineanfrage die Aktion ALWAYS_RUN, in etwa wie im folgenden Beispiel:

{
  "commands": [
    "-c",
    "gsutil -q cp /google/logs/output gs://CLOUD_STORAGE_BUCKET/output"
  ],
  "entrypoint": "bash",
  "flags": [ "ALWAYS_RUN" ],
  "imageUri": "gcr.io/cloud-genomics-pipelines/io"
}

Empfohlene Maßnahme: Wiederholen Sie den Vorgang erst, wenn das Problem behoben ist.

ABORTED (10)

Code: 10

Status: ABORTED

Kategorie: Systemfehler

Vollständiger Fehler: The assigned worker has failed to complete the operation

Beschreibung: Der Vorgang wurde abgebrochen, weil ein Fehler in der Compute Engine-VM vorliegt, auf der die Pipeline ausgeführt wurde. Dies liegt möglicherweise daran, dass sie vorzeitig beendet wurde und den Status nicht mehr melden konnte.

Empfohlene Maßnahme: Wiederholen Sie den Vorgang. Tritt der Fehler immer wieder auf, kann ein Problem vorliegen, das zum Ausfall der Compute Engine-VM führt. Möglicherweise werden zu viele Ressourcen verwendet. Compute Engine-Logs in Cloud Logging prüfen

13

Code: 13

Vollständiger Fehler: Execution failed: generic::internal: action INDEX: waiting for container: container is still running, possibly due to low system resources

Beschreibung: Der Container für die Aktion ist möglicherweise aufgebraucht.

Empfohlene Aktion: Wiederholen Sie die Pipeline mit einem größeren Maschinentyp.

UNAVAILABLE (14)

Code: 14

Status: UNAVAILABLE

Kategorie: Systemfehler

Vollständiger Fehler: Execution failed: worker was terminated

Beschreibung: Die Compute Engine-VM, auf der die Pipeline ausgeführt wird, wurde vorzeitig beendet.

Empfohlene Maßnahme: Wiederholen Sie den Vorgang.

Neuer Versuch nach Fehlern

Pipelines können fehlschlagen und einen Fehlercode zurückgeben. Häufig sind dafür Probleme verantwortlich, die nichts mit der Arbeit der Pipeline zu tun haben. In den meisten Fällen sollten Sie den Pipelinevorgang wiederholen. Pipelines sind anfällig für Fehler, wenn Sie VMs auf Abruf verwenden, die günstiger sind, aber mit höherer Wahrscheinlichkeit Unterbrechungen verursachen. Die Cloud Life Sciences API kann Pipelinevorgänge nicht automatisch wiederholen, da nicht alle Pipelines idempotent sind.

Wie im Abschnitt Fehlercodes gezeigt, sind Neuversuche zu empfehlen, wenn einer der folgenden Fehlercodes auftritt:

  • RESOURCE EXHAUSTED (8)
  • ABORTED (10)
  • UNAVAILABLE (14)

Cloud Monitoring aktivieren

Sie können Cloud Monitoring in Ihren Pipelines aktivieren, um Zustand und Ressourcennutzung der Worker-VMs zu überwachen, die zum Ausführen der Pipeline verwendet werden. Die Aktivierung von Monitoring kann jedoch zusätzliche Kosten verursachen. Zur Aktivierung von Monitoring geben Sie bei Ausführung der Pipelineanfrage das Flag enableStackdriverMonitoring für das Objekt VirtualMachine an.

Speicherplatz der Pipeline reicht nicht

Wenn der Speicherplatz der Pipeline nicht mehr ausreicht, um Docker-Images abzurufen, oder mehr Speicherplatz benötigt wird, um die Aufgaben zu protokollieren oder auszuführen, können Sie einen der folgenden Schritte ausführen:

  • Vergrößern Sie das Bootlaufwerk. Dafür verwenden Sie beim Erstellen der Pipelineanfrage das Flag bootDiskSizeGb im Objekt VirtualMachine.
  • Hängen Sie beim Erstellen der Pipelineanfrage ein separates Laufwerk an und fügen Sie es dem Objekt Mount innerhalb des Objekts Action hinzu.

Kontingentverzögerungen

Wenn Ihr Compute Engine-Kontingent für Ihr Google Cloud-Projekt erschöpft ist, weist die Cloud Life Sciences API keine VMs zu. Alle weiteren Zuweisungsversuche werden verzögert, damit die Ausführung der vorhandenen Pipelines beendet werden kann. Tritt diese Verzögerung immer wieder auf, können Sie eine Kontingenterhöhung beantragen.

Pipelines werden beendet

Wenn Ihre Pipelines anhalten und wiederholt VMs zuweisen und freigeben, weil die VMs nicht mit dem Cloud Life Sciences API-Dienst kommunizieren können, könnte die Ursache in den folgenden Problemen liegen, die gemeinsam auftreten:

  • Das Netzwerk default der VMs wurde möglicherweise gelöscht.
  • Im Objekt Network wurde kein anderes Netzwerk angegeben.

Führen Sie einen der folgenden Schritte aus, um das Problem zu lösen:

  • Geben Sie im Objekt Network ein Netzwerk an.
  • Erstellen Sie das Standardnetzwerk default neu. Halten Sie sich dabei an die Schritte unter Netzwerk im automatischen Modus erstellen und nennen Sie das neue Netzwerk default.

VMs abbrechen oder löschen

Anstatt nicht benötigte Worker-VMs zu löschen, empfiehlt es sich, die zugehörigen Vorgänge abzubrechen. Wenn Sie die VM löschen, kann die Pipeline nach und nach nicht mehr ausgeführt werden. Bei ihrem Neustart wird ihr möglicherweise eine neue VM zugewiesen.