랩: Azure PaaS(Platform-as-a-Service)에서 웹 애플리케이션 빌드

학생 랩 매뉴얼

랩 시나리오

당신은 새로 창립된 기업의 소유자이며 사람들을 위하여 음식의 좋은 이미지를 공유 할 수 있는 이미지 갤러리 응용 프로그램을 구축하고 있습니다. 제품을 가능한 빨리 출시하려면 Microsoft Azure 앱 서비스를 사용하여 웹 응용 프로그램 및 APIs 를 호스팅하기로 결정했습니다. 최근에 응용 프로그램에 업로드되는 이미지가 너무 크다는 것을 알게 되었습니다. 스토리지 및 대역폭 비용에 대해 우려하여 Azure Functions를 사용하여 백그라운드에서 이미지를 처리하고 신속하게 로드할 수 있는 미리 보기 이미지로 줄이기로 결정했습니다.

목표

이 랩을 완료하면 다음을 수행할 수 있습니다.

  • Azure 어플 서비스를 사용하여 다양한 앱을 만듭니다.

  • 어플에 대한 응용 프로그램 설정을 구성합니다.

  • Kudu, Azure CLI 및 zip 배치를 사용하여 어플을 배치합니다.

  • Azure 저장소 이미지를 처리하는 기능적 어플을 작성합니다.

랩 설정

  • 예상 시간: 90 분

지침

시작하기 전에

랩 가상 머신에 로그인

다음 자격 증명을 사용하여 Windows 10 가상 머신에 로그인해야 합니다.

  • 사용자 이름: Admin

  • 암호: Pa55w.rd

설치된 응용 프로그램 검토

Windows 10 바탕 화면 하단에 있는 작업 표시줄을 살펴봅니다. 작업 표시줄에는 이 랩에서 사용할 응용 프로그램에 대한 아이콘이 포함되어 있습니다.

  • Microsoft Edge

  • 파일 탐색기

  • Windows PowerShell

  • Visual Studio Code

