AWS CloudFormation 작동 방식 - AWS CloudFormation

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

AWS CloudFormation 작동 방식

스택을 생성할 때 AWS CloudFormation에서는 AWS로 기본 서비스 호출을 전송하여 리소스를 프로비저닝하고 구성합니다. AWS CloudFormation은 사용자가 수행할 수 있는 권한이 있는 작업만 수행할 수 있습니다. 예를 들어, AWS CloudFormation을 사용하여 EC2 인스턴스를 생성하려면 인스턴스를 생성할 권한이 필요합니다. 인스턴스가 포함된 스택을 삭제하는 경우에도 인스턴스를 종료할 유사한 권한이 필요합니다. AWS Identity and Access Management(IAM)를 사용하여 권한을 관리합니다.

AWS CloudFormation에서 실행하는 호출은 모두 템플릿으로 선언됩니다. 예를 들어 t1.micro 인스턴스 유형으로 EC2 인스턴스를 설명하는 템플릿이 있다고 가정해 보겠습니다. 이 템플릿을 사용해 스택을 생성하는 경우 AWS CloudFormation에서는 Amazon EC2 인스턴스 생성 API를 생성하고 인스턴스 유형을 t1.micro로 지정합니다. 다음 다이어그램은 AWS CloudFormation의 스택 생성 워크플로우를 요약해서 보여줍니다.

  1. AWS CloudFormation Designer 또는 자체 텍스트 편집기를 사용하여 JSON 또는 YAML 형식으로 CloudFormation 템플릿을 생성하거나 수정할 수 있습니다. 또한 제공된 템플릿을 사용하도록 선택할 수도 있습니다. CloudFormation 템플릿에는 필요한 리소스와 해당하는 설정이 설명됩니다. 예를 들어 EC2 인스턴스를 생성하려고 한다고 가정해 보겠습니다. 다음 예에서처럼 템플릿에서 Amazon EC2 인스턴스를 선언하고 해당 인스턴스의 속성을 설명할 수 있습니다.

    예 JSON

    { "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "A simple EC2 instance", "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "ami-0ff8a91507f77f867", "InstanceType" : "t1.micro" } } } }

    예 YAML

    AWSTemplateFormatVersion: '2010-09-09' Description: A simple EC2 instance Resources: MyEC2Instance: Type: AWS::EC2::Instance Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t1.micro
  2. 템플릿을 로컬에 또는 S3 버킷에 저장합니다. 템플릿을 생성한 경우 .json, .yaml 또는 .txt와 같은 파일 확장명으로 저장합니다.

  3. 템플릿 파일의 위치(예: 로컬 컴퓨터의 경로 또는 Amazon S3 URL)를 지정하여 CloudFormation 스택을 생성합니다. 템플릿에 파라미터가 포함되어 있는 경우 스택을 생성할 때 입력 값을 지정할 수 있습니다. 파라미터를 통해 템플릿을 값을 전달하여 스택을 생성할 때마다 리소스를 사용자 지정할 수 있습니다.

    AWS CloudFormation 콘솔, API 또는 AWS CLI를 사용하여 스택을 생성할 수 있습니다.

    참고

    템플릿 파일을 로컬에 저장하도록 지정한 경우 AWS CloudFormation은 해당 파일을 AWS 계정의 S3 버킷에 업로드합니다. AWS CloudFormation은 템플릿 파일을 업로드하는 리전별로 버킷을 생성합니다. AWS 계정에서 Amazon Simple Storage Service(Amazon S3) 권한이 있는 모든 사용자가 버킷에 액세스할 수 있습니다. AWS CloudFormation에서 생성한 버킷이 이미 있는 경우, 해당 버킷에 템플릿이 추가됩니다.

    템플릿을 Amazon S3에 수동으로 업로드하여 자체 버킷을 사용하고 버킷의 권한을 관리할 수 있습니다. 그런 다음 스택을 생성하거나 업데이트할 때마다 템플릿 파일의 Amazon S3 URL을 지정합니다.

AWS CloudFormation에서는 템플릿에 설명된 AWS 서비스를 호출하여 리소스를 프로비저닝 및 구성합니다.

모든 리소스가 생성된 후 AWS CloudFormation에서는 스택이 생성되었음을 보고합니다. 그러면 스택의 리소스를 사용할 수 있습니다. 스택 생성에 실패하면 AWS CloudFormation에서는 생성한 리소스를 삭제하여 변경 사항을 롤백합니다.

변경 세트로 스택 업데이트

