작업 크기 초과에 대한 오류 해결
이 문서에서는 JobSizeExceededException
및 DeploymentJobSizeExceededException
오류를 해결하는 방법에 대해 설명합니다. 작업 크기 초과 오류는 Bicep 파일 또는 ARM(Azure Resource Manager) 템플릿을 배포할 때 발생할 수 있습니다.
증상
템플릿을 배포할 때 배포 제한이 초과되었다는 오류가 표시됩니다.
원인
이 오류는 배포가 허용된 크기 제한을 초과할 때 발생합니다. 일반적으로 템플릿 또는 배포 작업이 너무 클 때 나타납니다. 배포를 위해 크기가 확인되기 전에 템플릿이 압축되므로 유효 한도가 템플릿의 실제 크기보다 클 수 있습니다.
배포 작업 크기 제한은 요청에 대한 메타데이터를 포함하여 압축 후 1MB입니다. 큰 템플릿의 경우 메타데이터와 템플릿의 결합된 크기가 이 제한을 초과할 수 있습니다.
압축된 템플릿 크기 자체는 4MB를 초과할 수 없으며 각 개별 리소스 정의는 압축 후 1MB를 초과할 수 없습니다. 이러한 제한은 루프를 사용하여 모든 변수 및 매개 변수에 대해 확인된 값을 포함하는 여러 인스턴스를 만드는 리소스 정의에 대한 확장 후 템플릿의 최종 상태에 적용됩니다.
다른 템플릿 제한은 다음과 같습니다.
- 매개 변수 256개
- 변수 256개
- 리소스 800개(인쇄 매수 포함)
- 출력 값 64개
- 템플릿 식의 문자 24,576자
해결 방법 1: 이름 크기 줄이기
해결 방법 2: 템플릿 단순화
파일이 다양한 리소스 형식을 배포하는 경우 모듈로 나누는 것을 고려합니다. 리소스 종류를 논리 그룹으로 나누고 각 그룹에 대해 모듈을 추가합니다. 예를 들어 많은 네트워킹 리소스를 배포해야 하는 경우 해당 리소스를 모듈로 이동할 수 있습니다.
다른 리소스를 암시적 종속성으로 설정하고 모듈의 출력에서 값을 얻을 수 있습니다.
Bicep 모듈 대신 템플릿 사양을 사용합니다. Bicep 모듈은 중첩된 템플릿을 사용하여 단일 ARM 템플릿으로 변환됩니다.
해결 방법 3: 종속성 사용
복잡한 종속성은 데이터 제한을 빠르게 사용할 수 있습니다. 예를 들어 n 리소스 루프가 n개 리소스의 다른 루프에 의존하는 경우 O(n²) 데이터를 저장합니다. 반면, 한 루프의 각 리소스가 다른 루프의 해당 리소스에만 의존하는 경우 O(n) 데이터가 생성됩니다. 이러한 차이는 미묘해 보일 수 있지만 스토리지 영향은 매우 빠르게 증가합니다.
해결 방법 4: 압축할 수 없는 데이터 줄이기
인증서 또는 이진 파일과 같은 많은 양의 압축할 수 없는 데이터 또는 템플릿 또는 매개 변수의 압축 비율이 낮은 데이터를 포함하면 크기 제한이 빠르게 소비됩니다.