In AWS CloudFormation, what is a circular dependency?
- A. When Nested Stacks depend on each other.
- B. When Resources form a Depend On loop.
- C. When a Template references an earlier version of itself.
- D. When a Template references a region, which references the original Template.
한글 번역
AWS CloudFormation에서 순환 종속성이란 무엇입니까?
- A. 중첩 된 스택이 서로 의존하는 경우.
- B. 리소스가 Depend On 루프를 형성 할 때.
- C. 템플릿이 이전 버전의 자체를 참조하는 경우.
- D. 템플릿이 영역을 참조하는 경우 원래 템플릿을 참조합니다.
정답
- B. When Resources form a Depend On loop.
해설
CloudFormation이란?
AWS CloudFormation은 AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스이다. 필요한 모든 AWS 리소스를 설명하는 템플릿을 생성하면 CloudFormation이 해당 리소스의 프로비저닝과 구성을 담당한다. AWS 리소스를 개별적으로 생성하고 구성할 필요가 없으며 어떤 것이 무엇에 의존하는지 파악할 필요 없이 CloudFormation이 모든 것을 처리합니다.
CloudFormation은 인프라 관리 간소화에 유리하다. Auto Scaling Group, ELB, RDS 등 템플릿을 생성하거나 기존 템플릿을 수정해서 구성이 가능하다. 템플릿에는 모든 리소스와 해당하는 속성이 설명된다. 템플릿을 사용하여 CloudFormation 스택을 생성하면 ASG, ELB, RDS를 자동으로 프로비저닝할 수 있다. 스택이 생성된 이후 AWS 리소스가 실행되며 스택은 쉽게 삭제할 수 있다.
또한 CloudFormation은 신속하게 인프라 복제를 가능하게 한다. CloudFormation 템플릿을 재사용한다면 리소스를 일관되고 반복적으로 생성할 수 있습니다. 템플릿을 재사용하려면 리소스를 한번만 설명하고 여러 리전에서 동일한 리소스를 반복적으로 프로비저닝할 수 있습니다.
CloudFormation은 인프라 변경사항을 쉽게 제어 및 추적하게 해줍니다. CloudFormation을 사용해 인프라를 프로비저닝 할 경우 프로비저닝되는 리소스와 해당 설정이 CloudFormation 템플릿에 정확히 설명됩니다. 템플릿은 텍스트파일이므로 템플릿에서 차이점을 추적해 인프라 변경 사항을 추적할 수 있습니다. 이는 개발자가 소스 코드에 대한 개정 사항을 제어하는 방식과 비슷합니다.
CloudFormation의 개념
AWS CloudFormation을 사용하는 경우에는 템플릿 및 스택으로 작업합니다. 템플릿을 생성하여 AWS 리소스와 해당 속성에 대해 설명합니다. 스택을 생성할 때 마다 CloudFormation에서 템플릿에 설명된 리소스를 프로비저닝합니다.
템플릿
CloudFormation 템플릿은 JSON 또는 YAML 형식의 텍스트 파일입니다. .json, .yaml, .template 또는 .txt 등 모든 확장명으로 파일 저장할 수 있습니다. CloudFormation에서는 템플릿을 AWS 리소스 구축을 위한 블루프린트로 사용합니다. 템플릿에서는 인스턴스 유형, AMI ID, 블록 디바이스 매핑, EC2 키 페어 이름 같은 Amazon EC2 인스턴스를 설명할 수 있습니다. 스택을 생성할 때마다 CloudFormation에서 템플릿에 설명된 항목을 생성하는데 사용되는 템플릿도 지정합니다.
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "A sample template",
"Resources" : {
"MyEC2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"ImageId" : "ami-0ff8a91507f77f867",
"InstanceType" : "t2.micro",
"KeyName" : "testkey",
"BlockDeviceMappings" : [
{
"DeviceName" : "/dev/sdm",
"Ebs" : {
"VolumeType" : "io1",
"Iops" : 200,
"DeleteOnTermination" : false,
"VolumeSize" : 20
}
}
]
}
}
}
}
스택
CloudFormation을 사용할 경우 스택이라는 하나의 단위로 관련 리소스를 관리합니다. 스택을 생성, 업데이트, 삭제하여 리소스 모음을 생성, 업데이트 및 삭제합니다. 스택의 모든 리소스는 스택의 CloudFormation 템플릿으로 정의합니다. Auto Scaling 그룹, Elastic Load Balancing 로드 밸런서 및 Amazon Relational Database Service(Amazon RDS) 데이터베이스 인스턴스를 포함하는 템플릿을 생성했다고 가정합니다. 이러한 리소스를 생성하려면 생성한 템플릿을 제출하여 스택을 생성합니다. 그러면 CloudFormation에서 모든 리소스를 자동으로 프로비저닝합니다. CloudFormation 콘솔, API 또는 AWS CLI를 사용하여 스택 작업을 수행할 수 있습니다.
순환 종속성이란 무엇인가?
이름에서도 알 수 있듯이 순환 종속성이란 두 자원이 서로 의존하거나 자원이 그 자체에 의존한다는 것을 의미한다.
자원 A는 자원 B에 종속되고 자원 B는 자원 A에 종속된다. AWS CloudFormation에서 이러한 유형의 조건이 존재한다고 평가하면 AWS CloudFormation이 먼저 생성해야하는 리소스를 명확하게 결정할 수 없기 때문에 순환 종속성 오류가 발생합니다.
이러한 일이 발생할 수 있는 이유를 이해하려면 AWS CloudFormation의 몇 가지 기본 사항을 검토해 보겠습니다. 템플릿에 여러 리소스를 정의하면 AWS CloudFormation은 병렬 방식(속도)으로 이러한 리소스를 생성하려고 시도하는 동시에 필요한 경우 참조 사용을 기반으로 올바른 종속성을 추출하려고 시도합니다. 그러나 리소스 내에서 DependsOn 특성을 사용하여 리소스 생성 순서를 제어할 수 있습니다. DependsOn을 사용하면 리소스 B보다 먼저 리소스 A를 생성해야 함을 지정할 수 있습니다. AWS CloudFormation은 내장 함수 Ref를 사용할 때 암시적 종속성도 있습니다. Ref를 사용하여 다른 리소스의 정보를 참조할 수 있습니다. 자원 A가 자원 B에 대한 속성에 Ref를 갖는 경우, 자원 B는 자원 A보다 먼저 작성된다.
순환 종속성 오류가 발생하면 첫 번째 단계는 간략하게 설명된 리소스를 검사하고 AWS CloudFormation이 어떤 리소스 순서를 수행해야 하는지 결정할 수 있는지 확인하는 것입니다. 경우에 따라 리소스를 만든 다음 리소스를 만든 후 수정하거나 다른 방식으로 리소스에 정보를 제공하는 것을 의미할 수 있습니다. 두 가지 예와 해결 방법을 살펴 보겠습니다. 이러한 예제는 GitHub 리포지토리에서 찾을 수 있습니다.
먼저 보안 그룹을 만든 다음 이미 만든 보안 그룹을 참조하여 규칙을 할당하는 보안 그룹 수신 규칙을 만들려고 합니다. 이렇게 하면 AWS CloudFormation이 보안 그룹을 생성하여 EC2 인스턴스에 할당한 다음 규칙을 할당할 수 있으므로 순환 종속성 오류를 피할 수 있습니다. 다음 그림에서는 수정된 SimpleWorking.yaml 템플릿을 보여 줍니다. 이 예제의 순서는 순환 종속성을 완화합니다. 먼저 보안 그룹이 만들어지고 병렬로 인스턴스에 할당되고 수신 규칙이 보안 그룹에 추가됩니다.
이 예제에서는 Ref를 사용했기 때문에 순환 종속성에 도달했으며, 이 경우 자동으로 생성되므로 보안 그룹 ID를 미리 알 수 없기 때문에 Ref를 사용했습니다. 값을 AWS CloudFormation 템플릿으로 하드 코딩하는 것은 재사용을 위한 모범 사례로 간주되지 않습니다. 이름 하드 코딩을 피하기 위해 AWS CloudFormation이 이름을 자동으로 생성하도록 허용할 수 있지만 이로 인해 순환 종속성 오류가 발생할 수도 있습니다. 다음 예제에서는 리소스를 밖으로 이동하는 대신 순환 종속성을 피하기 위해 의사 매개 변수를 사용하여 이름을 할당합니다.
문서 참조
AWS CloudFormation |에서 순환 종속성 오류 처리 통합 및 자동화 (amazon.com)
'[AWS] > AWS SAP EXAMTOPICS' 카테고리의 다른 글
[AWS][SAP] Question 9 (0) | 2022.08.12 |
---|---|
[AWS][SAP] Question 8 (0) | 2022.08.11 |
[AWS][SAP] Question 7 (0) | 2022.08.09 |
[AWS][SAP] Question 6 (0) | 2022.08.09 |
[AWS][SAP] Question 5 (0) | 2022.08.08 |
[AWS][SAP] Question 4 (0) | 2022.08.08 |
[AWS][SAP] Question 3 (0) | 2022.08.05 |
[AWS][SAP] Question 2 (0) | 2022.08.04 |
댓글