Documentation pour l'infrastructure AWS sous forme de code

Oct 10 2020

Récemment, en essayant de créer un IaC terraform, j'ai constaté que je ne pouvais pas faire acheminer correctement la passerelle API vers Lambda. Il s'est avéré que lors de l'utilisation de la console, AWS attribue automatiquement les autorisations dont la passerelle a besoin pour Lambda, mais avec IaC in terraform, cela doit être attribué explicitement.

Ce qui précède est compréhensible mais pour un débutant, à la fois AWS et terraform, déroutant.

Existe-t-il une documentation qui explique les composants requis dans une connexion d'infrastructure, telle que celle ci-dessus?

Je connais les documents AWS et les documents terraform sont particulièrement bien pensés, mais rien de tout cela n'explique réellement (pour autant que je sache) qu'une certaine ressource est requise dans une configuration particulière (aussi courante ou obscure). La déduction de ces connexions à partir d'une recherche générale n'est pas un excellent remplacement.

Réponses

2 TaiT's Oct 10 2020 at 23:19

Je ne pense pas qu'il existe une documentation qui répertorie "tous les composants requis" dans une seule page / zone. Mais vous pouvez obtenir différentes informations à partir de différents documents, et comme vous l'avez mentionné, AWS et Terraform font tous deux un excellent travail.

En parlant d'AWS, dans le cas des autorisations dans la passerelle API, je peux penser à deux liens utiles (le 1er est référencé à partir du 2ème cependant):

  • Comment les stratégies de ressources API Gateway affectent le flux de travail d'autorisation
  • Contrôlez l'accès pour appeler une API

Je suis d'accord sur le fait que, parfois, il y a beaucoup de suppositions à traduire AWS en terraform si vous ne savez pas vraiment ce que vous essayez d'accomplir. Habituellement, lorsque je suis bloqué sur quelque chose qui "devrait théoriquement fonctionner" dans la console IaC vs AWS, je prends du recul par rapport au problème et j'essaie de comprendre quel type de composants j'essaye vraiment de coller ensemble dans le monde AWS. Ensuite, les choses deviennent généralement plus évidentes.

Parce que dans terraform, c'est vraiment créer de petites infrastructures indépendantes et les faire fonctionner ensemble. En comparaison avec d'autres IaC, d'après mon expérience, c'est beaucoup plus granulaire que CloudFormation par exemple.

Une pratique personnelle qui m'aide à comprendre les choses plus rapidement est de lire chaque document d'introduction des composants sur lesquels je travaille dans Terraform. Par exemple, si j'écris lambda dans terraform IaC, je lirais rapidement toutes les parties d'intro de lambda_xxxx_yyyy pour être moins coincé et réagir plus rapidement lorsque quelque chose échoue. Cela fonctionne généralement pour moi.

1 IliaKondrashov Oct 10 2020 at 14:42

Je n'ai pas vu une telle documentation, mais je peux partager mon travail autour de cas similaires.

Vous pouvez apporter les modifications dont vous avez besoin à l'aide de la console AWS - manuellement, à l'aide de l'interface utilisateur. Ensuite, vous pouvez définir les ressources que vous venez de créer dans vos fichiers TF, en définissant uniquement / requis l'ensemble de propriétés requis, même les valeurs aléatoires fonctionneront. Ensuite, vous importez ce que vous avez créé manuellement dans les ressources que vous avez définies.

En courant, terraform planvous verrez les différences, cela vous permettra d'ajuster vos fichiers TF en conséquence.

Après quelques itérations, vous répliquerez ce que vous venez de faire dans l'interface utilisateur en utilisant TF. En guise de test final, vous pouvez annuler manuellement vos modifications, exécuter terraform applyet vous assurer que tout fonctionne comme prévu.