Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Comprendre les ressources de Terraform
La principale raison de l'existence des deux AWS CloudFormation et de Terraform est la création et la maintenance de ressources cloud. Mais qu'est-ce qu'une ressource cloud exactement ? Et les CloudFormation ressources et les ressources Terraform sont-elles la même chose ? La réponse est... oui et non. Pour illustrer cela, ce guide fournit un exemple d'utilisation CloudFormation puis de Terraform pour créer un bucket Amazon Simple Storage Service (Amazon S3).
L'exemple de CloudFormation code suivant crée un exemple de compartiment 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" } } } }
L'exemple de code Terraform suivant crée un compartiment Amazon S3 identique.
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" } }
Pour Terraform, un fournisseur définit la ressource, puis les développeurs déclarent et configurent ces ressources. Les fournisseurs sont un concept que ce guide aborde dans la section suivante. L'exemple Terraform crée des ressources complètement distinctes pour plusieurs paramètres du compartiment S3. La création de ressources distinctes pour les paramètres n'est pas nécessairement typique de la façon dont le AWS fournisseur Terraform traite les AWS ressources. Cependant, cet exemple montre une distinction importante. Bien qu'une CloudFormation ressource soit strictement définie par la spécification de la CloudFormation ressource, Terraform n'a aucune exigence de ce type. Dans Terraform, le concept de ressource est un peu plus nébuleux.
Bien que les outils puissent différer en ce qui concerne les garde-fous exacts qui définissent ce qu'est une ressource unique, une ressource cloud est généralement une entité spécifique qui existe dans le cloud et qui peut être créée, mise à jour ou supprimée. Ainsi, quel que soit le nombre de ressources impliquées, les deux exemples précédents créent exactement la même chose avec exactement les mêmes paramètres dans un Compte AWS.