Azure 개발자 CLI 문제 해결

이 문서에서는 Azure 개발자 CLI(azd)를 사용할 때 발생할 수 있는 일반적인 문제에 대한 솔루션을 제공합니다.

도움말 보기 및 피드백 제공

이 문서에서 원하는 내용을 찾을 수 없거나 피드백을 제공하려는 경우 Azure 개발자 CLI 토론에 질문을 게시할 수 있습니다.

Azure Developer CLI GitHub 리포지토리에서 GitHub 문제를 열어 버그를 보고할 수도 있습니다.

--debug 스위치 사용

작업 azd하는 동안 예기치 않은 문제가 발생하는 경우 스위치를 --debug 사용하여 명령을 다시 실행하여 추가 디버깅 및 진단 출력을 사용하도록 설정합니다.

azd up --debug

유용성을 향상시키기 위해 디버깅 출력을 로컬 텍스트 파일로 보낼 수도 있습니다. 이 방법을 사용하면 다른 모니터링 시스템에서 디버깅 정보를 수집할 수 있으며 GitHub에서 문제를 제출할 때도 유용할 수 있습니다.

Important

GitHub에서 디버그 로그를 제출하거나 다른 진단 시스템에 저장할 때 중요한 정보를 수정해야 합니다.

azd deploy --debug > "<your-file-path>.txt"

.azure 디렉터리

Azure Developer CLI는 디렉터리에 저장된 .azure 모든 디렉터리가 Azure 개발자 CLI 환경이라고 가정합니다. Azure CLI가 설치된 사용자의 홈 디렉터리에서 Azure Developer CLI 명령을 실행하지 마세요.

Azure에 로그인하지 않았거나 Visual Studio에서 토큰이 만료됨

Visual Studio에서 실행 azd init -t <template-name> 한 후 다음과 같은 오류가 발생합니다. "원격에 액세스하려면 이 리포지토리를 다시 인증해야 합니다OAuth 앱사용."Visual Studio

솔루션

실행 azd auth login 하여 액세스 토큰을 새로 고칩니다.

업데이트된 Azure 계정 권한이 새로 고쳐지지 않음 azd

기본적으로 azd Azure 자격 증명 및 권한을 캐시합니다. Azure 계정에 새 역할 및 권한이 할당되거나 추가 구독에 추가되는 경우 이러한 변경 내용이 즉시 반영 azd되지 않을 수 있습니다. 이 문제를 해결하려면 로그아웃한 다음 다음 명령을 사용하여 다시 azd 로그인합니다.

azd auth logout

azd auth login

명령의 프롬프트에 azd auth login 따라 로그인 프로세스를 완료하고 캐시된 자격 증명을 업데이트합니다.

에 대한 Cloud Shell 제한 사항 azd

Cloud Shell에서 실행하는 azd 데는 몇 가지 제한 사항이 있습니다.

Cloud Shell의 Docker 지원

Docker 디먼이 실행되고 있지 않으므로 Cloud Shell은 docker build 또는 run 명령 실행을 지원하지 않습니다. 자세한 내용은 Cloud Shell 문제 해결을 참조 하세요.

Cloud Shell 시간 제한

Cloud Shell은 장기 배포 또는 기타 장기 실행 작업 중에 시간이 초과할 수 있습니다. 세션이 유휴 상태가 되지 않는지 확인합니다. Cloud Shell 사용 제한을 참조 하세요.

Cloud Shell 인터페이스

Cloud Shell은 주로 명령줄 인터페이스이며 Visual Studio Code와 같은 통합 개발 환경보다 기능이 적습니다.

Cloud Shell에서 Docker 디먼에 연결할 수 없음

Cloud Shell은 컨테이너를 사용하여 셸 환경을 호스팅하므로 Docker 디먼을 실행해야 하는 작업은 허용되지 않습니다.

Cloud Shell에 다른 버전의 azd 설치

경우에 따라 Cloud Shell에서 이미 사용 중인 버전과 다른 버전을 azd 설치해야 할 수 있습니다. bash에서 이 작업을 수행하려면 다음을 수행합니다.

  1. 실행 mkdir -p ~/bin 하여 폴더가 ~/bin 있는지 확인합니다.
  2. 로컬 ~/azd 폴더가 있는지 확인하려면 실행 mkdir -p ~/azd 합니다.
  3. 실행 curl -fsSL https://aka.ms/install-azd.sh | bash -s -- --install-folder ~/azd --symlink-folder ~/bin --version <version> (<version> 기본적으로는 stable 가능하지만 릴리스된 특정 버전도 1.0.0 지정할 수 있음).

설치되면 기호적으로 연결된 버전 azd 이 기호적으로 연결된 ~/bin/usr/local/bin버전 azd 보다 우선합니다.

bash에서 Cloud Shell에 이미 설치된 버전을 azd 사용하도록 되돌리기:

  1. rm ~/bin/azd을 실행합니다.
  2. rm -rf ~/azd을 실행합니다.

