web-dev-qa-db-fra.com

Différence entre le modèle SAM et le modèle Cloudformation

J'ai du mal à comprendre la différence entre le modèle SAM et le modèle Cloudformation. Je sais que le modèle SAM peut être utilisé pour définir des applications sans serveur comme Lambda, mais en quoi cela diffère-t-il du modèle Cloudformation? La syntaxe est-elle différente? Je peux toujours spécifier les définitions Lambda dans le modèle de cloudformation. Donc, ma question est pourquoi devrais-je me soucier de SAM? Ne savez-vous pas que le modèle de formation des nuages ​​suffit?

18
Schleir

Du point de vue de CloudFormation, SAM est une transformation. Signification: les modèles SAM sont syntaxiquement équivalents, mais ils vous permettent de définir votre application sans serveur avec plus de brièveté. Le modèle SAM est finalement développé en CFN complet dans les coulisses. Si vous connaissez déjà CFN, mais que vous souhaitez écrire moins de code YAML, SAM peut vous être bénéfique. L'idée est de réduire vos efforts.

17
Luis Colon

Comme l'a dit @Luis Colon, SAM est une transformation. Cela signifie que, en haut d'un modèle SAM, il existe une instruction Transform qui permet à CloudFormation de savoir exécuter une fonction intrinsèque, Transform, sur ce modèle SAM pour la transformer en modèle CloudFormation. Ainsi, tous les modèles SAM seront éventuellement convertis en modèles CF, mais pour l'utilisateur final, dans la plupart des cas, il est plus facile d'utiliser simplement le modèle SAM. Par exemple, pour une application simple avec Lambdas déclenchée par une nouvelle API que vous créez, le modèle SAM vous permettra d'accomplir cela en moins de lignes que CloudFormation.

Pour étendre cela, le Framework sans serveur se comporte de la même manière. Sans serveur est conçu pour fonctionner sur toutes les plateformes (AWS, Azure, etc.). Sa syntaxe ressemble beaucoup à SAM, et elle convertit également le modèle en version plus complète de la plate-forme cible (par exemple AWS) du modèle (par exemple, le modèle CloudFormation).

0
dalumiller