Terraform 리소스 이해 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Terraform 리소스 이해

AWS CloudFormation 및 Terraform이 모두 존재하는 주된 이유는 클라우드 리소스의 생성 및 유지 관리입니다. 하지만 클라우드 리소스란 정확히 무엇입니까? CloudFormation 리소스와 Terraform 리소스는 동일한가요? 답은... 예와 아니요입니다. 이를 설명하기 위해이 가이드에서는 CloudFormation을 사용한 다음 Terraform을 사용하여 Amazon Simple Storage Service(Amazon S3) 버킷을 생성하는 예를 제공합니다.

다음 CloudFormation 코드 예제에서는 샘플 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" } } } }

다음 Terraform 코드 예제에서는 동일한 Amazon S3 버킷을 생성합니다.

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

Terraform의 경우 공급자는 리소스를 정의한 다음 개발자는 해당 리소스를 선언하고 구성합니다. 공급자는이 가이드에서 다음 섹션에서 설명하는 개념입니다. Terraform 예제에서는 여러 S3 버킷의 설정에 대해 완전히 별도의 리소스를 생성합니다. 설정을 위한 별도의 리소스를 생성하는 것이 Terraform AWS 공급자가 AWS 리소스를 처리하는 방식에 반드시 일반적인 것은 아닙니다. 그러나이 예제는 중요한 차이점을 보여줍니다. CloudFormation 리소스는 CloudFormation 리소스 사양에 따라 엄격하게 정의되지만 Terraform에는 이러한 요구 사항이 없습니다. Terraform에서 리소스의 개념은 약간 더 모호합니다.

단일 리소스가 무엇인지 정의하는 정확한 가드레일과 관련하여 도구가 다를 수 있지만 일반적으로 클라우드 리소스는 클라우드에 존재하고 생성, 업데이트 또는 삭제할 수 있는 모든 특정 엔터티입니다. 따라서 관련된 리소스 수에 관계없이 이전 두 예제 모두 내에서 정확히 동일한 설정을 사용하여 정확히 동일한 사물을 생성합니다 AWS 계정.