Comprensión de los recursos de Terraform - AWS Guía prescriptiva

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.

Comprensión de los recursos de Terraform

La razón principal de la existencia de ambos AWS CloudFormation y Terraform es la creación y el mantenimiento de los recursos en la nube. Pero, ¿qué es exactamente un recurso en la nube? ¿Y CloudFormation los recursos y los recursos de Terraform son lo mismo? La respuesta es... sí y no. Para ilustrarlo, en esta guía se proporciona un ejemplo del uso CloudFormation y posterior creación de Terraform para crear un bucket de Amazon Simple Storage Service (Amazon S3).

El siguiente ejemplo CloudFormation de código crea un bucket de Amazon S3 de muestra.

{ "myS3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "BucketName": "my-s3-bucket", "BucketEncryption": { "ServerSideEncryptionConfiguration": [ { "ServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] }, "PublicAccessBlockConfiguration": { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true }, "VersioningConfiguration": { "Status": "Enabled" } } } }

El siguiente ejemplo de código de Terraform crea un bucket de Amazon S3 idéntico.

resource "aws_s3_bucket" "myS3Bucket" { bucket = "my-s3-bucket" } resource "aws_s3_bucket_server_side_encryption_configuration" "bucketencryption" { bucket = aws_s3_bucket.myS3Bucket.id rule { apply_server_side_encryption_by_default { sse_algorithm = "AES256" } } } resource "aws_s3_bucket_public_access_block" "publicaccess" { bucket = aws_s3_bucket.myS3Bucket.id block_public_acls = true block_public_policy = true ignore_public_acls = true restrict_public_buckets = true } resource "aws_s3_bucket_versioning" "versioning" { bucket = aws_s3_bucket.myS3Bucket.id versioning_configuration { status = "Enabled" } }

En el caso de Terraform, un proveedor define el recurso y, a continuación, los desarrolladores declaran y configuran esos recursos. Los proveedores son un concepto que se analiza en esta guía en la siguiente sección. El ejemplo de Terraform crea recursos completamente independientes para varios de los ajustes del bucket de S3. La creación de recursos separados para la configuración no es necesariamente la forma típica de tratar AWS los recursos por parte del AWS proveedor de Terraform. Sin embargo, este ejemplo muestra una distinción importante. Si bien un CloudFormation recurso está estrictamente definido por la especificación del CloudFormation recurso, Terraform no tiene ese requisito. En Terraform, el concepto de recurso es un poco más confuso.

Si bien las herramientas pueden diferir en cuanto a las barreras exactas que definen qué es un recurso único, en términos generales, un recurso en la nube es cualquier entidad concreta que existe en la nube y que se puede crear, actualizar o eliminar. Por lo tanto, independientemente de cuántos recursos estén involucrados, los dos ejemplos anteriores crean exactamente lo mismo con exactamente la misma configuración dentro de un. Cuenta de AWS