M1 맥에서 Azure Function Python 실행하는 방법

Azure Functions가 이제 다양한 운영체제에서 로컬 개발환경을 지원합니다. Microsoft는 Azure Functions를 Windows뿐만 아니라 macOS와 Linux 환경에서도 지원하고 있습니다.
하지만 M1 맥북에서 Azure Function을 실행시에 Microsoft.Azure.WebJobs.Script: Architecture Arm64 is not supported for language python. 이란 에러를 볼 수 있습니다. 본 블로그에서는 해당 에러를 해결하는 방법에 대해서 소개하도록 하겠습니다.

Arm64에서 Azure Function Python을 개발

다음은 M1 맥 로컬환경에서 Visual Studio Code를 이용해서 Azure Function Python을 개발하는 방법을 보여주고 있습니다.

  • 가상환경 설정 후 Visual Studio Code를 실행
  • Azure Function 추가
  • 프로젝트를 생성할 폴더 선택
  • 개발할 언어 선택: 파이썬
  • Azure Function의 접근권한 설정
  • 생성 후에 Run -> Start Debug를 통해 로컬 개발환경에서 실행할 수 있습니다.
  • 실행시 다음과 같은 에러를 만나게 됩니다.
  • Azure 공식 문서[1]에는 ARM64 디바이스에는 local Python function development를 지원하지 않는다고 나와있습니다. 이를 위해서 Rosetta를 이용하여 실행하는 방법에 대해서 설명하고 있습니다.
  • Application 에서 사용하는 터미널에서 Get Info를 선택합니다. 저는 iTerm을 기준으로 설명하겠습니다.

  • Open using Rosetta를 선택합니다.
  • 새로운 터미널을 열어 arch를 확인합니다. i386이 나온 것을 확인 할 수 있습니다. Open using Rosetta를 선택하지 않으면 arm64 로 나타납니다.
  • 공식문서[1]에 따라 homebrew, Python, Azure Functions Core Tools를 재설치 합니다.
  • homebrew를 설치합니다.
  • brew를 이용하여 python3도 설치해줍니다.
  • Azure Function Tools도 설치합니다.
  • 설치된 Azure Function Tools의 버전을 기억해두세요.
  • 사용하는 터미널의 설정파일의 다음 내용을 추가합니다.
# rosetta terminal setup
if [ $(arch) = "i386" ]; then
    alias python="/usr/local/bin/python3"
    alias brew86='/usr/local/bin/brew'
    alias pyenv86="arch -x86_64 pyenv"
    alias func="/usr/local/Cellar/azure-functions-core-tools@4/4.0.5198/func"
fi
  • 이전 프로젝트 폴더에서 가상환경을 새로 생성후에 Visual Studio Code를 실행합니다.
  • Debugging을 실행합니다.
  • 다음과 같이 정상적으로 Azure Function이 실행되는 것을 확인 할 수 있습니다.
참고내용

[1] Work with Azure Functions Core Tools | Microsoft Learn

Leave a Comment