솔루션

다른 호스트를 사용하여 docker 디먼이 필요한 작업을 수행합니다. 한 가지 옵션은 Cloud Shell 문제 해결 설명서에 설명된 대로 docker-machine을 사용하는 것입니다 .

Azure Bicep CLI 요구 사항

azd up Azure azd provision Bicep CLI의 최신 릴리스가 필요합니다. "오류: bicep 템플릿을 컴파일하지 못했습니다. Az PowerShell 모듈 bicep 빌드를 실행하지 못했습니다. 종료 코드: 1, stdout: , stderr: WARNING: 새 Bicep 릴리스를 사용할 수 있습니다. v0.4.1272."

솔루션

이전에는 Bicep을 설치하고 사용하기 azd 위한 필수 구성 요소였습니다. azd 이제 로컬 azd 범위 내에 Bicep이 자동으로 설치되고(전역적으로는 아님) 이 문제가 해결됩니다. 그러나 다른 버전을 사용하려는 경우 환경 변수 AZD_BICEP_TOOL_PATH 를 설정하여 필요한 버전의 위치를 가리킬 수 있습니다.

azd up 또는 azd provision 실패

상황이 때때로 와 함께 또는 .azd upazd provision 일반적인 오류는 다음과 같습니다.

  • "지역이 용량이 부족하여 Azure 지역에서 특정 리소스를 프로비전할 수 없습니다."
  • "관련 리소스 공급자가 해당 지역에 없습니다."

문제 해결 단계는 근본 원인에 따라 다를 수 있습니다.

솔루션

  1. Azure Portal로 이동합니다.

  2. 리소스 그룹(rg-your-environment-name<)을 찾습니다>.

  3. 배포를 선택하여 자세한 정보를 가져옵니다.

  4. 환경 이름과 동일한 환경 이름을 지정했는지 확인합니다.

  5. https://github.com/<your repo>/actions이동한 다음 파이프라인 실행의 로그 파일을 참조하여 자세한 내용을 확인합니다.

다른 리소스는 일반적인 Azure 배포 오류 문제 해결 - Azure Resource Manager를 참조하세요.

azd initsudo이 필요합니다.

azd 이전에는 azd version = azure-dev-cli_0.2.0-beta.1액세스 권한이 있는 폴더 drw-r--r--.azd 만듭니다.

이로 인해 Linux 설정(WSL, ssh-remote, devcontainer 등)에서 이 버전 또는 이전 버전을 사용하는 경우 이미 읽기 전용 모드의 폴더가 .azd 제공되므로 문제가 발생합니다.

솔루션

  1. 이미 제공된 .azd 폴더를 수동으로 삭제합니다.

    rm -r ~/.azd
    
  2. azd 올바른 액세스 수준으로 폴더를 다시 만들려면 실행 azd init 합니다.

azd monitor 개발 컨테이너용

azd monitor 는 개발 컨테이너를 개발 환경으로 사용하는 경우 현재 지원되지 않습니다.

Codespaces 환경에서 인증할 수 없음

Codespaces에서 인증 문제가 발생하는 경우 템플릿 Dockerfile에 명령이 sudo apt-get update && sudo apt-get install xdg-utils 포함되어 있는지 확인합니다. 이 xdg-utils 명령은 로그인할 수 있는 브라우저 탭을 엽니다.

성공 메시지에도 불구하고 Static Web Apps를 배포하지 못했습니다.

Azure Static Web Apps에 배포할 때 기본 azd up 출력에 작업이 성공했음을 나타낼 수 있지만 변경 내용이 실제로 배포되지 않은 경우 알려진 문제가 있습니다. 플래그를 사용하도록 설정된 명령을 실행 azd up 하여 이 문제를 진단할 --debug 수 있습니다. 출력 로그에 다음 메시지가 표시 될 수 있습니다.

Preparing deployment. Please wait...
An unknown exception has occurred

GitHub 작업에서 실행될 때 azd 이 문제가 발생할 가능성이 가장 높습니다. 해결 방법으로 사이트를 빌드한 후 빌드 폴더에 복사 staticwebapp.config.json 합니다. 사전 패키지 또는 미리 배포 된 명령 후크를 사용하여 이 단계를 자동화할 수 있습니다. 이를 통해 azd 명령 워크플로의 다양한 지점에서 사용자 지정 스크립트를 실행할 수 있습니다.

제품 팀이 이 문제를 해결하기 위해 노력하고 있습니다.

GitHub Actions 오류 - "키 자격 증명 모음에 대한 비밀 가져오기 권한이 없습니다."

로컬 및 GitHub Actions에서 리소스를 프로비전할 때 동일한 환경 또는 리소스 그룹 이름을 공유하면 Key Vault 서비스에서 오류가 Does not have secrets get permission on key vault.. 발생할 수 있습니다. Key Vault는 Bicep을 통한 증분 권한 업데이트를 지원하지 않습니다. 즉, GitHub Actions 워크플로가 로컬 사용자의 액세스 정책 권한을 덮어씁니다.

