클라우드에서 Azure Blob (PDF)을 읽는 가장 실용적인 방법은 무엇입니까?
나는 다소 초보자이며 아직 클라우드 기반 솔루션을 다루지 않았습니다.
내 프로그램은 PDFBox 라이브러리를 사용하여 PDF에서 데이터를 추출하고 데이터를 기반으로 파일 이름을 바꿉니다. 현재는 모두 로컬이지만 결국 Azure 함수로 배포해야합니다. PDF는 Azure Blob 컨테이너에 저장됩니다. Azure Functions에 대한 Azure Blob Storage 트리거는이 선택의 중요한 이유입니다.
물론 Blob을 로컬로 다운로드하여 읽을 수 있지만 프로그램은 클라우드에서만 실행되어야합니다. Java를 사용하여 직접 blob을 읽으려고 시도했지만 이로 인해 의미없는 데이터가 생성되어 PDFbox와 호환되지 않았습니다. 지금 내 계획은 클라우드의 다른 곳 (예 : OneDrive, Azure 파일 저장소)에 파일을 임시 저장하고 거기에서 열어 보는 것입니다. 그러나 이것은 지나치게 지저분한 솔루션으로 빠르게 바뀔 수있는 것처럼 보입니다. 내 질문 :
(1)이 추가 단계가 필요하지 않도록 Blob을 CloudBlockBlob이 아닌 파일로 열 수있는 방법이 있습니까?
(2) 그렇지 않다면이 경우에 권장되는 임시 저장소는 무엇입니까?
(3)이 문제에 접근 할 수있는 다른 방법이 있습니까?
답변
Azure 함수를 계획하고 있으므로 Blob 트리거 / 바인딩 을 사용 하여 바이트를 직접 가져올 수 있습니다. 그런 다음 PDFBox PdfDocument로드 방법을 사용하여 개체를 직접 빌드 할 수 있습니다 PDDocument.load(content)
. 로드하기 위해 파일을 저장하는 데 임시 저장소가 필요하지 않습니다.
@FunctionName("blobprocessor")
public void run(
@BlobTrigger(name = "file",
dataType = "binary",
path = "myblob/{name}",
connection = "MyStorageAccountAppSetting") byte[] content,
@BindingName("name") String filename,
final ExecutionContext context
) {
context.getLogger().info("Name: " + filename + " Size: " + content.length + " bytes");
PDDocument doc = PDDocument.load(content);
// do your stuffs
}