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:
- Prüfen Sie, ob die Cloud Life Sciences API und die Compute Engine API aktiviert sind.
- Prüfen Sie, ob das Dienstkonto für den Cloud Life Sciences-Dienst-Agent ordnungsgemäß konfiguriert ist.
- 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:
Aktivieren Sie die Cloud Life Sciences API:
Aktivieren Sie die Compute Engine API:
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 der REST API und der RPC API ausführen. Sie können das Dienstkonto nicht löschen, Es wird auf der Seite Identity and Access Management möglicherweise nicht 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 Science-Dienst-Agent vorhanden sein. Außerdem muss es 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.
Google Cloud CLI verwenden
um die Rolle lifesciences.serviceAgent
dem
Dienstkonto Cloud Life Sciences-Dienst-Agent mit dem
die ID des Dienstkontos, die 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 aus, um Ihrem Dienstkonto diese Rollen hinzuzufügen: entweder über die Google Cloud Console oder die Google Cloud CLI:
Console
- Prüfen Sie, ob die Cloud Life Sciences API aktiviert ist.
- Auf der IAM-Seite suchen Sie in der Google Cloud Console nach Ihrem Dienstkonto.
- Klicken Sie in der dem Dienstkonto entsprechenden Spalte Übernahme auf das Bleistiftsymbol. Der Bereich Berechtigungen bearbeiten wird geöffnet.
- Klicken Sie auf Weitere Rolle hinzufügen und suchen Sie nach den Rollen Life Sciences-Workflows-Runner und Dienstkontonutzer.
- Wählen Sie die Rolle aus und klicken Sie auf Speichern. Die Rollen
lifesciences.workflowsRunner
undiam.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", "gcloud storage cp /google/logs/output gs://CLOUD_STORAGE_BUCKET/output" --quiet ], "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 ObjektVirtualMachine
. - Hängen Sie beim Erstellen der Pipelineanfrage ein separates Laufwerk an und fügen Sie es dem Objekt
Mount
innerhalb des ObjektsAction
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 Netzwerkdefault
.
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.