Bicep을 사용하여 외부 API를 Azure Static Web Apps의 환경에 연결
6213 단어 azurestaticwebappsbicep
param location string = resourceGroup().location
resource swamv_ui 'Microsoft.Web/staticSites@2022-03-01' = {
name: 'swamv'
location: location
sku: {
name: 'Standard'
tier: 'Standard'
}
properties: {
stagingEnvironmentPolicy: 'Enabled'
allowConfigFileUpdates: true
provider: 'Custom'
enterpriseGradeCdnStatus: 'Disabled'
}
}
빌드 및 배포
다음으로 템플릿에서 간단한 WASM Blazor 앱을 만들고 빌드/배포 파이프라인을 시작했습니다. 이 파이프라인에서 코드가 빌드되고 Azure CLI는 Bicep을 사용하여 리소스를 만드는 데 사용됩니다. 이제 정적 웹 앱 리소스에 앱을 게시하기 위해 푸시 배포를 수행하는 방법은 SWA CLI를 사용하는 것입니다. 이 게시 명령에는 배포 토큰이 필요하며 파이프라인의 일부 비밀 변수에 저장할 수 있지만 Azure CLI가 있기 때문에 쿼리만 하기로 결정했습니다.
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- script: |
cd swamv-ui
dotnet publish -o bin/publish
displayName: 'build blazor app'
- task: AzureCLI@2
displayName: 'Create SWA (IaC)'
inputs:
azureSubscription: 'REDACTED'
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
az deployment group create -g swamv-rg -f swamv.bicep
- task: AzureCLI@2
displayName: 'Deploy Blazor app to SWA'
inputs:
azureSubscription: 'REDACTED'
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
npm install -g @azure/static-web-apps-cli
$token = az staticwebapp secrets list --name swamv --query "properties.apiKey"
swa deploy -d $token -a ./swamv-ui/bin/publish/wwwroot/ --env production
Bicep과 API 연결
내가 하고 있는 데모에서 여러 API를 연결하고 싶었습니다. 첫 번째는 간단한 Azure 함수입니다. Azure Portal에서 단추를 클릭하고 드롭다운에서 백엔드를 선택하여 백엔드를 연결할 수 있습니다. Bicep에서 링크를 정의하려는 경우 자체 리소스입니다. 이미 생성한 Static WebApp, 연결하려는 백엔드에 대한 리소스(참조), 링크 리소스 자체를 설명하는 세 가지 구성 요소가 필요합니다.
resource swamv_backend_azure_functions 'Microsoft.Web/sites@2021-03-01' existing = {
name: 'funcapiapp'
scope: resourceGroup('functions-api-app-rg')
}
resource swamv_ui_backend_functions 'Microsoft.Web/staticSites/linkedBackends@2022-03-01' = {
parent: swamv_ui
name: 'swamv_backend_functions'
properties: {
backendResourceId: swamv_backend_azure_functions.id
region: 'westeurope'
}
}
API를 다른 환경에 연결
하지만 제 강연에서 여러 다른 백엔드를 보여드리고 싶었습니다. 링크를 재정의하면 Azure에서 여러 백엔드를 추가하려고 하기 때문에 배포를 허용하지 않는 것 같습니다.
나는 다른 백엔드에 대해 다른 환경(기본적으로 스테이징 슬롯)을 사용하기로 결정했습니다. 연결된 백엔드 리소스에 환경을 지정할 수 있는 필드가 없기 때문에 약간 혼란스러웠습니다.
하지만 기다려! Bicep에서 환경을 지정하지 않고 SWA CLI를 사용하여 직접 게시하면 자동으로 생성됩니다. 알고 보니 환경은 하위 리소스이며 '내역' 때문에 '빌드'라고 부르며 명명이 어렵습니까?
resource swamv_backend_appservice 'Microsoft.Web/sites@2022-03-01' existing = {
name: 'swamv-appservice-api'
scope: resourceGroup('swamv-appservice-api')
}
resource swamv_ui_environment_appservice 'Microsoft.Web/staticSites/builds@2022-03-01' existing = {
parent: swamv_ui
name: 'appservice'
}
resource swamv_ui_linkedbackend_appservice 'Microsoft.Web/staticSites/builds/linkedBackends@2022-03-01' = {
name: 'swamv_backend_appservice'
parent: swamv_ui_environment_appservice
properties: {
backendResourceId: swamv_backend_appservice.id
region: 'westeurope'
}
}
이 마지막 부분에서 bicep가 'swamv-appservice-api'라는 기존 앱 서비스 리소스를 참조하고 있음을 알 수 있습니다. 이 경우에는 appservice라는 기존 환경 리소스 '빌드'를 사용하고 있으며 둘 사이에 링크를 생성하고 있습니다. 'swamv_ui_linkedbackend_appservice'라는 정의된 리소스에서.
Reference
이 문제에 관하여(Bicep을 사용하여 외부 API를 Azure Static Web Apps의 환경에 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/oscarvantol/using-bicep-to-link-external-apis-to-environments-in-azure-static-web-apps-3jd4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)