Comprendere le risorse Terraform - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Comprendere le risorse Terraform

Il motivo principale dell'esistenza di entrambi AWS CloudFormation e di Terraform è la creazione e la manutenzione di risorse cloud. Ma cos'è esattamente una risorsa cloud? E le CloudFormation risorse e le risorse Terraform sono la stessa cosa? La risposta è... sì e no. Per illustrare ciò, questa guida fornisce un esempio di utilizzo CloudFormation e quindi di Terraform per creare un bucket Amazon Simple Storage Service (Amazon S3).

Il seguente esempio di CloudFormation codice crea un bucket Amazon S3 di esempio.

{ "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" } } } }

Il seguente esempio di codice Terraform crea un bucket Amazon S3 identico.

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" } }

Per Terraform, un provider definisce la risorsa, quindi gli sviluppatori dichiarano e configurano tali risorse. I fornitori sono un concetto discusso in questa guida nella sezione successiva. L'esempio Terraform crea risorse completamente separate per diverse impostazioni del bucket S3. La creazione di risorse separate per le impostazioni non è necessariamente tipica del modo in cui Terraform AWS Provider tratta le risorse. AWS Tuttavia, questo esempio mostra una distinzione importante. Sebbene una CloudFormation risorsa sia strettamente definita dalle specifiche della CloudFormation risorsa, Terraform non ha tale requisito. In Terraform, il concetto di risorsa è un po' più nebuloso.

Sebbene gli strumenti possano differire per quanto riguarda gli esatti limiti che definiscono cos'è una singola risorsa, in generale, una risorsa cloud è qualsiasi entità particolare che esiste nel cloud e che può essere creata, aggiornata o eliminata. Quindi, indipendentemente dal numero di risorse coinvolte, i due esempi precedenti creano entrambi esattamente la stessa cosa con le stesse impostazioni all'interno di un. Account AWS