8.5. 사용법
예를 들어 camelazure
스토리지 계정의 container1
에 있는 블록 Blob hello.txt
에서 Blob 콘텐츠를 다운로드하려면 다음 스니펫을 사용합니다.
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accessKey=yourAccessKey"). to("file://blobdirectory");
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accessKey=yourAccessKey").
to("file://blobdirectory");
8.5.1. 구성 요소 프로듀서에서 평가한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
header | 변수 이름 | 유형 | 작업 | 설명 |
---|---|---|---|---|
|
|
| All | {@link RuntimeException}을 초과하는 선택적 타임아웃 값입니다. |
|
|
| 컨테이너 및 Blob과 관련된 작업 | 컨테이너 또는 Blob과 연결할 메타데이터입니다. |
|
|
|
|
이 컨테이너의 데이터를 공개적으로 사용할 수 있는 방법을 지정합니다. 공용 액세스 권한 없음에 대해 |
|
|
| 컨테이너 및 Blob과 관련된 작업 | 여기에는 다양한 요청의 성공적인 작업이 있는 조건에 대한 성공적인 작업을 제한하는 값이 포함됩니다. 이러한 조건은 전적으로 선택 사항입니다. |
|
|
|
| 특정 Blob 나열에 대한 세부 정보 |
|
|
|
| 결과를 필터링하여 이름이 지정된 접두사로 시작하는 Blob만 반환합니다. 모든 Blob을 반환하려면 null일 수 있습니다. |
|
|
|
| 모든 BlobPrefix 요소를 포함하여 반환할 Blob의 최대 수를 지정합니다. 요청이 maxResultsPerPage를 지정하지 않거나 5,000보다 큰 값을 지정하는 경우 서버는 최대 5,000개의 항목을 반환합니다. |
|
|
|
| {@link BlobContainerClient} 개체에서 listBlobsFlatSegment에 대한 호출 동작을 구성하는 데 사용할 수 있는 옵션을 정의합니다. |
|
|
|
| 작업 집합에 대한 추가 매개변수입니다. |
|
|
|
| AccessTier에 대한 값을 정의합니다. |
|
|
| 업로드 Blob과 관련된 대부분의 작업 | 블록 콘텐츠의 MD5 해시입니다. 이 해시는 전송 중에 블록의 무결성을 확인하는 데 사용됩니다. 이 헤더를 지정하면 스토리지 서비스에서 이 헤더 값과 도달한 콘텐츠의 해시를 비교합니다. 이 MD5 해시는 Blob으로 저장되지 않습니다. 두 해시가 일치하지 않으면 작업이 실패합니다. |
|
|
| 페이지 Blob과 관련된 작업 | {@link PageRange} 오브젝트입니다. 페이지가 512바이트 경계로 정렬되어야 하는 경우 시작 오프셋은 512의 모듈러스여야 하며 종료 오프셋은 512 - 1의 모듈러스여야 합니다. 유효한 바이트 범위의 예는 0-511, 512-1023 등입니다. |
|
|
|
|
가 |
|
|
|
|
가 |
|
|
|
|
가 |
|
|
|
| 반환할 블록 유형을 지정합니다. |
|
|
|
| 최대 8TB 페이지 Blob의 최대 크기를 지정합니다. 페이지 Blob 크기는 512바이트 경계에 맞게 조정되어야 합니다. |
|
|
|
| 요청을 추적하는 데 사용할 수 있는 사용자 제어 값입니다. 시퀀스 번호의 값은 0에서 2^63 - 1. 기본값은 0입니다. |
|
|
|
| 이 Blob에서 스냅샷을 삭제하는 동작을 지정합니다. \{@code Include}는 기본 Blob 및 모든 스냅샷을 삭제합니다. \{@code Only}는 스냅샷만 삭제합니다. 스냅샷이 삭제되는 경우 null을 전달해야 합니다. |
|
|
|
| 서비스에서 반환해야 하는 데이터를 지정하는 {@link ListBlobContainersOptions}입니다. |
|
|
|
| 파일 다운로드에 사용할 {@link ParallelTransferOptions}. 병렬 전송 매개변수 수가 무시됩니다. |
|
|
|
| 다운로드한 Blob이 저장되는 파일 디렉터리입니다. |
|
|
|
| URL 다운로드 링크의 기본 만료(millis)를 재정의합니다. |
|
|
| Blob 관련 작업 | 교환 헤더에서 Blob 이름을 재정의/설정합니다. |
|
|
| 컨테이너 및 Blob과 관련된 작업 | 교환 헤더에서 컨테이너 이름을 재정의/설정합니다. |
|
|
| All | 실행할 생산자 작업을 지정합니다. 생산자 작업과 관련된 이 페이지의 문서를 참조하십시오. |
|
|
|
| 결과를 필터링하여 이름이 지정된 정규식과 일치하는 Blob만 반환합니다. 모두 반환하려면 null일 수 있습니다. 접두사와 regex가 모두 설정된 경우 regex는 우선 순위를 사용하고 접두사는 무시됩니다. |
|
|
|
| 시작 시간 후에 대략 이벤트를 반환하도록 결과를 필터링합니다. 참고: 이전 시간에 속한 몇 개의 이벤트도 반환할 수 있습니다. 이 시간에 속하는 몇 가지 이벤트가 누락될 수 있습니다. 한 시간 동안의 모든 이벤트를 반환하려면 시작 시간을 1시간으로 반올림합니다. |
|
|
|
| 결과를 필터링하여 종료 시간 이전에 약 이벤트를 반환합니다. 참고: 다음 시간에 속하는 몇 개의 이벤트도 반환할 수 있습니다. 이 시간에 속하는 몇 가지 이벤트가 누락될 수 있습니다. 한 시간 동안의 모든 이벤트를 반환하려면 종료 시간을 1시간으로 반올림합니다. |
|
|
|
| 이를 통해 서비스 호출 중에 10.0.0.1 파이프라인을 통과하는 추가 컨텍스트가 제공됩니다. |
|
|
|
| 복사 Blob 작업에서 소스 계정 이름으로 사용할 소스 Blob 계정 이름입니다. |
|
|
|
| 복사 Blob 작업에서 소스 컨테이너 이름으로 사용할 소스 Blob 컨테이너 이름입니다. |
8.5.2. 구성 요소 프로듀서 또는 소비자가 설정한 메시지 헤더 링크 복사링크가 클립보드에 복사되었습니다!
header | 변수 이름 | 유형 | 설명 |
---|---|---|---|
|
|
| Blob의 액세스 계층입니다. |
|
|
| Chrony: Blob의 액세스 계층이 마지막으로 변경된 경우입니다. |
|
|
| Blob의 아카이브 상태. |
|
|
| Blob의 생성 시간입니다. |
|
|
| 페이지 Blob의 현재 시퀀스 번호입니다. |
|
|
| Blob의 크기입니다. |
|
|
| Blob의 유형입니다. |
|
|
| Blob에 지정된 캐시 컨트롤입니다. |
|
|
| 추가 Blob에 커밋된 블록 수 |
|
|
| Blob에 지정된 콘텐츠 배치입니다. |
|
|
| Blob에 지정된 콘텐츠 인코딩입니다. |
|
|
| Blob에 지정된 콘텐츠 언어입니다. |
|
|
| Blob에 지정된 콘텐츠 MD5입니다. |
|
|
| Blob에 지정된 콘텐츠 유형입니다. |
|
|
| Blob의 마지막 복사 작업이 완료된 date입니다. |
|
|
| Blob에 대한 마지막 증분 복사 스냅샷의 스냅샷 식별자입니다. |
|
|
| Blob에서 수행되는 마지막 복사 작업의 식별자입니다. |
|
|
| Blob에서 수행된 마지막 복사 작업의 진행률입니다. |
|
|
| Blob에서 수행된 마지막 복사 작업의 소스입니다. |
|
|
| Blob에서 수행되는 마지막 복사 작업의 상태. |
|
|
| Blob의 마지막 복사 작업에 대한 설명입니다. |
|
|
| Blob의 E 태그 |
|
|
| Blob의 액세스 계층이 Blob의 속성에서 유추되었는지를 나타내는 플래그입니다. |
|
|
| Blob이 증분적으로 복사되었는지 여부를 나타내는 플래그입니다. |
|
|
| 서버에서 Blob의 콘텐츠가 암호화되었는지 여부를 나타내는 플래그입니다. |
|
|
| <!- Blob이 마지막으로 수정된 경우입니다. |
|
|
| Blob에 대한 임대 유형입니다. |
|
|
| 리스가 Blob에 대한 상태입니다. |
|
|
| Blob에 리스 상태. |
|
|
| Blob과 관련된 추가 메타데이터입니다. |
|
|
| 블록이 블록 Blob에 커밋된 오프셋입니다. |
|
|
|
작업 |
|
|
|
|
|
|
| 사용자가 사용할 수 있는 구문이 아닌 httpHeaders를 반환합니다. |
8.5.3. 고급 Azure Storage Blob 구성 링크 복사링크가 클립보드에 복사되었습니다!
Camel 애플리케이션이 방화벽 뒤에서 실행 중이거나 BlobServiceClient
인스턴스 구성을 더 많이 제어해야 하는 경우 자체 인스턴스를 생성할 수 있습니다.
그런 다음 Camel azure-storage-blob
구성 요소 구성에서 이 인스턴스를 참조합니다.
from("azure-storage-blob://cameldev/container1?blobName=myblob&serviceClient=#client") .to("mock:result");
from("azure-storage-blob://cameldev/container1?blobName=myblob&serviceClient=#client")
.to("mock:result");
8.5.4. 레지스트리에서 BlobServiceClient 클라이언트 자동 검색 링크 복사링크가 클립보드에 복사되었습니다!
구성 요소는 BlobServiceClient console이 레지스트리에 있는지 감지할 수 있습니다. 해당 유형의 유일한 인스턴스인 경우 이 인스턴스가 클라이언트로 사용되며 위의 예제와 같이 uri 매개변수로 정의할 필요가 없습니다. 이 기능은 끝점을 더 스마트하게 구성하는 데 매우 유용할 수 있습니다.
8.5.5. Azure Storage Blob Producer 작업 링크 복사링크가 클립보드에 복사되었습니다!
Camel Azure Storage Blob 구성 요소는 생산자 측에서 다양한 작업을 제공합니다.
서비스 수준에서의 작업
이러한 작업의 경우 accountName
이 필요합니다.
작업 | 설명 |
---|---|
| Blob의 콘텐츠를 가져옵니다. 이 작업의 출력을 Blob 범위로 제한할 수 있습니다. |
| Blobs 및 스토리지 계정의 Blob 메타데이터에 발생하는 모든 변경 사항의 트랜잭션 로그를 반환합니다. 변경 피드는 이러한 변경에 대한 순서, 보장, 지속성, 변경 불가능, 읽기 전용 로그를 제공합니다. |
컨테이너 수준에서의 작업
이러한 작업의 경우 accountName
및 containerName
이 필요합니다.
작업 | 설명 |
---|---|
| 스토리지 계정 내에 새 컨테이너를 생성합니다. 동일한 이름의 컨테이너가 이미 있는 경우 생산자는 이를 무시합니다. |
| 스토리지 계정에서 지정된 컨테이너를 삭제합니다. 컨테이너가 없으면 작업이 실패합니다. |
| 이 컨테이너의 Blob 목록을 반환하고 폴더 구조가 평면화됩니다. |
Blob 수준의 작업
이러한 작업의 경우 accountName
,containerName
및 blobName
이 필요합니다.
작업 | Blob 유형 | 설명 |
---|---|---|
| Common | Blob의 콘텐츠를 가져옵니다. 이 작업의 출력을 Blob 범위로 제한할 수 있습니다. |
| Common | Blob을 삭제합니다. |
| Common | 전체 Blob을 경로로 지정된 파일로 다운로드합니다. 파일이 생성되고 파일이 이미 존재하는 경우 {@link FileAlreadyExistsException}가 발생합니다. |
| Common | SAS(공유 액세스 서명)를 사용하여 지정된 Blob에 대한 다운로드 링크를 생성합니다. 기본적으로는 허용된 액세스 권한의 1시간으로만 제한됩니다. 그러나 헤더를 통해 기본 만료 기간을 재정의할 수 있습니다. |
| BlockBlob | 새 블록 Blob을 만들거나 기존 블록 Blob의 내용을 업데이트합니다. 기존 블록 Blob을 업데이트하면 Blob의 기존 메타데이터가 덮어씁니다. PutBlob에서는 부분적인 업데이트가 지원되지 않습니다. 기존 Blob의 내용은 새 콘텐츠로 덮어씁니다. |
|
|
지정된 블록을 commitBlobBlockList 호출에 의해 나중에 커밋하기 위해 블록 Blob의 "staging 영역"에 업로드합니다. 그러나 |
|
|
Blob을 구성할 블록 ID 목록을 지정하여 Blob을 씁니다.Writes a blob by specifying the list of block IDs that are to make up the blob. Blob의 일부로 작성되려면 이전 |
|
| 지정된 블록 목록 필터를 사용하여 블록 Blob의 일부로 업로드된 블록 목록을 반환합니다. |
|
| 0 길이 추가 Blob을 만듭니다. commitAppendBlo'b 작업을 호출하여 데이터를 추가 Blob에 추가합니다. |
|
|
새 데이터 블록을 기존 추가 Blob의 끝에 커밋합니다. header |
|
|
지정된 길이의 페이지 Blob을 만듭니다. |
|
|
페이지 Blob에 하나 이상의 페이지를 씁니다.Writes one or more pages to the page blob. 쓰기 크기는 512의 여러 개여야 합니다. header |
|
| 페이지 Blob의 크기를 지정된 크기(512개 이상이어야 함)로 조정합니다. |
|
| 페이지 Blob에서 지정된 페이지를 해제합니다. 범위의 크기는 512의 여러 개여야 합니다. |
|
| 페이지 Blob 또는 페이지 Blob의 스냅샷에 대한 유효한 페이지 범위 목록을 반환합니다. |
|
| 다른 계정에서도 한 컨테이너에서 다른 컨테이너로 Blob을 복사합니다. |
이러한 작업을 camel 애플리케이션에 사용하는 방법을 알아보려면 이 페이지의 예제 섹션을 참조하십시오.
8.5.6. 소비자 예 링크 복사링크가 클립보드에 복사되었습니다!
파일 구성 요소를 사용하여 Blob을 파일로 사용하려면 다음과 같이 수행할 수 있습니다.
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey"). to("file://blobdirectory");
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey").
to("file://blobdirectory");
그러나 파일 구성 요소를 사용하지 않고 직접 파일에 쓸 수도 있습니다. Blob을 저장하려면 fileDir
폴더 경로를 지정해야 합니다.
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir"). to("mock:results");
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
또한 이 구성 요소는 일괄 소비자를 지원하므로 컨테이너 이름만 지정하여 여러 Blob을 사용할 수 있으므로 사용자는 컨테이너의 Blob 수에 따라 여러 트랜잭션을 반환합니다.
예제
from("azure-storage-blob://camelazure/container1?accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir"). to("mock:results");
from("azure-storage-blob://camelazure/container1?accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
8.5.7. 생산자 작업 예 링크 복사링크가 클립보드에 복사되었습니다!
-
listBlobContainers
-
createBlobContainer
-
deleteBlobContainer
:
-
listBlobs
:
-
getBlob
:
교환 본문에서 outputStream
을 설정하고 데이터를 쓸 수 있습니다. 예:
본문을 설정하지 않으면 이 작업은 추가 다운스트림을 진행할 수 있는 InputStream
인스턴스를 제공합니다.
-
deleteBlob
:
-
downloadBlobToFile
:
-
downloadLink
-
uploadBlockBlob
-
stageBlockBlobList
-
commitBlockBlobList
-
getBlobBlockList
from("direct:start") .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlobBlockList&serviceClient=#client") .log("${body}") .to("mock:result");
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlobBlockList&serviceClient=#client")
.log("${body}")
.to("mock:result");
-
createAppendBlob
from("direct:start") .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createAppendBlob&serviceClient=#client") .to("mock:result");
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createAppendBlob&serviceClient=#client")
.to("mock:result");
-
commitAppendBlob
-
createPageBlob
from("direct:start") .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createPageBlob&serviceClient=#client") .to("mock:result");
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createPageBlob&serviceClient=#client")
.to("mock:result");
-
uploadPageBlob
-
resizePageBlob
-
clearPageBlob
-
getPageBlobRanges
-
copyBlob
이렇게 하면 계정 'account'의 컨테이너 containerblob1에 있는 file.txt가 동일한 계정의 컨테이너 containerblob2에 복사됩니다.
8.5.8. 개발 노트(Important) 링크 복사링크가 클립보드에 복사되었습니다!
모든 통합 테스트에서는 Testcontainers 를 사용하고 기본적으로 실행됩니다. Azure 서비스를 사용하여 모든 통합 테스트를 실행하려면 Azure accessKey 및 accountName이 필요합니다. Azure 클라이언트가 마이너 버전 업그레이드에서도 문제를 해결할 수 있으므로 모든 변경 사항을 사용하여 통합 테스트를 실행해야 합니다.In addition to the mocked unit tests you will need to run the integration tests with every change you make or even client upgrade as the Azure client can break things even on minor versions upgrade. 통합 테스트를 실행하려면 이 구성 요소 디렉터리에서 다음 maven 명령을 실행합니다.
mvn verify -PfullTests -DaccountName=myacc -DaccessKey=mykey
mvn verify -PfullTests -DaccountName=myacc -DaccessKey=mykey
accountName
은 Azure 계정 이름이고 accessKey
는 Azure Portal에서 생성되는 액세스 키입니다.