AWS CDK 자동 교차 스택 참조 제거
8355 단어 cdk
자동 교차 스택 참조란 무엇입니까?
여러 스택에서 리소스를 사용할 때 CDK에서 생성되는 자동 참조는 편리하지만 이러한 방식으로 참조되는 리소스를 제거하려는 경우 배포를 차단할 수 있습니다. 다음과 같은 오류가 표시됩니다.
Export Stack1:ExportsOutputFnGetAtt-****** cannot be deleted as it is in use by Stack1
stack1에 Bucket이 있고 stack2가 해당 bucket.bucketName을 참조한다고 가정해 보겠습니다.
GitHub repository에서 전체 데모 코드를 볼 수 있습니다.
export class Stack1 extends Stack {
readonly bucket: s3.Bucket
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props)
// Let's say there is a Bucket in the stack1, and the stack2 references its bucket.bucketName.
const bucket = new s3.Bucket(this, 'bucket', {
removalPolicy: RemovalPolicy.DESTROY,
autoDeleteObjects: true,
})
this.bucket = bucket
}
}
export class Stack2 extends Stack {
constructor(scope: Construct, id: string, props: Stack2Props) {
super(scope, id, props)
// comment out the following line and re-deploy to see the error
// ❌ Stack1 failed: Error: The stack named Stack1 failed to deploy: UPDATE_ROLLBACK_COMPLETE
new CfnOutput(this, 'bucketName', {
value: props.bucket.bucketName,
})
}
}
npx cdk deploy --all을 실행하여 모든 스택 배포
더 이상 사용하지 않기 때문에 이제 버킷을 제거하려고 합니다. stack2가 아직 사용 중인 상태에서 stack1.bucket을 제거하는 것은 안전하지 않습니다.
이를 재현하려면 stack1.bucket에 대한 모든 참조를 제거한 다음
npx cdk deploy --all
를 실행하여 다시 배포할 수 있습니다. 다음 오류가 표시됩니다.❌ Stack1 failed: Error: The stack named Stack1 failed to deploy: UPDATE_ROLLBACK_COMPLETE
따라서 이것으로부터 자신을 차단 해제하는 것은 두 단계 프로세스입니다. 작동 방식은 다음과 같습니다.
배포 1: 관계 끊기
export class Stack1 extends Stack {
readonly bucket: s3.Bucket
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props)
// Let's say there is a Bucket in the stack1, and the stack2 references its bucket.bucketName.
const bucket = new s3.Bucket(this, 'bucket', {
removalPolicy: RemovalPolicy.DESTROY,
autoDeleteObjects: true,
})
this.bucket = bucket
// Uncomment the following line
// This will make sure the CloudFormation Export continues to exist while the relationship between the two stacks is being broken.
this.exportValue(bucket.bucketName)
}
}
npx cdk deploy --all
배포 2: 리소스 제거
즉, 예상치 못한 AWS 비용을 피하기 위해 깨끗한 모든 리소스를 제거하는 것을 잊지 마십시오.
npx cdk destroy --all
읽어 주셔서 감사합니다! 도움이 되었기를 바랍니다. 질문이 있으시면 댓글을 남겨주세요. 나는 가능한 한 빨리 회신하려고 노력할 것입니다.
원본 게시물은 My Blog에서 찾을 수 있습니다.
Reference
이 문제에 관하여(AWS CDK 자동 교차 스택 참조 제거), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/binhbv/aws-cdk-removing-automatic-cross-stack-references-beb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)