

Aviso de fin del soporte: el 7 de octubre de 2026 AWS finalizará el soporte para AWS Proton. Después del 7 de octubre de 2026, ya no podrás acceder a la AWS Proton consola ni a AWS Proton los recursos. La infraestructura implementada permanecerá intacta. Para obtener más información, consulte la [Guía AWS Proton de obsolescencia y migración del servicio](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html).

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Archivos iAC de Terraform
<a name="ag-infrastructure-tmp-files-terraform"></a>

Aprenda a usar la infraestructura de Terraform como archivos de código (IaC) con. AWS Proton[Terraform](https://www.terraform.io/) es un motor iAC de código abierto muy utilizado que fue desarrollado por. [HashiCorp](https://www.hashicorp.com/) Los módulos de Terraform se desarrollan en HashiCorp el lenguaje HCL y son compatibles con varios proveedores de infraestructuras de back-end, incluido Amazon Web Services.

AWS Proton admite el [aprovisionamiento autogestionado](ag-works-prov-methods.md#ag-works-prov-methods-self) para Terraform IaC.

Para ver un ejemplo completo de un repositorio de aprovisionamiento que responde a las solicitudes de cambios e implementa el aprovisionamiento de infraestructura, consulta la plantilla de automatización de [Terraform OpenSource GitHub ](https://github.com/aws-samples/aws-proton-terraform-github-actions-sample) Actions para ver más información. AWS Proton GitHub

**Cómo funciona el aprovisionamiento autogestionado con los archivos del paquete de plantillas iAC de Terraform:**

1. Cuando [crea un entorno](ag-create-env.md) a partir de paquetes de plantillas de Terraform, AWS Proton compila sus `.tf` archivos con parámetros de entrada o de consola. `spec file`

1. Realiza una solicitud de selección para fusionar los archivos IaC compilados con el [repositorio en el que te has registrado](ag-create-repo.md). AWS Proton

1. Si se aprueba la solicitud, AWS Proton espera al estado de aprovisionamiento que nos proporciones.

1. Si se rechaza la solicitud, se cancela la creación del entorno.

1. Si se agota el tiempo de espera de la solicitud de extracción, la creación del entorno *no* se completará.

**AWS Proton teniendo en cuenta las consideraciones de Terraform IaC:**
+ AWS Proton no administra su aprovisionamiento de Terraform.
+ Debe [registrar un repositorio de aprovisionamiento](ag-create-repo.md) con. AWS Proton AWS Proton realiza solicitudes de incorporación de cambios en este repositorio.
+ Debe [crear una CodeStar conexión](setting-up-for-service.md#setting-up-vcontrol) para conectarse AWS Proton con su repositorio de aprovisionamiento.
+ Para aprovisionar a partir de archivos IaC AWS Proton compilados, debes responder a las solicitudes de AWS Proton extracción. AWS Proton realiza solicitudes de extracción después de las acciones de creación y actualización del entorno y el servicio. Para obtener más información, consulte [AWS Proton entornos](ag-environments.md) y [AWS Proton servicios](ag-services.md).
+ Para aprovisionar una canalización a partir de archivos IaC AWS Proton compilados, debe [crear un repositorio de CI/CD canalizaciones](setting-up-for-service.md#setting-up-pr-repo).
+ La automatización del aprovisionamiento basada en solicitudes de extracción debe incluir pasos para notificar cualquier cambio en el AWS Proton estado de los AWS Proton recursos aprovisionados. [Puedes usar la AWS Proton NotifyResourceDeploymentStatusChange API.](https://docs.aws.amazon.com/proton/latest/APIReference/API_NotifyResourceDeploymentStatusChange.html)
+ No puede implementar servicios, canalizaciones y componentes creados a partir de archivos CloudFormation IaC en entornos creados a partir de archivos IaC de Terraform.
+ No puede implementar servicios, canalizaciones y componentes creados a partir de archivos iAC de Terraform en entornos creados a partir de archivos iAC. CloudFormation 

Al preparar los archivos iAC de Terraform AWS Proton, debe adjuntar espacios de nombres a las variables de entrada, como se muestra en los siguientes ejemplos. Para obtener más información, consulte [Parámetros](parameters.md).

## Ejemplo 1: AWS Proton archivo iAC de Terraform de entorno
<a name="ag-env-tform-example"></a>

```
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
  // This tells terraform to store the state file in s3 at the location
  // s3://terraform-state-bucket/tf-os-sample/terraform.tfstate
  backend "s3" {
    bucket = "terraform-state-bucket"
    key    = "tf-os-sample/terraform.tfstate"
    region = "us-east-1"
  }
}

// Configure the AWS Provider
provider "aws" {
  region = "us-east-1"
  default_tags {
    tags = var.proton_tags
  }
}

resource "aws_ssm_parameter" "my_ssm_parameter" {
  name  = "my_ssm_parameter"
  type  = "String"
  // Use the Proton environment.inputs. namespace
  value = var.environment.inputs.ssm_parameter_value
}
```

## Infraestructura compilada como código
<a name="compiled-tform"></a>

Al crear un entorno o un servicio, AWS Proton compila la infraestructura como archivos de código con consola o `spec file` entradas. Crea `proton.resource-type.variables.tf` y `proton.auto.tfvars.json` archiva tus entradas para que Terraform pueda utilizarlas, como se muestra en los siguientes ejemplos. Estos archivos se encuentran en un repositorio específico en una carpeta que coincide con el nombre del entorno o de la instancia de servicio.

En el ejemplo se muestra cómo se AWS Proton incluyen las etiquetas en la definición y los valores de las variables, y cómo se pueden propagar estas AWS Proton etiquetas a los recursos aprovisionados. Para obtener más información, consulte [Propagación de etiquetas a recursos aprovisionados](resources.md#auto-tags-prop).

### Ejemplo 2: archivos IaC compilados para un entorno denominado «dev».
<a name="ag-compiled-example"></a>

**dev/environment.tf:**

```
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
  // This tells terraform to store the state file in s3 at the location
  // s3://terraform-state-bucket/tf-os-sample/terraform.tfstate
  backend "s3" {
    bucket = "terraform-state-bucket"
    key    = "tf-os-sample/terraform.tfstate"
    region = "us-east-1"
  }
}

// Configure the AWS Provider
provider "aws" {
  region = "us-east-1"
  default_tags {
    tags = var.proton_tags
  }
}

resource "aws_ssm_parameter" "my_ssm_parameter" {
  name  = "my_ssm_parameter"
  type  = "String"
  // Use the Proton environment.inputs. namespace
  value = var.environment.inputs.ssm_parameter_value
}
```

**dev/proton.environment.variables.tf:**

```
variable "environment" {
  type = object({
    inputs = map(string)
    name = string
  })
}

variable "proton_tags" {
  type = map(string)
  default = null
}
```

**dev/proton.auto.tfvars.json:**

```
{
  "environment": {
    "name": "dev",
    "inputs": {
      "ssm_parameter_value": "MyNewParamValue"
    }
  }

  "proton_tags" : {
    "proton:account" : "123456789012",
    "proton:template" : "arn:aws:proton:us-east-1:123456789012:environment-template/fargate-env",
    "proton:environment" : "arn:aws:proton:us-east-1:123456789012:environment/dev"
  }
}
```

## Rutas de repositorio
<a name="repo-dir"></a>

AWS Proton utiliza las entradas de la consola o de las especificaciones del entorno o las acciones de creación de servicios para encontrar el repositorio y la ruta en la que se encuentran los archivos IaC compilados. Los valores de entrada se transfieren a parámetros de entrada espaciados por [nombres](parameters.md).

AWS Proton admite dos diseños de rutas de repositorio. En los siguientes ejemplos, las rutas se nombran según los parámetros de recursos con espacios de nombres de dos entornos. Cada entorno tiene instancias de servicio de dos servicios y las instancias de servicio de uno de los servicios tienen componentes definidos directamente.

<a name="limits-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/proton/latest/userguide/ag-infrastructure-tmp-files-terraform.html)

------
#### [ Layout 1 ]

Si AWS Proton encuentra el repositorio especificado con una `environments` carpeta, crea una carpeta que incluye los archivos IaC compilados y se nombra con. `environment.name`

Si AWS Proton encuentra el repositorio especificado con una `environments` carpeta que contiene un nombre de carpeta que coincide con el nombre de un entorno compatible con una instancia de servicio, crea una carpeta que incluye los archivos IaC de la instancia compilada y recibe el nombre de. `service_instance.name`

```
/repo
    /environments
        /env-prod                             # environment folder
            main.tf
            proton.environment.variables.tf
            proton.auto.tfvars.json
          
            /service-one-instance-one-prod    # instance folder
                main.tf
                proton.service_instance.variables.tf
                proton.auto.tfvars.json
              
            /service-two-instance-two-prod    # instance folder
                main.tf
                proton.service_instance.variables.tf
                proton.auto.tfvars.json
              
            /component-prod                   # component folder
                main.tf
                proton.component.variables.tf
                proton.auto.tfvars.json
              
        /env-staged                           # environment folder
            main.tf
            proton.variables.tf
            proton.auto.tfvars.json         
          
            /service-one-instance-one-staged  # instance folder
                main.tf
                proton.service_instance.variables.tf
                proton.auto.tfvars.json
              
            /service-two-instance-two-staged  # instance folder
                main.tf
                proton.service_instance.variables.tf
                proton.auto.tfvars.json
              
            /component-staged                 # component folder
                main.tf
                proton.component.variables.tf
                proton.auto.tfvars.json
```

------
#### [ Layout 2 ]

Si AWS Proton encuentra el repositorio especificado sin una `environments` carpeta, crea una `environment.name` carpeta en la que ubica los archivos IaC del entorno compilado.

Si AWS Proton encuentra el repositorio especificado con un nombre de carpeta que coincide con el nombre de un entorno compatible con una instancia de servicio, crea una `service_instance.name` carpeta en la que ubica los archivos IaC de la instancia compilada.

```
/repo
    /env-prod                             # environment folder
        main.tf
        proton.environment.variables.tf
        proton.auto.tfvars.json
      
        /service-one-instance-one-prod    # instance folder
            main.tf
            proton.service_instance.variables.tf
            proton.auto.tfvars.json
          
        /service-two-instance-two-prod    # instance folder
            main.tf
            proton.service_instance.variables.tf
            proton.auto.tfvars.json
          
        /component-prod                   # component folder
            main.tf
            proton.component.variables.tf
            proton.auto.tfvars.json
          
    /env-staged                           # environment folder
        main.tf
        proton.variables.tf
        proton.auto.tfvars.json         
      
        /service-one-instance-one-staged  # instance folder
            main.tf
            proton.service_instance.variables.tf
            proton.auto.tfvars.json
          
        /service-two-instance-two-staged  # instance folder
            main.tf
            proton.service_instance.variables.tf
            proton.auto.tfvars.json
          
        /component-staged                 # component folder
            main.tf
            proton.component.variables.tf
            proton.auto.tfvars.json
```

------