Rozszerzanie szablonu azd przez dodanie usługi Azure

Po utworzeniu nowego szablonu interfejsu wiersza polecenia dewelopera Azure (azd) lub rozpoczęciu od istniejącego można rozszerzyć i rozwijać swoją aplikację i infrastrukturę w miarę zmiany wymagań. W tym samouczku pokazano, jak dodać nową usługę Azure do szablonu bez konieczności polegania na module, który już udostępnia szablon.

Zaczniesz od hello-azd szablonu, utworzysz moduł Bicep, który definiuje zasób Azure Translator, odwołasz się do modułu z punktu wejścia infrastruktury w szablonie i udostępnisz jego dane wyjściowe jako wartości środowiska azd. Samouczek koncentruje się na rozszerzaniu infrastruktury i nie modyfikuje kodu aplikacji.

Note

Następujące zmiany można wprowadzić bezpośrednio lub z pomocą asystenta kodowania sztucznej inteligencji. Niezależnie od metody tworzenia przejrzyj wynikowe pliki i zweryfikuj szablon przed wdrożeniem.

Wymagania wstępne

Do ukończenia tego samouczka potrzebne są następujące elementy:

  • Zainstalowano Azure Developer CLI.
  • Subskrypcja platformy Azure.
  • Uprawnienie do tworzenia zasobów platformy Azure w subskrypcji.
  • Pusty katalog dla zainicjowanego szablonu.

Inicjowanie szablonu

Otwórz terminal w pustym katalogu, a następnie zainicjuj w nim szablon hello-azd:

azd init --template hello-azd .

Szablon zawiera następujące elementy:

  • Aplikacja C# wdrożona do usługi Azure Container Apps jako usługa aca w azure.yaml.
  • Tożsamość zarządzana przypisana przez użytkownika dla aplikacji.
  • Konto magazynu Azure z kontenerem blobów i tabelą.
  • Azure Container Registry i środowisko usługi Azure Container Apps.
  • Moduły Bicep do wielokrotnego użytku w sekcji infra/core.

Aby uzyskać wskazówki dotyczące wybierania i przeglądania szablonu przed zainicjowaniem, zobacz Rozpoczynanie od istniejącego szablonu.

Tworzenie modułu usługi Translator

Utwórz plik o nazwie infra/translator.bicep, ręcznie lub z pomocą asystenta kodowania sztucznej inteligencji. Ten nowy moduł jest samowystarczalny i nie zależy od modułów szablonu początkowego:

@description('Name of the Azure Translator resource.')
param name string

@description('Azure region for the resource.')
param location string

@description('Tags to apply to the resource.')
param tags object = {}

@description('Pricing tier for Azure Translator.')
@allowed([
  'F0'
  'S1'
])
param sku string = 'F0'

resource translator 'Microsoft.CognitiveServices/accounts@2023-05-01' = {
  name: name
  location: location
  kind: 'TextTranslation'
  sku: {
    name: sku
  }
  properties: {
    customSubDomainName: name
    disableLocalAuth: true
    publicNetworkAccess: 'Enabled'
  }
  tags: tags
}

output name string = translator.name
output endpoint string = translator.properties.endpoint

Moduł korzysta z TextTranslation rodzaju zasobu i wyłącza uwierzytelnianie za pomocą klucza lokalnego. Warstwa cenowa F0 jest przydatna do ewaluacji, ale umożliwia utworzenie tylko jednego bezpłatnego zasobu usługi Translator w ramach jednej subskrypcji. Użyj S1, jeśli subskrypcja zawiera już zasób F0 lub jeśli projekt wymaga płatnego planu.

Important

Ten przykład wprowadzający umożliwia publiczny punkt końcowy, dzięki czemu można aprowizować zasób bez dodawania infrastruktury sieciowej. Przed użyciem tego wzorca w środowisku produkcyjnym należy ocenić prywatne punkty końcowe, mechanizmy kontroli dostępu do sieci, monitorowanie i wymagania dotyczące zabezpieczeń organizacji.

Odwołaj się do modułu z main.bicep

Szablon hello-azd definiuje grupę rg zasobów, location, tagsi resourceToken wartości w pliku infra/main.bicep. Tę zmianę można wprowadzić ręcznie lub polecić asystentowi AI, aby ją dodał. Dodaj następujący moduł po deklaracji rg zasobu:

module translator './translator.bicep' = {
  name: 'translator'
  scope: rg
  params: {
    name: 'translator-${resourceToken}'
    location: location
    tags: tags
  }
}

Właściwość scope wdraża moduł w grupie zasobów tworzonej przez szablon. Istniejąca resourceToken wartość sprawia, że nazwa zasobu usługi Translator jest unikatowa dla każdego środowiska.

Eksportowanie danych wyjściowych usługi Translator

Dodaj następujące dane wyjściowe na końcu elementu infra/main.bicep:

output AZURE_TRANSLATOR_NAME string = translator.outputs.name
output AZURE_TRANSLATOR_ENDPOINT string = translator.outputs.endpoint

Po utworzeniu zasobów azd zapisuje te niepoufne wyniki w aktywnym środowisku. Późniejsza zmiana kodu aplikacji może użyć tych wartości do zlokalizowania zasobu usługi Translator.

Aprowizuj i weryfikuj infrastrukturę

Aprowizowanie infrastruktury szablonu bez wdrażania kodu aplikacji:

azd provision

Uruchom azd env get-values i potwierdź, że w danych wyjściowych znajdują się AZURE_TRANSLATOR_NAME i AZURE_TRANSLATOR_ENDPOINT. W portalu Azure sprawdź, czy grupa zasobów zawiera zasób Azure Translator.

W tym momencie szablon aprowizuje usługę sztucznej inteligencji, ale nie łączy z nią przykładowej aplikacji. Aby ukończyć integrację, skonfiguruj dostęp z najmniejszymi uprawnieniami dla tożsamości zarządzanej aplikacji, przekaż punkt końcowy do aplikacji i dodaj klienta usługi Translator do kodu aplikacji. Aby uzyskać więcej informacji, zobacz dokumentację Azure Translator.

Uprzątnij zasoby

Gdy zasoby nie są już potrzebne, usuń je, aby uniknąć ciągłych opłat:

azd down --purge

Zażądaj pomocy

Aby uzyskać informacje o tym, jak zgłosić usterkę, poprosić o pomoc lub zaproponować nową funkcję dla interfejsu wiersza polecenia dewelopera Azure, odwiedź stronę troubleshooting i pomoc techniczną.