2017-04-13 3 views
1

Alors, je travaille sur l'obtention d'un serveur Bamboo CI et en cours d'exécution dans une instance EC2 dans AWS. Tout s'est bien passé; cependant, j'ai couru à un sacré problème. La partie de CI fonctionne très bien, mais il semble que l'artefact développé en exécutant « dotnet lambda publier » sur mon serveur Bamboo basé sur Ubuntu est la création d'un package incompatible par rapport à l'exécution de « publier dotnet lambda » sur ma machine Windows. Quand je Déployez le package généré par mon serveur Bamboo, je reçois simplement l'erreur suivante:Différents packages d'exécution « package dotnet lambda » sur l'environnement Windows versus un environnement Ubuntu

{ 
    "errorType": "LambdaException", 
    "errorMessage": "Unable to load assembly '<project-name>, Culture=neutral, PublicKeyToken=null'." 
} 

Je l'ai regardé dans le contenu du paquet et bien qu'il n'y a pas de différences visibles dans les fichiers; il y a une différence dans la taille du fichier. Le paquet généré sur Ubuntu est d'environ 14,8 Mo, alors que le paquet généré sur Windows est d'environ 15,4 Mo.

Quelqu'un peut-il peut expliquer la différence entre ces processus de package? Pourquoi devrais-je obtenir un paquet plus petit lors de la compilation avec Ubuntu? Pourquoi mon package Windows fonctionne-t-il alors que le paquet Ubuntu se plaint d'un fichier introuvable?

je l'avais supposé que la commande « paquet dotnet lambda » serait outil spécifiquement la construction du contexte Lambda quel que soit l'environnement du système d'exploitation. Créer des builds différents et apparemment incompatibles dans différents environnements avec la même commande CLI semble étrange.


Edit: Après enquête, je crois qu'il a quelque chose à voir avec le processus Zipping qui est utilisé sur le serveur Bamboo CI via l'exécution du cli « paquet dotnet lambda ». Lorsque je l'apporte localement sur mon ordinateur Windows et que j'essaie de télécharger à nouveau le paquet, il échoue. Après un peu plus de recherche, je trouve que si je décompresse le paquet sous Windows, puis re-zip via un clic droit et va envoyer à -> dossier compressé (zip), puis le télécharger à nouveau, le contenu exact même fichier va commencer travail. Peut-être que c'est un problème avec l'exécution de zip pendant la méthode "dotnet lambda package"?

Répondre

1

Après la réalisation de mon édition, j'ai décidé d'entrer en contact avec les gars plus sur Amazon qui ont aidé à créer le package de Amazon.Lambda.Tools. Il se trouve que si vous n'avez pas installé "zip" sur votre machine Linux, cela supposera automatiquement que vous utilisez un ordinateur Windows et il choisira l'exécutable incorrect pour compresser le paquet final créé avec "dotnet lambda package" . Lorsqu'il utilise l'exécutable incorrect, les commandes chmod appliquées ne sont pas transférées.

fix simple, exécutez: apt install zip

Cela garantira que votre boîte Ubuntu utilise l'exécutable zip correct et le fichier zip résultant peut être téléchargé sur Lambda sans problème.

https://github.com/aws/aws-lambda-dotnet/issues/100

+0

Sérieusement, ce besoin d'être quelque part dans le document AWS ~ – user3682091

+0

droit si !? Heureux mes heures de douleur ont aidé à sauver quelqu'un d'autre un certain temps! –