본문 바로가기

개발하자

AWS Cloud Formation - 속성 변경 무시 - Terraform 등가에서 'ignore_changes'?

반응형

AWS Cloud Formation - 속성 변경 무시 - Terraform 등가에서 'ignore_changes'?

내가 만들었다고 가정하자

    CognitoUserPoolIdentityProviderGoogle:
      Type: AWS::Cognito::UserPoolIdentityProvider
      Properties:
        ProviderName: Google
        AttributeMapping:
          email: emailAddress
        ProviderDetails:
          client_id: xxxx
          client_secret: yyyy
          authorize_scopes: profile email openid phone
        ProviderType: Google
        UserPoolId:
          Ref: CognitoUserPoolUserPool

나중에 누군가 및 에 수동으로 업데이트합니다. Cloud Formation을 다시 실행하면 수동 변경 내용을 덮어쓰고 값을 및 로 되돌립니다.

어떻게 하면 피할 수 있을까요? 예를 들어 리소스가 될 수 있습니다.

제가 찾고 있는 것은 기본적으로 테라폼의 기능입니다




CFN에는 "변화 무시"가 없다. CFN이 관리하는 모든 리소스를 제어할 수 없는 상태에서 수동으로 수정하는 것입니다. 수동 변경으로 인해 많은 문제가 발생할 수 있으며, 그 중 하나는 사용자가 설명하는 것입니다.

당신이 관찰하고 있는 것에 대한 기술적 용어는 a이다. 그것을 관리하는 몇 가지 방법이 있다. 그러나 업데이트하기 전에 스택에서 먼저 실행해야 합니다.

당신의 경우 드리프트가 그렇게 나쁘지 않기 때문에, 당신은 다음과 같다:

  • 수동 변경 사항과 일치하도록 CFN 템플릿을 수동으로 업데이트하고 스택을 업데이트합니다
  • 수동으로 리소스를 원래 상태로 수정한 다음 CFN을 통해 모든 업데이트를 적용합니다.



실제로 이 문제는 매우 자주 발생하는 문제입니다. 다음은 다른 예와 해결 방법입니다:

CloudFormation에 CloudFront 배포를 선언하고 첨부된 CNAMES/Cert를 앱으로 관리합니다(즉시 첨부).

따라서 이 '엔지니어링' 문제를 해결하기 위해 구현한 더 나은 자동 방식은 다음과 같습니다:

  1. 외부에서 변경되는 모든 값을 템플릿의 매개 변수로 선언합니다(위에서 설명한 경우의 CNAME 목록)
  2. 변경이 필요할 때마다 => 자동 배포 파이프라인을 트리거합니다
  3. 파이프라인은 먼저 현재 배포된 인스턴스에서 값을 검색합니다(앱에 의해 첨부된 CNAMES 값 목록)
  4. 그런 다음 이 목록을 매개 변수로 전달하는 클라우드 형성 템플릿 업데이트

반응형