Aws-lambda-dotnet: Erreur : le compartiment S3 doit se trouver dans la même région que la région configurée us-west-2. est dans la région us-east-1.

Créé le 17 janv. 2018  ·  7Commentaires  ·  Source: aws/aws-lambda-dotnet

  • J'ai créé un nouveau projet à l'aide de dotnet new , avec le modèle AWS Serverless WebAPI (ASP.NET Core 2.0). Cela inclut des exemples de code ValuesController et S3ProxyController.
  • Ma région principale est us-west-2, j'ai donc effectué une recherche-remplacer pour modifier la région dans tous les fichiers .appsettings .
  • J'ai également exécuté aws configure pour définir l'ID de clé, la clé d'accès et la région de mon profil par défaut sur aws-west-2.

Après tout cela, j'exécute dotnet lambda deploy-serverless et j'essaie d'utiliser us-east-1 . Est-ce un problème avec le modèle ou l'AWS CLI ?

Error: S3 bucket must be in the same region as the configured region us-west-2. is in the region us-east-1.

Commentaire le plus utile

Il existe toujours un problème dans lequel le compartiment S3 contenant votre fichier zip avec votre package lambda doit se trouver dans la même région que celle sur laquelle votre fonction lambda est créée. C'est contre-intuitif et à mon avis, horrible. Si nous voulons tirer parti du même modèle dans plusieurs régions, nous devons dupliquer le contenu du package dans plusieurs compartiments. Ils pourraient au moins accepter une URL dans la propriété CodeUri afin que nous puissions utiliser un bucket public ou un github pour stocker le package .

Sérieusement, c'est affreux. À quoi servent les compartiments s3 globaux lorsque vous ne pouvez pas prendre en charge la mise à jour du code de la fonction lambda à partir d'un seul compartiment s3 au lieu de créer des compartiments en double dans chaque région.

Tous les 7 commentaires

J'ai téléchargé le serverless.template généré par le nouveau dotnet sur AWS et j'ai obtenu l'erreur suivante en essayant de créer une pile à partir de celui-ci :

Error creating change set: Transform AWS::Serverless-2016-10-31 failed with: Invalid Serverless Application Specification document. Number of errors found: 1. Resource with id [ProxyFunction] is invalid. 'CodeUri' is not a valid S3 Uri of the form "s3://bucket/key" with optional versionId query parameter.

Il semble que quelque chose ne va pas avec le modèle. Je n'ai pas beaucoup d'expérience avec CloudFormation, j'étudie toujours.

Aujourd'hui j'ai avancé un peu en comprenant enfin le message d'erreur :)

La ressource "ProxyFunction" dans le modèle de formation de nuage a CodeUri paramètre

Apparemment, CodeUri peut être relatif, un paramètre dynamique ou une URL statique mais jamais une chaîne vide.

https://github.com/awslabs/serverless-application-model/blob/master/HOWTO.md

Avez-vous une page où vous dites que CodeUri doit être remplacé par quelque chose ? La solution la moins chère serait de l'inclure en tant que paramètre, vous n'avez alors pas besoin de le documenter.

On dirait que tout a fonctionné, c'était déroutant car il y a deux compartiments S3 impliqués, le compartiment proxy et le compartiment où le code de la fonction lambda est téléchargé. Une fois que j'ai créé un compartiment pour le lambda et spécifié son nom, ainsi qu'un nom unique pour le compartiment proxy qui n'était pas utilisé, la transformation sans coupure dans la formation du cloud a fonctionné.

Il existe toujours un problème dans lequel le compartiment S3 contenant votre fichier zip avec votre package lambda doit se trouver dans la même région que celle sur laquelle votre fonction lambda est créée. C'est contre-intuitif et à mon avis, horrible. Si nous voulons tirer parti du même modèle dans plusieurs régions, nous devons dupliquer le contenu du package dans plusieurs compartiments. Ils pourraient au moins accepter une URL dans la propriété CodeUri afin que nous puissions utiliser un bucket public ou un github pour stocker le package .

Pour cela, vous devez donner votre avis à l' équipe CloudFormation . Il est au-delà de la portée de ce référentiel de changer le comportement de CloudFormation.

Il existe toujours un problème dans lequel le compartiment S3 contenant votre fichier zip avec votre package lambda doit se trouver dans la même région que celle sur laquelle votre fonction lambda est créée. C'est contre-intuitif et à mon avis, horrible. Si nous voulons tirer parti du même modèle dans plusieurs régions, nous devons dupliquer le contenu du package dans plusieurs compartiments. Ils pourraient au moins accepter une URL dans la propriété CodeUri afin que nous puissions utiliser un bucket public ou un github pour stocker le package .

Sérieusement, c'est affreux. À quoi servent les compartiments s3 globaux lorsque vous ne pouvez pas prendre en charge la mise à jour du code de la fonction lambda à partir d'un seul compartiment s3 au lieu de créer des compartiments en double dans chaque région.

Cette page vous a été utile?
0 / 5 - 0 notes