BLOG

AWS CloudFormation에서 수명이 긴 컴퓨팅 리소스를 커스텀 리소스로 사용하기
작성일: 2019년 9월 25일

AWS CloudFormation을 사용하면 스택을 생성, 업데이트 또는 삭제할 때마다 AWS Lambda함수를 사용하여 CloudFormation 템플릿에 커스텀 프로비저닝 로직을 작성 하여 커스텀 리소스를 생성 할 수 있습니다. 이를 통한 흥미로운 방식으로 CloudFormation을 확장 할 수 있습니다. Lambda는 강력한 도구이지만 컨테이너 구축 / 테스트와 같은 일부 작업에는 더 적은 제한으로 더 오래 실행되는 컴퓨팅 환경이 필요합니다.

 

커스텀 리소스 요청을 Lambda 이외의 다른 시스템이나 서비스로 오프로드 할 수 있습니다. 이는 CloudFormation 스택의 일부로써 컨테이너 이미지 생성과 같은 장기 실행 작업에 특히 유용합니다.

 

AWX Quick Start를 구축 할 때, AWS CloudFormation 배포의 일부로 AWX 컨테이너를 구축 할 수 있는 방법이 필요했습니다. 이 블로그 게시 글은 그 목표를 달성하는 데 사용한 패턴을 간략하게 설명합니다.

 

AWS CloudFormation내 에서 AWS CodeBuild를 사용하여 컨테이너 구축

 AWS CodeBuild를 장기 컴퓨팅 환경으로 사용하면 컨테이너화 된 컴퓨팅 환경의 유연성을 활용하여 컨테이너 이미지를 구축하고 Amazon Elastic Container Registry (Amazon ECR) 이미지 저장소로 가져올 수 있습니다.

 

여기서 구체적인 예는 Docker 컨테이너 이미지를 생성하지만 CloudFormation 템플릿에서 CodeBuild 작업을 실행 하기 위한 보다 일반적인 패턴은 다른 장기 컴퓨팅 작업에 유용한 경우가 있습니다.

 

작동 원리

 

CloudFormation 템플릿 내에서 사용자 지정 Lambda 지원 리소스는 CodeBuild 프로젝트를 시작합니다. CodeBuild 리소스에는 구축 성공 또는 실패를 기반으로 Lambda 지원 사용자 지정 리소스의 성공 또는 실패를 CloudFormation으로 다시 알려주는 코드가 포함되어 있습니다.

CodeBuild에서 CloudFormation으로 돌아가는 시그널링 코드는 다음과 같습니다.

– export UUID=1233244324 # A physical ID needed by CloudFormation

– |

    STATUS=’SUCCESS’

    if [ $CODEBUILD_BUILD_SUCCEEDING -ne 1 ] # Test if the build is failing

    then

    STATUS=’FAILED’

    fi

    cat <<EOF > /tmp/payload.json

    {

    “StackId”: “$cfn_stack_id”,

    “RequestId”: “$cfn_request_id”,

    “LogicalResourceId”:”$cfn_logical_resource_id”,

    “PhysicalResourceId”: “$UUID”,

    “Status”: “$STATUS”

    }

    EOF

    curl -vv -i -X PUT -H ‘Content-Type:’ -d “@/tmp/payload.json” “$cfn_signal_url”

 

사용해보세요

이 패턴을 보여주기 위해 작은 CloudFormation 템플릿을 만들었으며 코드는 GitHub 저장소에서 찾을 수 있습니다 .

스택은 다음을 수행합니다.

  • Amazon ECR 저장소를 생성합니다.
  • Lambda 지원 사용자 지정 리소스를 통해 CodeBuild 프로젝트를 실행하십시오. 그런 다음 CodeBuild 프로젝트는 다음을 수행합니다.

◦ Dockerfile을 기반으로 Docker 컨테이너 이미지를 만듭니다.

◦ 해당 컨테이너 이미지를 스택이 생성 한 Amazon ECR 저장소에 삽입합니다.

 

데모 CloudFormation 스택을 시작합니다.

주의! 검토 단계의 IAM기능에서 ‘AWS CloudFormation이 IAM 리소스를 생성 할 수 있음을 인정합니다.’ 라는 확인란을 선택해야 합니다.

CloudFormation 스택이 CREATE_COMPLETE 상태가 되면 Amazon ECR 콘솔에서 새 컨테이너 이미지를 사용할 수 있어야 합니다.

 

결론

실행 시간이 긴 컴퓨팅 환경이 필요한 경우 CodeBuild를 사용하여 AWS CloudFormation에 대한 커스텀 Lambda 지원 리소스를 확장 할 수 있습니다.

 

원문 URL: https://aws.amazon.com/ko/blogs/infrastructure-and-automation/using-a-long-lived-compute-resource-as-a-custom-resource-in-aws-cloudformation/

 

*메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.