이 문제에 권장되는 해결 방법은 로컬 개발 및 GitHub Actions 워크플로에 별도의 환경 이름을 사용하는 것입니다. FAQ 페이지에서 명령을 사용하여azd env 여러 환경을 사용하는 방법에 대해 자세히 알아보세요.

텍스트 기반 브라우저 지원

텍스트 기반 브라우저는 현재 .에서 지원 azd monitor되지 않습니다.

azd pipeline config Windows에서 Java 템플릿용 AzDo 사용

Windows에서 Java용 AzDo 템플릿으로 실행할 azd pipeline config 때 오류가 발생할 수 있습니다. 예를 들어 다음을 수행했습니다.

  1. Windows에서 다음을 실행합니다.

    azd init --template Azure-Samples/todo-java-mongo
    azd pipeline config
    
  2. 다음 오류가 발생했습니다.

    Screenshot showing the error received when running azd pipeline config with AzDo for Java on Windows.

솔루션

이것은 알려진 문제입니다. 이 문제를 해결하는 동안 다음 명령을 시도합니다.

git update-index --chmod=+x src/api/mvnw && git commit -m "Fix executable bit permissions" && git push

failed packaging service 'api': failed invoking action 'package', failed to run NPM script build, signal: segmentation fault Apple Silicon에서 업그레이드한 azd 후 오류 발생(M1/M2)

경우에 따라 x86_64 버전 azd 에서 ARM64 이진 파일로 업그레이드하면 x86_64 버전 azd으로 빌드된 템플릿에 오류가 발생할 수 있습니다. 템플릿이 ARM64 프로세스에 x86_64 빌드된 바이트 코드를 로드하려고 할 수 있는 버전을 v8-compile-cache 사용하기 때문입니다.

이 문제를 해결하려면 영향을 받는 프로젝트의 패키지를 업그레이드 v8-compile-cache 합니다.

  1. 실패한 서비스(있는 경우failed packaging service 'api')src/api로 디렉터리를 변경합니다.
  2. npm upgrade v8-compile-cache을 실행합니다.
  3. 디렉터리를 리포지토리의 루트로 변경하고 명령(예: 또는azd up)을 azd 다시 실행합니다. azd package

azd pipeline config 조건부 액세스 정책으로 인한 오류

실행할 azd pipeline config때 다음과 같은 오류가 발생할 수 있습니다.

ERROR: failed to create or update service principal: failed retrieving application list, failed executing request: http call(https://login.microsoftonline.com/common/oauth2/v2.0/token)(POST) error: reply status code was 400:
{"error":"invalid_grant","error_description":"AADSTS50005: User tried to log in to a device from a platform (Unknown) that's currently not supported through Conditional Access policy. Supported device platforms are: iOS, Android, Mac, and Windows flavors.\r\nTrace ID: be3438c1-42fc-4c37-96d8-0e723ac54f01\r\nCorrelation ID: f535565f-9f3c-4014-ad65-403f514bf892\r\nTimestamp: 2022-12-16 21:10:37Z","error_codes":[50005],"timestamp":"2022-12-16 21:10:37Z","trace_id":"be3438c1-42fc-4c37-96d8-0e723ac54f01","correlation_id":"f535565f-9f3c-4014-ad65-403f514bf892"}

이 오류는 조건부 액세스 정책의 Microsoft Entra 테넌트 사용과 관련이 있습니다. 특정 정책을 사용하려면 지원되는 디바이스 플랫폼에 로그인해야 합니다.

또한 디바이스 코드 메커니즘을 사용하여 로그인되어 Microsoft Entra ID가 디바이스 플랫폼을 올바르게 검색할 수 없으므로 이 오류가 발생할 수 있습니다.

솔루션

워크플로를 구성하려면 사용자를 대신하여 Azure에 배포할 수 있는 권한을 GitHub에 부여해야 합니다. 라는 AZURE_CREDENTIALSGitHub 비밀에 저장된 Azure 서비스 주체를 만들어 GitHub에 권한을 부여합니다. 단계에 대한 Codespace 호스트를 선택합니다.

  1. 오류 메시지에 따라 지원되는 것으로 나열된 디바이스에서 실행 중인지 확인합니다.

  2. 플래그 --use-device-code=false 가 추가된 상태에서 다시 실행 azd auth login 합니다.

    azd auth login --use-device-code=false
    
  3. 로그인한 후 메시지 localhost refused to connect 와 함께 오류가 표시될 수 있습니다. 그렇다면:

    1. URL을 복사합니다.
    2. 새 Codespaces 터미널에서 실행 curl '<pasted url>' (따옴표로 URL)합니다.

    원래 터미널에서 로그인이 성공해야 합니다.

  4. 로그인한 후 다시 실행 azd pipeline config합니다.