Dépannage des erreurs relatives aux couches sans serveur non autorisées
Ce guide vous aide à corriger l’erreur de déploiement not authorized to perform: lambda:GetLayerVersion on resource
. Cette erreur concerne généralement les couches de la bibliothèque Lambda Datadog ou la couche de l’extension Datadog.
Paramètre de région
Les fonctions Lamda peuvent uniquement inclure des couches Lambda situées dans la même région que la fonction. Cette erreur se manifeste habituellement lorsque des utilisateurs copient les paramètres d’instrumentation d’autres applications déployées dans différentes régions.
Vérifiez que la région de la couche lambda et que la version de la fonction Lambda correspondent. Assurez-vous également que le numéro de version est correct.
Pour vérifier qu’une version de couche Lambda existe, exécutez aws lambda get-layer-version
en spécifiant des identifiants AWS valides.
Par exemple, pour vérifier la couche d’extension Datadog et la couche de la bibliothèque Node.js Datadog, exécutez ce qui suit :
aws lambda get-layer-version \
--layer-name arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Node20-x \
--version-number 116
aws lambda get-layer-version \
--layer-name arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Extension \
--version-number 66
Autorisations
Il arrive que les utilisateurs DENY
explicitement et malencontreusement l’autorisation permettant à leurs fonctions d’exécuter lambda:GetLayerVersion
. Certaines configurations de stratégies basées sur des ressources peuvent donner lieu à un DENY
explicite. Les limites d’autorisations IAM peuvent également engendrer un DENY
explicite pour lambda:GetLayerVersion
.
Pour vérifier si l’autorisation est bien accordée, utilisez un utilisateur IAM lié à la stratégie IAM utilisée par votre fonction Lambda, puis testez la commande get-layer-version
indiquée ci-dessus. La commande ne doit renvoyer aucune erreur.
Si vous souhaitez faire appel à l’équipe d’assistance Datadog pour poursuivre votre dépannage, fournissez les éléments suivants dans votre ticket :
- Les couches Lambda configurées de votre fonction (nom et version, ou ARN)
- Les fichiers de configuration du projet, en prenant soin de censurer les secrets codés en durs :
serverless.yaml
, package.json
, package-lock.json
, yarn.lock
, tsconfig.json
et webpack.config.json
. - Les stratégies IAM du projet et les informations relatives aux rôles.