Dépannage

La section ci-après répertorie certains des problèmes courants qui peuvent survenir lors des interactions avec l'API Cloud Asset, ainsi que leurs solutions respectives.

Les identifiants d'authentification de la requête ne sont pas valides

Si vous n'avez pas configuré correctement l'en-tête OAuth, les appels génèrent l'erreur suivante :

{
  "error": {
    "code": 401,
    "message": "Request had invalid authentication credentials. Expected
               OAuth 2 access token, login cookie or other valid
               authentication credential. See
               https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.DebugInfo",
        "detail": "Authentication error: 2"
      }
    ]
  }
}

Pour résoudre ce problème, appliquez la procédure permettant de vérifier la configuration initiale.

L'appelant n'a pas l'autorisation requise

Une erreur est renvoyée si vous n'êtes pas autorisé à exporter des éléments ou à obtenir l'historique d'une organisation, d'un projet ou d'un dossier.

Par exemple, si vous exécutez la commande suivante sans posséder l'autorisation requise :

gcurl -d '{"outputConfig":{"gcsDestination": \
{"uri":gs://YOUR_BUCKET/NEW_FILE}}}' \
https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER:exportAssets

L'erreur suivante est renvoyée :

{
 "error": {
  "code": 403,
  "message": "The caller does not have permission",
  "status": "PERMISSION_DENIED",
  "details": [
   {
    "@type": "type.googleapis.com/google.rpc.DebugInfo",
    "detail": "[ORIGINAL ERROR] generic::permission_denied: Request
    denied by Cloud IAM."
   }
  ]
 }
}

Pour résoudre ce problème, demandez l'accès à l'administrateur du projet, du dossier ou de l'organisation. En fonction des éléments que vous tentez d'exporter ou dont vous souhaitez obtenir l'historique, vous aurez besoin de l'une des autorisations suivantes :

  • cloudasset.viewer
  • project.owner

Pour plus d'informations sur les rôles et les autorisations, consultez la page Comprendre les rôles.

Échec d'écriture dans le fichier Cloud Storage

Si le bucket Cloud Storage que vous utilisez pour stocker les données exportées ne fait pas partie du projet compatible avec l'API Cloud Asset depuis lequel vous exécutez l'exportation, l'exécution de la requête entraîne l'erreur de refus d'autorisation suivante :

    {
     "error": {
      "code": 7,
      "message": "Failed to write to: YOUR_BUCKET/FILE",
     }
    }
    

Pour résoudre ce problème, utilisez un bucket Cloud Storage appartenant au projet compatible avec l'API Cloud Asset depuis lequel vous effectuez l'exportation, ou accordez le rôle roles/storage.admin au compte de service service-PROJECT_NUMBER@gcp-sa-cloudasset.iam.gservice account.com. PROJECT_NUMBER correspond au numéro du projet compatible avec l'API Cloud Asset depuis lequel vous effectuez l'exportation.

Le résultat de l'API Cloud Asset est obsolète

La fraîcheur des données dans l'API Cloud Asset répond à un objectif d'optimisation. Presque toutes les mises à jour d'éléments sont disponibles au niveau des clients en quelques minutes. Il est toutefois possible, dans de rares cas, que le résultat des méthodes ExportAssets ou BatchGetAssetsHistory n'inclue pas les mises à jour les plus récentes.

Pour récupérer les mises à jour d'éléments les plus récentes, ajustez l'horodatage dans les appels de l'API Cloud Asset pour qu'il soit égal à deux minutes de plus que l'horodatage actuel.

Fichiers temporaires de sortie ExportAssets

L'opération ExportAssets peut créer des fichiers temporaires dans le dossier de sortie. Ne supprimez pas ces fichiers temporaires lorsque l'opération est en cours. Une fois l'opération terminée, les fichiers temporaires sont automatiquement supprimés.

Si les fichiers temporaires subsistent, vous pouvez les supprimer en toute sécurité une fois l'opération ExportAssets terminée.

URL de requête trop longue pour BatchGetAssetsHistory

La méthode BatchGetAssetsHistory est une action HTTP GET qui envoie toutes les données de la requête dans une URL dont la longueur est limitée. En conséquence, une erreur est générée si la requête est trop longue.

Pour éviter ce problème, le code client doit utiliser HTTP POST pour envoyer une requête avec le type de Content-Type défini sur application/x-www-form-urlencoded avec un en-tête X-HTTP-Method-Override: GET HTTP. Pour en savoir plus, consultez la section URL de requêtes longues.

Voici un exemple de requête pour BatchGetAssetsHistory utilisant HTTP POST :

curl -X POST -H "X-HTTP-Method-Override: GET" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -H "Authorization: Bearer " \
     -d 'assetNames=&contentType=1&readTimeWindow.startTime=2018-09-01T09:00:00Z' \
     https://cloudasset.googleapis.com/v1/projects/:batchGetAssetsHistory
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation relative à Resource Manager