1 votes

Prise en charge de la ressource personnalisée CloudFormation dans Terraform

J'ai parcouru les documents de Terraform pour le fournisseur AWS et je n'ai pas trouvé de support pour CloudFormation::CustomResource dans terraform.

J'ai créé mes fonctions lambda et maintenant je voudrais passer mes arguments à ma fonction lambda. La façon dont cela est fait dans CloudFormation est via une ressource personnalisée.

Cependant, je n'arrive pas à trouver de support pour cela dans Terraform. Est-ce que quelque chose m'échappe ? Merci.

2voto

Martin Atkins Points 1928

Le site aws_cloudformation_stack ressource permet la création de piles CloudFormation dans Terraform, exposant ainsi toutes les fonctionnalités de CloudFormation dans une configuration Terraform :

resource "aws_cloudformation_stack" "example" {
  name = "example-custom-resource"

  template_body = <<STACK
{
  "Resources" : {
    "ExampleCustomResource": {
      "Type" : "Custom::ExampleResource",
      "Properties" : {
        "ServiceToken": "...",
        (other properties specific to the resource)
      }
    }
  }
}
STACK
}

Le site Type peut être n'importe quelle chaîne de caractères commençant par Custom:: . Die ServiceToken identifie le fournisseur de ressources personnalisées qui gérera cette ressource personnalisée. Toutes les autres propriétés prises en charge par la ressource personnalisée peuvent être fournies en tant qu'attributs supplémentaires dans l'attribut Properties objet.

Puisque le format de template_body est juste un modèle CloudFormation standard, la documentation pour CustomResource donne tous les détails sur le fonctionnement de cette fonctionnalité.

Terraform ne directement prend en charge les ressources personnalisées CloudFormation en tant que ressources Terraform natives, mais les aws_cloudformation_stack est fournie comme un moyen d'obtenir le meilleur des deux mondes, en donnant accès aux fonctionnalités spécifiques à CloudFormation lorsque cela est nécessaire.

1voto

user8065363 Points 11

Vous pouvez essayer le fournisseur suivant, il fonctionne de la même manière que les ressources personnalisées AWS CloudFormation. Vous pouvez l'utiliser avec AWS Lambda ou exécuter un script localement dans n'importe quelle langue.

https://github.com/mobfox/terraform-provider-multiverse

provider "multiverse" {}

resource "multiverse_custom_resource" 
  "spotinst_targetset_and_rules" {
      executor = "python3"
      script = "spotinst_mlb_targetset.py"
      id_key = "id"
      data = <<JSON
 {
    "name": "test-terraform-test",
    "mlb_id": "lb-123",
    "mlb_deployment_id": "dp-123",
    "mlb_listener_ids": ["ls-123", "ls-456"],
    "test_group_callback_fqdn": "test.fqdn.com",
     "control_group_callback_fqdn": "control.fqdn.com"
  }
 JSON
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X