Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

Il est impossible de déployer la même lambda dans plusieurs régions du panier. s3

Nous déployons Lambda à l'aide de modèles SAM CloudFormation.

Nous aimerions emballer la Lambda au panier S3, Puis déployer AWS :: Serverless :: Function Dans plusieurs régions.

Cependant, le code Lambda doit être dans la même région où il est déployé.

AWS Documenté comment se déplacer sur ce problème, en fait, créer une autre forme Lambda.

CopyZips

Pour copier le fichier zip vers chaque région où vous souhaitez le déployer et un nouveau panier s3

LambdaZipsBucket

Dans chaque région pour l'insérer. Ensuite, votre fonction Lambda ressemblera à ceci:

MyFunction:
DependsOn: CopyZips
Type: AWS::Lambda::Function
Properties:
Code:
S3Bucket: !Ref 'LambdaZipsBucket'
S3Key: !Sub '${QSS3KeyPrefix}functions/packages/MyFunction/lambda.zip'

Le problème est que cela dépend de la connaissance de la voie exacte vers le fichier zip. Dans notre cas, nous utilisons la substitution du modèle SAM, donc nous ne spécifions jamais le segment S3 ou clé S3 - Au lieu de cela, notre fonction ressemble à ceci:

  MyFunction:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: ./MyCompany.Service.Broker.Public

Segment S3 non mentionné dans le modèle du tout CloudFormation. Et la Lambda, que vous pouvez voir en parcourant le seau, a un tel nom:


ApiFunction-CodeUri-2342873t823t482346-97346583746583745.zip

En effet, de nombreuses archives zip similaires créées lors de l'assemblée. Modèle de modèle sans goutte décode ceci, et si nous regardons dans la console CloudFormation Dans l'onglet Modèle et sélectionnez "Afficher le modèle traité", nous verrons que les champs S3Bucket et S3Key Rempli correctement.

L'assemblage est effectué par B. Azure DevOps utilisant

AmazonWebServices.aws-vsts-tools.LambdaNETCoreDeploy.LambdaNETCoreDeploy@1

La tâche où nous spécifions le nom du segment et de la région, mais à nouveau, pas le nom du fichier zip.

Considérant que je n'ai pas accès dans le modèle à la voie exacte du fichier zip de la Lambda, comment dois-je automatiser la copie du fichier ZIP dans le panier local?

Rafraîchir:

J'ai essayé d'ajouter la ligne suivante dans les propriétés immédiatement avant CodeUri:

      Code:
S3Bucket: !Ref 'LambdaZipsBucket'

Cependant, lorsqu'il est déployé, j'ai reçu l'erreur suivante:

Resource with id [ApiFunction] is invalid. property Code not defined for resource of type AWS::Serverless::Function 
Invité:

Emilie

Confirmation de:

Vous pouvez essayer d'utiliser des politiques avec AWS :: Serverless :: Function et fournir des autorisations appropriées. Quel type de format est autorisé.

Policies:
- AWSLambdaExecute
- Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- s3:GetObject
- s3:GetObjectACL
Resource: 'arn:aws:s3:::LambdaZipsBucket/*'

Pour répondre aux questions, connectez-vous ou registre