gcloud beta terraform vet 문제 해결

예상한 위반 사항으로 오류가 발생하지 않는 이유는 무엇인가요?

검사 논리를 테스트할 때 오류가 발생해야 하지만 제약조건으로 오류가 발생하지 않는 경우에는 다음 중 하나 이상의 결과 때문일 수 있습니다.

  • 정책 라이브러리가 올바르게 설정되었나요? 정책 라이브러리에 policies/constraints 디렉터리가 있는지 확인합니다. 여기에는 위반을 일으키려는 제약조건이 포함됩니다.
  • 위반을 포함하는 Terraform 리소스가 지원되는 리소스인가요? gcloud beta terraform vet은 해당 버전에서 지원되는 리소스에 대해서만 위반 사항을 확인할 수 있습니다. --verbosity=debug로 명령어를 다시 실행하고 unsupported resource: google_resource_name과 같은 메시지가 표시되는지 확인합니다. 또는 리소스가 지원되는 리소스 목록에 있는지 확인해도 됩니다.
  • 제약조건이 올바른 Terraform 리소스를 대상으로 하나요?

    1. 제약조건의 kind 필드를 확인합니다. GCPAppengineLocationConstraintV1과 같이 표시되어야 합니다.
    2. policies/templates 디렉터리에서 spec.crd.spec.names.kind에 대해 동일한 값을 갖는 정책을 검색합니다.
    3. rego 필드에서 asset.asset_type == "appengine.googleapis.com/Application"과 비슷한 항목을 찾습니다. 이것은 제약조건의 대상이 되는 CAI 애셋 유형입니다.
    4. CAI 애셋 유형이 지원되는 리소스 목록에 있는지 확인합니다.

정의된 프로젝트가 없다는 오류가 표시되는 이유는 무엇인가요?

리소스 상위 항목은 정확한 CAI 애셋 이름을 빌드하기 위해 사용됩니다. gcloud beta terraform vet이 CAI 애셋의 상위 항목을 자동으로 확인할 수 없는 경우 project: required field is not set이라는 오류를 반환합니다. --project 플래그를 사용하여 기본 프로젝트를 제공하거나 gcloud config를 사용해서 프로젝트를 설정할 수 있습니다.

getting resource ancestry for project PROJECT_ID: googleapi: Error 403: The caller does not have permission, forbidden 오류가 표시되는 이유는 무엇인가요?

--verbosity=debug와 함께 명령어를 실행하고 Terraform is using this identity:와 같은 메시지를 찾습니다. 그 뒤에 API 요청에 사용되는 계정인 이메일 주소가 와야 합니다.