As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Entendendo os recursos do Terraform
O principal motivo da existência de ambos AWS CloudFormation e do Terraform é a criação e manutenção de recursos em nuvem. Mas o que exatamente é um recurso de nuvem? E CloudFormation recursos e recursos do Terraform são a mesma coisa? A resposta é... sim e não. Para ilustrar isso, este guia fornece um exemplo do uso CloudFormation e, em seguida, do Terraform para criar um bucket do Amazon Simple Storage Service (Amazon S3).
O exemplo de CloudFormation código a seguir cria uma amostra de bucket do Amazon S3.
{ "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" } } } }
O exemplo de código do Terraform a seguir cria um bucket 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" } }
Para o Terraform, um provedor define o recurso e, em seguida, os desenvolvedores declaram e configuram esses recursos. Provedores são um conceito que este guia abordará na próxima seção. O exemplo do Terraform cria recursos completamente separados para várias configurações do bucket do S3. Criar recursos separados para configurações não é necessariamente típico de como o Terraform AWS Provider trata AWS os recursos. No entanto, esse exemplo mostra uma distinção importante. Embora um CloudFormation recurso seja estritamente definido pela especificação do CloudFormation recurso, o Terraform não tem esse requisito. No Terraform, o conceito de recurso é um pouco mais nebuloso.
Embora as ferramentas possam diferir em relação às grades de proteção exatas que definem o que é um único recurso, em geral, um recurso de nuvem é qualquer entidade específica que existe na nuvem e que pode ser criada, atualizada ou excluída. Portanto, independentemente de quantos recursos estejam envolvidos, os dois exemplos anteriores criam exatamente a mesma coisa com exatamente as mesmas configurações em um Conta da AWS.