랩 파일 다운로드

  1. 작업 표시줄에서 Windows PowerShell 아이콘을 선택합니다.

  2. PowerShell 명령 프롬프트에서 현재 작업 디렉터리를 Allfiles(F):\ 경로로 변경합니다.

    cd F:
  1. 명령 프롬프트 내에서 다음 명령을 입력하고 Enter 키를 눌러 GitHub에서 호스트되는 microsoftlearning/AZ-203-DevelopingSolutionsforMicrosoftAzure 프로젝트를 Allfiles (F):\ 드라이브로 복제합니다.
    git clone --depth 1 --no-checkout https://github.com/microsoftlearning/AZ-203-DevelopingSolutionsForMicrosoftAzure.
  1. 명령 프롬프트 내에서 다음 명령을 입력하고 Enter 키를 눌러 AZ-203T02 랩을 완료하는 데 필요한 랩 파일을 체크 아웃합니다.
    git checkout master -- Allfiles/*
  1. 현재 실행 중인 Windows PowerShell 명령 프롬프트 응용 프로그램을 닫습니다.

연습 1: Azure Storage 및 API Apps를 사용하여 백엔드 API 빌드

작업 1: Azure Portal 열기

  1. Azure Portal(portal.azure.com)에 로그인합니다.

  2. Azure 포털에 처음 로그인하는 경우 포털 둘러보기를 제공하는 대화 박스가 표시됩니다. 투어를 건너뛰려면 시작하기를 선택합니다.

작업 2: Azure 저장소 계정 만들기

  1. 다음 세부 정보를 사용하여 새 스토리지 계정을 만듭니다.

    • 새 리소스 그룹: 관리 플랫폼

    • 이름: imgstor[소문자로 된 사용자 이름]

    • 위치: (미국) 미국 동부

    • 성능: 표준

    • 계정 종류: 스토리지 V2(범용 v2)

    • 복제: 로컬 중복 스토리지(LRS)

    • 액세스 계층: 핫

참고: 랩을 진행하기 전에 Azure 에서 저장소 계정 만들기가 완료될 때까지 기다립니다. 계정이 생성되면 알림을 받게 됩니다.

  1. 새로 만든 스토리지 계정 인스턴스의 액세스 키 블레이드에 액세스합니다.

  2. 연결 문자열 필드의 값을 기록합니다. 이 랩에서 나중에 이 값을 사용합니다.

작업 3: 샘플 블랍 업로드

  1. 이전에 랩에서 만든 imgstor* 저장소 계정에 접속합니다.

  2. Blob service 섹션에서 컨테이너 링크를 선택합니다.

  3. 다음 설정을 사용하여 새 컨테이너를 만듭니다.

    • 이름: 이미지

    • 공용 액세스 수준: Blob(블랍에 대한 익명 읽기 액세스만)

  4. 다음 설정을 사용하여 다른 새 컨테이너를 만듭니다.

    • 이름: 이미지 - 섬네일

    • 공용 엑세스 수준: 블랍(블랍에 대한 익명 읽기만 가능합니다.)

  5. 이미지 컨테이너로 이동합니다.

  6. 업로드 단추를 사용하여 랩 머신의 Allfiles (F):\Allfiles\Labs\02\Starter\Images 폴더에 있는 grilledcheese.jpg 파일을 업로드합니다.

    참고: 파일이 이미 있는 경우 덮어쓰기 옵션을 사용하도록 설정하는 것이 좋습니다.

작업 4: API 앱 만들기

  1. 다음 세부 정보에 따라서 새 API 앱을 만듭니다.

    • 앱 이름: imgapi[소문자로 된 사용자 이름]

    • 기존 리소스 그룹: 관리 플랫폼

    참고: 랩을 진행하기 전에 Azure에서 API 앱 만들기가 완료될 때까지 기다립니다. 어플이 생성된 후 알림을 받게 됩니다.

작업 5: API 앱 구성

  1. 이전에 랩에서 만든 imgapi* API 앱을 접촉합니다.

  2. 블레이드 왼쪽의 설정 섹션에서 구성 섹션으로 이동합니다.

  3. 다음 세부 정보를 사용하여 새 애플리케이션 설정을 만듭니다.

    • 이름: StorageConnectionString

    • : <Storage Connection String copied earlier in this lab>

    • 배포 슬롯 설정: 선택되지 않음

  4. 애플리케이션 설정에 대한 변경 내용을 저장합니다.

  5. 블레이드 왼쪽의 설정 섹션에서 속성 섹션으로 이동합니다.

  6. 속성 섹션에서 URL 필드의 값을 복사합니다. 이 값은 랩에서 나중에 사용합니다.

작업 6: API 앱에 ASP.NET Core 웹 애플리케이션 배포

  1. Visual Studio Code를 사용하여 Allfiles (F):\Allfiles\Labs\02\Starter\API 폴더에 있는 웹 애플리케이션을 엽니다.

  2. Controllers\ImagesController.cs 파일을 열고 각 메서드에서 코드를 살펴봅니다.

  3. Windows PowerShell응용 프로그램을 엽니다.

  4. Microsoft Azure 자격 증명을 사용하여 Azure CLI 에 로그인합니다.

    az login
  1. ManagedPlatform 리소스 그룹에 있는 모든 을 나열합니다.
    az webapp list --resource-group ManagedPlatform
  1. 접두사 imgapi*가 있는 을 찾습니다.
    az webapp list --resource-group ManagedPlatform --query "[?starts_with(name, 'imgapi')]"
  1. 접두사 imgapi*가 있는 단일 앱의 이름만 출력합니다.
    az webapp list --resource-group ManagedPlatform --query "[?starts_with(name, 'imgapi')].{Name:name}" --output tsv
  1. 랩 파일이 포함된 Allfiles (F):\Allfiles\Labs\02\Starter\API 디렉터리로 현재 디렉터리를 변경합니다.
    cd F:\Labfiles\02\Starter\API\
  1. api.zip 파일을 이 랩의 앞에서 만든 API 앱에 배포합니다.
    az webapp deployment source config-zip --resource-group ManagedPlatform --src api.zip --name <name-of-your-api-app>
> **참고**: **\<name-of-your-api-app\>** 자리 표시자를 이 랩의 앞에서 만든 API 앱의 이름으로 바꿉니다. 최근에 이전 단계에서 이 앱의 이름을 쿼리했습니다.
  1. 이 랩의 앞에서 만든 imgapi* API 앱에 액세스합니다.

  2. 브라우저에서 imgapi* API 앱을 엽니다.

  3. 웹 사이트의 루트에 대한 GET 요청을 수행하고 반환되는 JSON 배열을 관찰합니다. 이 배열에는 Azure Storage 계정에 업로드된 싱글 이미지의 URL이 포함되어야 합니다.

검토

이 연습에서는 Azure에서 API 앱을 만든 다음 Azure CLI 및 Kudu의 zip 배포 유틸리티를 사용하여 ASP.NET Core 웹 애플리케이션을 API 앱에 배포했습니다.

연습 2: Azure 웹 어플을 사용하여 프런트 엔드 웹 응용 프로그램을 만듭니다.

작업 1: 웹 어플 만들기

  1. Azure 포털에서 다음과 같은 세부 정보를 사용하여 새 앱 어플을 만듭니다.

    • 앱 이름: imgweb[소문자로 된 사용자 이름]

    • 기존 리소스 그룹: 관리 플랫폼

    • OS: Windows

    참고: 랩을 진행하기 전에 Azure 에서 웹 어플 만들기가 완료될 때까지 기다립니다. 어플이 생성된 후 알림을 받게 됩니다.

작업 2: 웹 어플 구성

  1. 이전 작업에서 만든 imgweb* 웹앱에 액세스합니다.

  2. 블레이드 왼쪽의 설정 섹션에서 구성 설정으로 이동합니다.

  3. 다음 세부 정보를 사용하여 새 애플리케이션 설정을 만듭니다.

    • 이름: ApiUrl

    • : <API App URL copied earlier in this lab>

    • 배포 슬롯 설정: 선택되지 않음

    참고: 이 애플리케이션 설정의 값 필드에 복사하는 URL에 프로토콜(예: https://)을 포함해야 합니다.

  4. 애플리케이션 설정에 대한 변경 내용을 저장합니다.

작업 3: ASP.NET 코어 웹 응용 프로그램을 웹 어플에 배치합니다.

  1. Visual Studio Code를 사용하여 Allfiles (F):\Allfiles\Labs\02\Starter\Web 폴더에 있는 웹 애플리케이션을 엽니다.

  2. Pages\Index.cshtml.cs 파일을 열고 각 메서드의 코드를 관찰합니다.

  3. Windows PowerShell응용 프로그램을 엽니다.

  4. Microsoft Azure 자격 증명을 사용하여 Azure CLI 에 로그인합니다.

    az login
  1. ManagedPlatform 리소스 그룹에 있는 모든 을 나열합니다.
    az webapp list --resource-group ManagedPlatform
  1. 접두사 imgweb*가 있는 을 찾습니다.
    az webapp list --resource-group ManagedPlatform --query "[?starts_with(name, 'imgweb')]"
  1. 접두사 imgweb*가 있는 단일 앱의 이름만 출력합니다.
    az webapp list --resource-group ManagedPlatform --query "[?starts_with(name, 'imgweb')].{Name:name}" --output tsv
  1. 랩 파일이 포함된 Allfiles (F):\Allfiles\Labs\02\Starter\Web 디렉터리로 현재 디렉터리를 변경합니다.
    cd F:\Labfiles\02\Starter\Web\
  1. 이 랩의 앞에서 만든 웹앱web.zip 파일을 배포합니다.
    az webapp deployment source config-zip --resource-group ManagedPlatform --src web.zip --name <name-of-your-web-app>
> **참고**: **<Name-of-your-api-app\>** 플레이스 홀더를 이전에 랩에서 만든 웹 어플의 이름으로 바꿉니다. 최근에 이전 단계에서 이 어플의 이름을 쿼리했습니다.
  1. 이전에 랩에서 만든 imgweb* 웹 어플에 접속합니다.

  2. 브라우저에서 imgweb* 웹 어플을 엽니다.

  3. 갤러리 이미지 목록이 새 이미지로 업데이트되었는지 확인합니다.

    참고: 드문 경우지만 새 이미지가 표시되도록 브라우저 창을 새로 고쳐야 할 수도 있습니다.

검토

이 연습에서는 Azure Web App 을 만들고 기존 웹 응용 프로그램의 코드를 클라우드의 리소스에 배치했습니다.

연습 3: Azure 저장소 및 Azure 함수를 사용하여 백그라운드 처리 작업을 만듭니다.

작업 1: 함수 어플 만들기

  1. Azure 포털에서 다음과 같은 세부 정보를 사용하여 새함수 어플을 만듭니다.

    • 앱 이름: imgfunc[소문자로 된 사용자 이름]

    • 기존 리소스 그룹: ManagedResourceGroup

    • OS: Windows

    • 호스팅 계획: 소비 계획

    • 위치: 미국 동부

    • 런타임 스택: .NET Core

    • 스토리지: imgstor[소문자로 된 사용자 이름]

    참고: 랩을 진행하기 전에 Azure 에서 함수 어플 만들기를 완료될 때까지 기다립니다. 어플이 생성된 후 알림을 받게 됩니다.

작업 2: .NET Core 애플리케이션 설정 만들기

  1. 이 랩의 앞에서 만든 imgfunc* 함수 앱에 액세스합니다.

  2. 플랫폼 기능 탭에 있는 구성 설정으로 이동합니다.

  3. 다음 세부 정보를 사용하여 새 애플리케이션 설정을 만듭니다.

    • 이름: DOTNET_SKIP_FIRST_TIME_EXPERIENCE

    • : true

      참고: ‘DOTNET_SKIP_FIRST_TIME_EXPERIENCE’ 애플리케이션 설정은 .NET Core가 기본 제공 NuGet 패키지 캐시 메커니즘을 사용하지 않도록 지정합니다. 임시 컴퓨팅 인스턴스에서는 이로 인해 시간이 낭비되고 Azure Function의 빌드 문제가 발생합니다.

  4. 애플리케이션 설정에 대한 변경 내용을 저장합니다.

작업 3: 블랍을 처리하는 함수를 작성합니다.

  1. Azure 포털 왼쪽 네비게이션 페인에서 리소스 그룹을 선택합니다.

  2. 리소스 그룹 블레이드에서 이전에 랩에서 만든 ManagedPlatform 리소스 그룹을 찾아 선택합니다.

  3. 관리 플랫폼 블레이드에서 이 랩의 앞에서 만든 imgfunc* 함수 앱을 선택합니다.

  4. 함수 어플 블레이드에서 + 새 함수을 선택합니다.

  5. 새 Azure 함수 빠른 시작에서 다음 작업을 수행합니다.

    1. 개발 환경 선택 헤더에서 포털 에서를 선택합니다.

    2. 계속을 선택합니다.

    3. 함수 만들기 헤더에서 더 많은 템플릿…을 선택합니다.

    4. 템플릿 완료 및 보기를 선택합니다.

    5. 템플릿 목록에서 Azure Blob Storage 트리거를 선택합니다.

    6. 확장이 설치되지 않음 창에서 설치를 선택합니다.

      참고: Azure Storage Blob을 사용하여 작업하기 위한 확장을 설치할 때 최대 2분이 걸릴 수 있습니다. 포털이 새로 고쳐지지 않으면 확장이 설치되지 않음 팝업 창을 닫고 Azure 블랍 스토리지 트리거를 다시 선택하기만 하면 됩니다.

    7. 설치가 성공하면 계속을 선택합니다.

    8. 새 함수 창에서 이름 필드에 ImageManager를 입력합니다.

    9. 새 함수 창에서 경로 필드에 이미지/{이름}을 입력합니다.

    10. 새 함수 창에서 저장소 계정 연결목록에서 AzureWebJobsStorage을 선택합니다.

    11. 새 함수 창에서 만들기를 선택합니다.

  6. 함수 편집기의 오른쪽에서 파일 보기를 선택하여 탭을 엽니다.

  7. 파일 보기 탭에서 추가를 선택합니다.

  8. 표시되는 파일 이름 대화 상자에서 function.proj를 입력합니다.

  9. 파일 편집기에서 이 구성 내용을 삽입합니다.

    <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
            <TargetFramework>netstandard2.0</TargetFramework>
        </PropertyGroup>
        <ItemGroup>
            <PackageReference Include="SixLabors.ImageSharp" Version="1.0.0-beta0006" />
        </ItemGroup>
    </Project>
  1. 편집기에서 저장 단추를 선택하여 구성 변경 내용을 저장합니다.

    참고: 이 proj 파일에는 SixLabors.ImageSharp 패키지를 가져오는 데 필요한 NuGet 패키지 참조가 포함되어 있습니다.

  2. 파일 보기 탭에서 function.json 파일을 선택하여 함수 구성의 편집기를 봅니다.

  3. JSON 편집기에서 현재 구성을 관찰합니다.

    {
      "bindings": [
        {
          "name": "myBlob",
          "type": "blobTrigger",
          "direction": "in",
          "path": "images/{name}",
          "connection": "AzureWebJobsStorage"
        }
      ],
      "disabled": false
    }
  1. JSON 구성 파일의 전체 콘텐츠를 다음 JSON 콘텐츠로 교체합니다:
    {
      "bindings": [
        {
          "name": "inputBlob",
          "type": "blobTrigger",
          "direction": "in",
          "path": "images/{name}",
          "connection": "AzureWebJobsStorage"
        },
        {
          "type": "blob",
          "name": "outputBlob",
          "path": "images-thumbnails/{name}",
          "connection": "AzureWebJobsStorage",
          "direction": "out"
        }
      ]
    }
  1. JSON 편집기에서 저장 단추를 선택하여 구성 변경 내용을 저장합니다.

  2. 파일 보기 탭에서 run.csx 파일을 선택하여 ImageManager 함수의 편집기로 돌아갑니다.

  3. 파일 보기탭을 최소화합니다.

    참고: 탭 헤더의 오른쪽에 있는 화살표를 즉시 선택하여 탭을 최소화할 수 있습니다.

  4. 함수 편집기에서 예시 함수 스크립트를 관찰합니다.

    public static void Run(Stream myBlob, string name, ILogger log)
    {
        log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
    }
  1. 예시 코드를 모두 삭제합니다.

  2. 편집기 내에서 다음 플레이스 홀더 함수를 복사하여 붙여넣습니다.

    using SixLabors.ImageSharp;
    using SixLabors.ImageSharp.PixelFormats;
    using SixLabors.ImageSharp.Processing;
    using SixLabors.ImageSharp.Formats.Jpeg;
    using SixLabors.Primitives;
    
    public static void Run(Stream inputBlob, Stream outputBlob, string name, ILogger log)
    {
    }
  1. 편집기에서 저장을 선택하여 스크립트를 저장하고 코드를 컴파일합니다.

  2. 함수 실행의 정보를 기록하기 위해 다음 코드 줄을 추가합니다.

    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {inputBlob.Length} Bytes");
  1. 입력 blob에 대한 스트림을 이미지 라이브러리에 로드하려면 다음 using 블록을 추가합니다.
    using (Image<Rgba32> image = Image.Load(inputBlob))
    {
    }
  1. using 문 내에 다음 코드 줄을 추가하여 이미지 크기를 조정하고 그레이스케일 필터를 적용하여 이미지를 변경합니다.
    image.Mutate(i => 	
        i.Resize(new ResizeOptions { Size = new Size(250, 250), Mode = ResizeMode.Max }).Grayscale()
    );
  1. 다음 코드 줄을 추가하여 출력 Blob의 스트림에 새 이미지를 저장합니다.
    image.Save(outputBlob, new JpegEncoder());
  1. 이제 Run 메서드는 다음과 같습니다.
    using SixLabors.ImageSharp;
    using SixLabors.ImageSharp.PixelFormats;
    using SixLabors.ImageSharp.Processing;
    using SixLabors.ImageSharp.Formats.Jpeg;
    using SixLabors.Primitives;
    
    public static void Run(Stream inputBlob, Stream outputBlob, string name, ILogger log)
    {
        log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {inputBlob.Length} Bytes");
        using (Image<Rgba32> image = Image.Load(inputBlob))
        {
            image.Mutate(i => 	
                i.Resize(new ResizeOptions { Size = new Size(250, 250), Mode = ResizeMode.Max }).Grayscale()
            );
            image.Save(outputBlob, new JpegEncoder());
        }
    }
  1. 편집기에서 저장을 선택하여 스크립트를 저장하고 코드를 다시 컴파일합니다.

작업 4: 웹 솔루션 검증

  1. Azure 포털 왼쪽 네비게이션 페인에서 리소스 그룹을 선택합니다.

  2. 리소스 그룹 블레이드에서 이전에 랩에서 만든 ManagedPlatform 리소스 그룹을 찾아 선택합니다.

  3. 관리 플랫폼 블레이드에서 이전에 랩에서 만든 imgstor* 저장소 계정을 선택합니다.

  4. 스토리지 계정 블레이드의 왼쪽에 있는 Blob service 섹션에서 컨테이너 링크를 선택합니다.

  5. 컨테이너 섹션에서 이미지 컨테이너를 선택합니다.

  6. 컨테이너 블레이드에서 업로드를 선택합니다.

  7. 표시되는 블랍 업로드 창에서 다음 작업을 수행합니다.

    1. 파일 섹션에서 폴더 아이콘을 선택합니다.

    2. 열리는 파일 탐색기 대화 상자에서 Allfiles (F):\Allfiles\Labs\02\Starter\Images로 이동하여 veggie.jpg 파일을 선택한 다음 열기를 선택합니다.

    3. 파일이 이미 있는 경우 덮어쓰기 확인란이 선택되어 있는지 확인합니다.

    4. 업로드 선택

  8. 이 랩을 계속하기 전에 블랍이 업로드될 때까지 기다립니다.

  9. 컨테이너 블레이드를 닫습니다.

  10. 컨테이너 섹션으로 돌아가서 images-thumbnails 컨테이너를 선택합니다.

  11. 컨테이너 블레이드에서 images-thumbnails 컨테이너에서 새로 만든 veggie.jpg파일을 확인합니다.

    참고: 새 이미지가 표시되려면 1~5분 정도 걸릴 수 있습니다.

  12. 이미지- 섬네일 컨테이너에서 veggie.jpg 블랍을 선택합니다.

  13. 블랍 블레이드에서 블랍 편집 탭을 선택합니다.

  14. 블랍의 내용을 관찰합니다.

  15. 포털의 왼쪽에서 리소스 그룹을 선택합니다.

  16. 리소스 그룹 블레이드에서 이전에 랩에서 만든 ManagedPlatform 리소스 그룹을 찾아 선택합니다.

  17. 관리 플랫폼 블레이드에서 이전에 랩에서 만든 imgweb*웹 어플을 선택합니다.

  18. 웹 어플 블레이드에서 찾아보기를 선택합니다.

  19. 갤러리의 이미지 목록을 관찰합니다.

  20. Contoso 포토 갤러리 웹 페이지 상단에서 새 이미지 업로드 섹션을 찾아 다음 작업을 수행합니다.

    1. 찾아보기를 선택합니다.

    2. 열리는 파일 탐색기 대화 상자에서 Allfiles (F):\Allfiles\Labs\02\Starter\Images로 이동하여 blt.jpg 파일을 선택한 다음 열기를 선택합니다.

    3. 업로드를 선택합니다.

  21. 웹 페이지 상단에서 새 이미지 업로드 섹션을 찾아 다음 작업을 수행합니다.

    1. 찾아보기를 선택합니다.

    2. 열리는 파일 탐색기 대화 상자에서 Allfiles (F):\Allfiles\Labs\02\Starter\Images로 이동하여 sub.jpg 파일을 선택한 다음 열기를 선택합니다.

    3. 업로드를 선택합니다.

  22. 웹 페이지 상단에서 새 이미지 업로드 섹션을 찾아 다음 작업을 수행합니다.

    1. 찾아보기를 선택합니다.

    2. 열리는 파일 탐색기 대화 상자에서 Allfiles (F):\Allfiles\Labs\02\Starter\Images로 이동하여 burger.jpg 파일을 선택한 다음 열기를 선택합니다.

    3. 업로드를 선택합니다.

  23. Contoso 포토 갤러리 웹 페이지에서 갤러리 이미지 목록이 새 이미지로 업데이트되었는지 확인합니다.

  24. 페이지 상단의 섬네일 목록을 관찰합니다. 미리 보기 이미지가 모두 생성될 때까지 1분마다 페이지를 새로 고칩니다.

복습

이 연습에서는 Azure Functions에서 컴퓨팅 집약적인 이미지 수정 및 크기 조정 작업을 수행하기 위해 백그라운드 처리 작업을 만들었습니다.

연습 4: 구독 정리

작업 1: Cloud Shell 열기

  1. Azure Portal 상단에서 Cloud Shell 아이콘을 선택하여 새 셸 인스턴스를 엽니다.

  2. Cloud Shell이 아직 구성되지 않은 경우 기본 설정을 사용하여 Bash용 셸을 구성합니다.

  3. Cloud Shell 명령 프롬프트의 포털 하단에 다음 명령을 입력하고 Enter 키를 눌러 구독의 모든 리소스 그룹을 나열합니다.

    az group list
  1. 다음 명령을 입력하고 Enter 키를 눌러 리소스 그룹을 삭제하는 데 사용할 수 있는 명령 목록을 봅니다.
    az group delete --help

작업 2: 리소스 그룹 삭제

  1. 다음 명령을 입력하고 Enter 를 눌러 ManagedPlatform 리소스 그룹을 삭제합니다.
    az group delete --name ManagedPlatform --no-wait --yes
  1. 포털 하단의 Cloud Shell 창을 닫습니다.

작업 3: 활성 애플리케이션 닫기

  1. 현재 실행 중인 Microsoft Edge 응용 프로그램을 닫습니다.

  2. 현재 실행 중인 Visual Studio Code 응용 프로그램을 닫습니다.

검토

이 연습에서는 이 랩에 사용된 리소스 그룹을 제거하여 구독을 정리했습니다.