이 빠른 시작에서는 Azure CLI를 사용하여 온도가 27보다 큰 실시간 센서 메시지를 필터링하는 Stream Analytics 작업을 정의합니다. Stream Analytics 작업은 IoT Hub에서 데이터를 읽고, 데이터를 변환하고, Blob Storage의 컨테이너에 출력 데이터를 씁니다. 이 빠른 시작에서 사용된 입력 데이터는 Raspberry Pi 온라인 시뮬레이터로 생성됩니다.
시작하기 전 주의 사항:
Azure 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
필수 조건
Bash 환경을 Azure Cloud Shell에서 사용합니다. 자세한 내용은 Azure Cloud Shell 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치하십시오. Windows 또는 macOS에서 실행하는 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 Azure에 인증을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI로 확장 사용 및 관리를 참조하세요.
az version을 실행하여 설치된 버전과 관련 종속 라이브러리를 확인합니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
리소스 그룹을 만듭니다. 모든 Azure 리소스를 리소스 그룹에 배포해야 합니다. 리소스 그룹을 사용하면 관련 Azure 리소스를 구성하고 관리할 수 있습니다.
이 빠른 시작의 경우 다음 az group create 명령을 사용하여 eastus 위치에 streamanalyticsrg라는 리소스 그룹을 만듭니다.
az group create --name streamanalyticsrg --___location eastus
입력 데이터 준비
Stream Analytics 작업을 정의하기 전에 작업의 입력에 사용되는 데이터를 준비합니다. 다음 Azure CLI 명령은 작업에 필요한 입력 데이터를 준비합니다.
az iot hub create 명령을 사용하여 IoT Hub를 만듭니다. 이 예제에서는 MyASAIoTHub라는 IoT Hub를 만듭니다. IoT Hub 이름은 전역적으로 고유해야 하므로 이미 사용 중인 경우 이름을 변경해야 할 수 있습니다. 구독에 사용 가능한 경우 체험 계층을 사용하도록 SKU를 F1로 설정합니다. 그러지 않으면 다음으로 가장 낮은 계층을 선택합니다.
iotHubName=MyASAIoTHub az iot hub create --name $iotHubName --resource-group streamanalyticsrg --sku S1
IoT Hub가 만들어지면 z iot hub connection-string show 명령을 사용하여 IoT Hub 연결 문자열을 가져옵니다. 전체 연결 문자열을 복사하고 저장합니다. Stream Analytics 작업에 입력으로 IoT Hub를 추가하는 동안 사용합니다.
az iot hub connection-string show --hub-name $iotHubName
az iothub device-identity create 명령을 사용하여 IoT Hub에 디바이스를 추가합니다. 이 예제에서는 MyASAIoTDevice라는 디바이스를 만듭니다.
az iot hub device-identity create --hub-name $iotHubName --device-id "MyASAIoTDevice"
az iot hub device-identity connection-string show 명령을 사용하여 디바이스 연결 문자열을 가져옵니다. 전체 연결 문자열을 복사하여 Raspberry Pi 시뮬레이터를 만들 때를 위해 저장해 둡니다.
az iot hub device-identity connection-string show --hub-name $iotHubName --device-id "MyASAIoTDevice" --output table
출력 예제:
HostName=MyASAIoTHub.azure-devices.net;DeviceId=MyASAIoTDevice;SharedAccessKey=a2mnUsg52+NIgYudxYYUNXI67r0JmNubmfVafojG8=
Blob Storage 계정 만들기
다음 Azure CLI 명령은 작업 출력에 사용되는 Blob Storage 계정을 만듭니다.
az storage account create 명령을 사용하여 범용 스토리지 계정을 만듭니 다. 범용 스토리지 계정은 Blob, 파일, 테이블 및 큐의 네 가지 서비스 모두에 사용할 수 있습니다.
storageAccountName="asatutorialstorage$RANDOM" az storage account create \ --name $storageAccountName \ --resource-group streamanalyticsrg \ --___location eastus \ --sku Standard_ZRS \ --encryption-services blob
az storage account keys list 명령을 실행하여 스토리지 계정의 키를 가져옵니다.
key=$(az storage account keys list -g streamanalyticsrg -n $storageAccountName --query "[0].value" -o tsv) echo $key
중요합니다
Azure Storage 계정에 대한 액세스 키를 적어둡니다. 이 빠른 시작 과정에서 나중에 이 키를 사용합니다.
state
명령을 사용하여 Blob을 저장하기 위해 명명된 컨테이너를 만듭니다. 스토리지 계정 키를 사용하여 컨테이너를 만드는 작업에 권한을 부여합니다. Azure CLI를 사용하여 데이터 작업에 권한을 부여하는 방법에 대한 자세한 내용은 Azure CLI를 사용하여 Blob 또는 큐 데이터에 대한 액세스 권한 부여를 참조하세요.az storage container create \ --account-name $storageAccountName \ --name state \ --account-key $key \ --auth-mode key
Stream Analytics 작업 만들기
az stream-analytics job create 명령을 사용하여 Stream Analytics 작업을 만듭니다.
az stream-analytics job create \
--job-name "streamanalyticsjob" \
--resource-group "streamanalyticsrg" \
--___location "eastus" \
--output-error-policy "Drop" \
--out-of-order-policy "Drop" \
--order-max-delay 5 \
--arrival-max-delay 16 \
--data-locale "en-US"
작업에 대한 입력 구성
az stream-analytics input cmdlet을 사용하여 작업에 입력을 추가합니다. 이 cmdlet은 JSON 형식의 작업 이름, 작업 입력 이름, 리소스 그룹 이름 및 입력 속성을 매개 변수로 사용합니다. 이 예제에서는 IoT Hub를 입력으로 만듭니다.
중요합니다
-
IOT HUB ACCESS KEY
을 저장한 IOT Hub 연결 문자열의 공유 액세스 키 값으로 바꾸세요. 예를 들어 IOT Hub 연결 문자열이 다음과HostName=MyASAIoTHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=xxxxxxxxxxxxxx=
같은 경우 공유 액세스 키 값은 다음과 같습니다xxxxxxxxxxxxxx=
. 값을 바꾸는 동안\
문자인 이스케이프를 삭제하지 않도록 하고"
문자인 큰따옴표를 유지하세요. -
iotHubNamespace
이외의 이름을 사용한 경우, 다음 명령의MyASAIoTHub
값을 업데이트하십시오. 실행echo $iotHubName
하여 IoT Hub의 이름을 확인합니다.
az stream-analytics input create \
--properties "{\"type\":\"Stream\",\"datasource\":{\"type\":\"Microsoft.Devices/IotHubs\",\"properties\":{\"consumerGroupName\":\"\$Default\",\"endpoint\":\"messages/events\",\"iotHubNamespace\":\"MyASAIoTHub\",\"sharedAccessPolicyKey\":\"IOT HUB ACCESS KEY\",\"sharedAccessPolicyName\":\"iothubowner\"}},\"serialization\":{\"type\":\"Json\",\"encoding\":\"UTF8\"}}" \
--input-name "asaiotinput" \
--job-name "streamanalyticsjob" \
--resource-group "streamanalyticsrg"
작업에 대한 출력 구성
az stream-analytics output create cmdlet을 사용하여 작업에 출력을 추가합니다. 이 cmdlet은 작업 이름, 작업 출력 이름, 리소스 그룹 이름, JSON 형식의 데이터 원본 및 serialization 형식을 매개 변수로 사용합니다.
중요합니다
Azure Storage 계정 이름을 STORAGEACCOUNTNAME>
로, 스토리지 계정의 액세스 키를 STORAGEACCESSKEY>
로 바꾸십시오. 이러한 값을 적어 두지 않은 경우 다음 명령을 실행하여 값을 가져옵니다 echo $storageAccountName
echo $key
. 값을 변경할 때는 \
(이스케이프) 문자를 "
(큰따옴표)와 관련하여 삭제하지 않도록 주의하세요.
az stream-analytics output create \
--job-name streamanalyticsjob \
--datasource "{\"type\":\"Microsoft.Storage/Blob\",\"properties\":{\"container\":\"state\",\"dateFormat\":\"yyyy/MM/dd\",\"pathPattern\":\"{date}/{time}\",\"storageAccounts\":[{\"accountKey\":\"STORAGEACCESSKEY\",\"accountName\":\"STORAGEACCOUNTNAME\"}],\"timeFormat\":\"HH\"}}" \
--serialization "{\"type\":\"Json\",\"properties\":{\"format\":\"Array\",\"encoding\":\"UTF8\"}}" \
--output-name asabloboutput \
--resource-group streamanalyticsrg
변환 쿼리 정의
az stream-analytics transformation create cmdlet을 사용하여 당신의 업무에 변환을 추가하십시오.
az stream-analytics transformation create \
--resource-group streamanalyticsrg \
--job-name streamanalyticsjob \
--name Transformation \
--streaming-units "6" \
--saql "SELECT * INTO asabloboutput FROM asaiotinput WHERE Temperature > 27"
IoT 시뮬레이터 실행
15줄의 자리 표시자를 빠른 시작 시작 시 저장한 전체 Azure IoT Hub 디바이스 연결 문자열 (IoT Hub 연결 문자열 아님)으로 바꿉니다.
실행을 선택합니다. IoT Hub로 전송 중인 센서 데이터와 메시지가 출력에 표시되어야 합니다.
Stream Analytics 작업을 시작하고 출력을 확인합니다.
az stream-analytics job start cmdlet을 사용하여 작업을 시작합니다. 이 cmdlet은 작업 이름, 리소스 그룹 이름, 출력 시작 모드 및 시작 시간을 매개 변수로 사용합니다.
OutputStartMode
는 JobStartTime
, CustomTime
또는 LastOutputEventTime
의 값을 허용합니다.
다음 cmdlet을 실행한 후 작업이 시작되면 True
가 출력으로 반환됩니다.
az stream-analytics job start \
--resource-group streamanalyticsrg \
--name streamanalyticsjob \
--output-start-mode JobStartTime
몇 분 후에 Blob 컨테이너에 state
출력 파일이 만들어지는지 확인합니다.
파일을 다운로드하고 열어 다음과 유사한 여러 항목을 확인합니다.
{
"messageId": 229,
"deviceId": "Raspberry Pi Web Client",
"temperature": 31.85214010589595,
"humidity": 60.278830289656284,
"EventProcessedUtcTime": "2023-02-28T22:06:33.5567789Z",
"PartitionId": 3,
"EventEnqueuedUtcTime": "2023-02-28T22:05:49.6520000Z",
"IoTHub": {
"MessageId": null,
"CorrelationId": null,
"ConnectionDeviceId": "MyASAIoTDevice",
"ConnectionDeviceGenerationId": "638132150746523845",
"EnqueuedTime": "2023-02-28T22:05:49.6520000Z",
"StreamId": null
}
}
자원을 정리하세요
리소스 그룹을 삭제합니다. 그러면 Stream Analytics 작업, IoT Hub 및 Azure Storage 계정을 비롯한 리소스 그룹의 모든 리소스가 삭제됩니다.
az group delete \
--name streamanalyticsrg \
--no-wait
다음 단계
이 빠른 시작에서는 Azure CLI를 사용하여 간단한 Stream Analytics 작업을 배포했습니다. Azure Portal과 Visual Studio를 통해서도 Stream Analytics 작업을 배포할 수 있습니다.
다른 입력 원본을 구성하고 실시간 검색을 수행하는 방법을 알아보려면 다음 문서로 이동하세요.