Azure 서비스를 추가하여 azd 템플릿 확장

새 Azure 개발자 CLI(azd) 템플릿을 빌드하거나 기존 템플릿에서 시작한 후 요구 사항이 변경되면 애플리케이션 및 인프라를 확장하고 발전할 수 있습니다. 이 자습서에서는 템플릿이 이미 제공하는 모듈을 사용하지 않고 템플릿에 새 Azure 서비스를 추가하는 방법을 보여 줍니다.

템플릿으로 hello-azd시작하고, Azure Translator 리소스를 정의하는 Bicep 모듈을 만들고, 템플릿의 인프라 진입점에서 모듈을 참조하고, 출력을 환경 값으로 azd 노출합니다. 이 자습서에서는 인프라를 확장하는 데 중점을 두고 애플리케이션 코드를 수정하지 않습니다.

Note

다음과 같이 직접 또는 AI 코딩 도우미의 도움을 받아 변경할 수 있습니다. 제작 방법에 관계없이 결과 파일을 검토하고 배포 전에 템플릿의 유효성을 검사합니다.

사전 요구 사항

이 자습서를 완료하려면 다음이 필요합니다.

템플릿 초기화

빈 디렉터리에서 터미널을 열고 해당 디렉터리에서 템플릿을 hello-azd 초기화합니다.

azd init --template hello-azd .

템플릿에는 다음이 포함됩니다.

  • aca의 azure.yaml 서비스로 Azure Container Apps에 배포된 C# 애플리케이션입니다.
  • 애플리케이션에 대한 사용자 할당 관리 ID입니다.
  • Blob 컨테이너 및 테이블이 있는 Azure Storage 계정입니다.
  • Azure Container Registry 및 Azure Container Apps 환경.
  • infra/core 아래의 재사용 가능한 Bicep 모듈

초기화하기 전에 템플릿을 선택하고 검토하는 방법에 대한 지침은 기존 템플릿에서 시작을 참조하세요.

Translator 모듈 만들기

수동으로 또는 AI 코딩 도우미의 도움을 받아 명명 infra/translator.bicep된 파일을 만듭니다. 이 새 모듈은 자체 포함되며 시작 템플릿의 모듈에 의존하지 않습니다.

@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

이 모듈은 리소스 종류를 사용하고 TextTranslation 로컬 키 인증을 사용하지 않도록 설정합니다. 계층은 F0 평가에 유용하지만 구독당 하나의 무료 Translator 리소스만 허용합니다. 구독에 이미 리소스가 F0 포함되어 있거나 프로젝트에 유료 계층이 필요한 경우 사용합니다S1.

Important

이 소개 예제에서는 공용 엔드포인트를 사용하도록 설정하여 네트워크 인프라를 추가하지 않고 리소스를 프로비전할 수 있습니다. 프로덕션 환경에서 이 패턴을 사용하기 전에 프라이빗 엔드포인트, 네트워크 액세스 제어, 모니터링 및 조직의 보안 요구 사항을 평가합니다.

main.bicep에서 모듈을 참조하세요

템플릿은 hello-azd 리소스 rg 그룹, location및 resourceTokentags에 있는 infra/main.bicep값을 정의합니다. 이를 직접 편집하거나 AI 도우미에게 추가하라는 메시지를 표시할 수 있습니다. 리소스 선언 다음에 다음 모듈을 rg 추가합니다.

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

이 속성은 scope 템플릿이 만드는 리소스 그룹에 모듈을 배포합니다. 기존 resourceToken 값은 각 환경에 대해 Translator 리소스 이름을 고유하게 만듭니다.

Translator 출력 내보내기

끝에 infra/main.bicep다음 출력을 추가합니다.

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

프로비전 후 azd 활성 환경에서 이러한 비보안 출력을 캡처합니다. 이후 애플리케이션 코드 변경은 이러한 값을 사용하여 Translator 리소스를 찾을 수 있습니다.

인프라 프로비전 및 확인

애플리케이션 코드를 배포하지 않고 템플릿의 인프라를 프로비전합니다.

azd provision

AZURE_TRANSLATOR_NAME를 실행하고 출력에 azd env get-values 및 AZURE_TRANSLATOR_ENDPOINT가 포함되어 있는지 확인합니다. Azure 포털에서 리소스 그룹에 Azure Translator 리소스가 포함되어 있는지 확인합니다.

이 시점에서 템플릿은 AI 서비스를 프로비전하지만 샘플 애플리케이션을 연결하지는 않습니다. 통합을 완료하려면 애플리케이션의 관리 ID에 대한 최소 권한 액세스를 구성하고, 엔드포인트를 애플리케이션에 전달하고, Translator 클라이언트를 애플리케이션 코드에 추가합니다. 자세한 내용은 Azure Translator 설명서를 참조하세요.

자원을 정리하세요

리소스가 더 이상 필요하지 않은 경우 계속 요금이 부과되지 않도록 리소스를 삭제합니다.

azd down --purge

도움말 요청

버그를 제출하거나, 도움말을 요청하거나, Azure 개발자 CLI에 대한 새 기능을 제안하는 방법에 대한 자세한 내용은 troubleshooting and support 페이지를 방문하세요.