파일 업로드 API 만들기

들어가며

본 포스팅에서는 Azure Function을 이용하여 파일을 업로드하는 방법에 대해서 소개하겠습니다. 본 예제에서는 Azurite을 이용하여 Local Blob Service에 저장하도록 하겠습니다.

준비사항
  • Visual Studio Code
  • Azure Storage Explorer
개발순서

1. upload-file 이란 폴더를 생성 후, python3.9 버전으로 가상환경을 생성합니다.

실행된 Visual Studio Code의 화면은 다음과 같습니다.

2. Azure Plugin을 선택한 후 WORKSPACE에서 Create Function을 클릭합니다.

3. 다음과 같이 Function 을 만들어 줍니다.

Function 을 만들게 되면 아래와 같이 upload 폴더, host.json, local.settings.json, requirements.txt가 생성된 것을 볼 수 있습니다.

4. Azurite의 Blob Servcie 를 실행합니다.

Blob Service가 정상적으로 실행되면 우측 하단에 메시지를 확인 할 수 있으며, 해당 폴더내에 azureStorage가 생성된 것을 확인 할 수 있습니다. Azurite에 대한 설명은 다음 포스팅을 참고하시기 바랍니다.

6. Azure Storage Explorer를 이용하여 container1을 생성합니다.

7. Azurite Emulator를 사용하는 경우 AzureWebJobStorage를 “UseDevelopmentStorage=true”로 설정합니다. HTTP 이외의 Trigger를 사용하는 경우에도 해당 설정을 사용합니다.

참고: https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-local

8. requirements.txt에 azure-storage-blob Package를 추가합니다.

9. __init__ 코드를 다음과 같이 변경합니다.

아래 코드는 http request로 파일을 업로드하여 Azure Blob Storage에 저장하는 코드입니다. Azurit을 사용하기 때문에 connection string 값은 DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1; 을 사용하였습니다.

참고: https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite?tabs=visual-studio

참고: https://stackoverflow.com/questions/55758899/azure-cloud-functions-http-file-upload-with-python

https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-upload-python

10. 테스트에 사용 될 test.txt를 생성하고, Azure Function을 실행(디버깅) 합니다.

11. CURL -F 옵션을 사용하여 파일을 업로드 한다.
참고: https://findstar.pe.kr/2018/05/13/upload-file-on-curl/

아래 화면과 같이 정상적으로 함수가 실행된 것을 확인 할 수 있다.

Azure Storage Explorer를 통해서 container1을 보면 test.txt가 업로드 된 것을 확인 할 수 있습니다.

참고자료
  • https://learn.microsoft.com/en-us/azure/developer/javascript/how-to/with-web-app/azure-function-file-upload
  • https://www.c-sharpcorner.com/article/uploading-file-to-azure-blob-using-python/

Leave a Comment