스택의 리소스를 업데이트해야 하는 경우 스택의 템플릿을 수정할 수 있습니다. 새 스택을 만들고 이전 스택은 삭제할 필요가 없습니다. 스택을 업데이트하려면 원본 스택 템플릿의 수정된 버전, 다른 입력 파라미터 또는 둘 다를 제출하여 변경 세트를 생성합니다. AWS CloudFormation에서는 수정된 템플릿을 원본 템플릿과 비교해 변경 세트를 생성합니다. 변경 세트에는 제안된 변경 사항이 나열되어 있습니다. 변경 사항을 검토한 후 변경 세트를 실행해 스택을 업데이트하거나 새 변경 세트를 생성할 수 있습니다. 다음 다이어그램은 스택 업데이트 워크플로우를 요약해서 보여줍니다.

중요

업데이트 시 중단이 발생할 수 있습니다. 업데이트 중인 리소스 및 속성에 따라 업데이트 시 기존 리소스가 중단되거나 대체될 수 있습니다. 자세한 내용은 AWS CloudFormation 스택 업데이트 섹션을 참조하세요.

  1. AWS CloudFormation Designer 또는 텍스트 편집기를 사용하여 AWS CloudFormation 스택 템플릿을 수정할 수 있습니다. 예를 들어 EC2 인스턴스에 대한 인스턴스 유형을 변경하려는 경우 원본 스택의 템플릿에서 InstanceType 속성의 값을 변경합니다.

    자세한 내용은 스택 템플릿 수정 섹션을 참조하세요.

  2. AWS CloudFormation 템플릿을 로컬 또는 S3 버킷에 저장합니다.

  3. 업데이트하려는 스택과 수정된 템플릿의 위치(예: 로컬 컴퓨터의 경로 또는 Amazon S3 URL)를 지정하여 변경 세트를 생성합니다. 템플릿에 파라미터가 포함되어 있는 경우 변경 세트를 생성할 때 값을 지정할 수 있습니다.

    변경 세트 생성에 대한 자세한 내용은 변경 세트를 사용하여 스택 업데이트 단원을 참조하십시오.

    참고

    로컬 컴퓨터에 저장되는 템플릿을 지정한 경우 AWS CloudFormation에서는 해당 템플릿을 AWS 계정의 S3 버킷에 템플릿을 자동으로 업로드합니다.

  4. 변경 세트를 보고 기대하는 변경을 AWS CloudFormation에서 수행할지 확인합니다. 예를 들어 AWS CloudFormation에서 중요한 스택 리소스를 대체할지 확인합니다. 원하는 변경 사항을 포함할 때까지 변경 세트는 필요한 만큼 생성할 수 있습니다.

    중요

    변경 세트는 스택 업데이트에 성공했는지 여부는 나타내지 않습니다. 예를 들어 변경 세트는 계정 한계를 초과하는 경우, 업데이트를 지원하지 않는 리소스를 업데이트하는 경우 또는 리소스를 수정할 권한이 불충분한 경우를 확인하지 않습니다. 이러한 경우는 모두 스택 업데이트 실패를 일으킬 수 있습니다.

  5. 스택에 적용하려는 변경 세트를 실행합니다. AWS CloudFormation에서는 수정한 리소스만 업데이트하여 스택을 업데이트하고 스택 업데이트에 성공했다는 신호를 전송합니다. 스택 업데이트에 실패하면 AWS CloudFormation에서는 변경 사항을 롤백해 스택을 알려진 마지막 작동 상태로 복원합니다.

스택 삭제

스택을 삭제하는 경우 삭제할 스택을 지정하면 AWS CloudFormation에서는 해당 스택과 스택 내 모든 리소스를 삭제합니다. AWS CloudFormation 콘솔, API 또는 AWS CLI를 사용하여 스택을 삭제할 수 있습니다.

스택은 삭제하지만 해당 스택 내 일부 리소스는 보존하려는 경우 삭제 정책을 사용하여 해당 리소스는 보존할 수 있습니다.

모든 리소스가 삭제된 후 AWS CloudFormation에서는 스택이 성공적으로 삭제되었다는 신호를 전송합니다. AWS CloudFormation에서 리소스를 삭제할 수 없는 경우에는 스택이 삭제되지 않습니다. 삭제되지 않은 모든 리소스는 스택을 성공적으로 삭제할 수 있을 때까지 보존됩니다.

추가 리소스

  • AWS CloudFormation 템플릿 생성에 대한 자세한 내용은 템플릿 구조 단원을 참조하십시오.

  • 스택 생성, 업데이트 또는 삭제에 대한 자세한 내용은 스택 작업 단원을 참조하십시오.