리소스 정의
Bicep 템플릿은 배포할 Azure 리소스를 정의하는 작성한 파일입니다.
장난감 회사에서 제품 출시를 위해 재사용 가능한 Bicep 템플릿을 만들어야 합니다. 이 템플릿은 각 신제품을 출시하는 동안 마케팅에 사용할 Azure 스토리지 계정과 Azure App Service 리소스를 배포해야 합니다.
이 단원에서는 Bicep 템플릿에서 리소스를 정의하는 방법, 리소스 이름이 작동하는 방식, 서로 관련된 리소스를 만드는 방법을 배웁니다.
참고
이 단원의 명령은 개념을 설명하기 위해 표시된 것입니다. 명령을 아직 실행하지 마세요. 여기에서 학습하는 내용을 곧 연습할 예정입니다.
리소스 정의
Bicep 템플릿을 사용하여 수행하는 주요 작업은 Azure 리소스를 정의하는 것입니다. Bicep에서 일반적인 리소스 정의가 표시되는 예는 다음과 같습니다. 이 예제에서는 toylaunchstorage
라는 스토리지 계정을 만듭니다.
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: 'toylaunchstorage'
location: 'westus3'
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
이 리소스 정의의 몇 가지 주요 부분을 자세히 살펴보겠습니다.
시작 부분에 있는
resource
키워드는 Bicep에게 리소스를 정의한다는 것을 알려줍니다.다음으로 리소스에 기호 이름을 지정합니다. 이 예제에서 리소스의 기호 이름은
storageAccount
입니다. 기호 이름은 Bicep 내에서 리소스를 참조하는 데 사용되지만 Azure에는 표시되지 않습니다.Microsoft.Storage/storageAccounts@2022-09-01
은 리소스의 리소스 종류 및 API 버전입니다.Microsoft.Storage/storageAccounts
는 Bicep에게 Azure 스토리지 계정을 선언한다는 것을 알려줍니다. 데이터2022-09-01
은 Bicep이 리소스를 만들 때 사용하는 Azure Storage API의 버전입니다.팁
Visual Studio Code용 Bicep 확장을 사용하면 사용자가 만든 리소스의 리소스 종류 및 API 버전을 찾을 수 있습니다. ARM 템플릿에 대해 잘 알고 있다면 API 버전은 ARM 템플릿에서 사용하는 버전과 일치합니다.
Azure에서 스토리지 계정에 할당되는 이름인 리소스 이름을 선언해야 합니다.
name
키워드를 사용하여 리소스 이름을 설정합니다.Important
기호 이름은 Bicep 템플릿 내에서만 사용되며 Azure에 표시되지 않습니다. 리소스 이름은 Azure에 표시됩니다.
그런 다음 해당 위치, SKU(가격 책정 계층) 및 종류와 같은 리소스의 기타 세부 정보를 설정합니다. 또한 각 리소스 종류마다 다른 속성을 정의할 수 있습니다. API 버전마다 다른 속성을 도입할 수도 있습니다. 이 예제에서는 스토리지 계정의 액세스 계층을
Hot
으로 설정합니다.
팁
리소스 이름에는 준수해야 하는 규칙(최대 길이, 허용 문자 및 전체 Azure에서의 고유성)이 포함된 경우가 많습니다. 리소스 이름 요구 사항은 Azure 리소스 종류에 따라 다릅니다. 템플릿에 리소스를 추가하기 전에 명명 제한 사항 및 요구 사항을 이해해야 합니다.
리소스가 서로 종속되는 경우 어떻게 되나요?
Bicep 템플릿은 일반적으로 여러 리소스를 포함합니다. 리소스를 다른 리소스에 종속시켜야 하는 경우가 종종 있습니다. 리소스를 정의하기 위해 다른 리소스에서 일부 정보를 추출해야 할 수도 있습니다. 웹 애플리케이션을 배포하는 경우에는 서버 인프라를 만들어야 애플리케이션을 추가할 수 있습니다. 이러한 관계를 종속성이라고 합니다.
토이 제품 출시를 도와줄 템플릿용 App Service 앱을 배포해야 하지만 App Service 앱을 만들려면 먼저 App Service 요금제를 만들어야 합니다. App Service 요금제는 서버 호스팅 리소스를 나타내며 이 예시와 같이 선언됩니다.
resource appServicePlan 'Microsoft.Web/serverFarms@2023-12-01' = {
name: 'toy-product-launch-plan'
location: 'westus3'
sku: {
name: 'F1'
}
}
이 리소스 정의는 Bicep에게 App Service 요금제(리소스 종류 Microsoft.Web/serverFarms
포함)를 미국 동부 배포한다는 것을 알려줍니다. 요금제 리소스는 toy-product-launch-plan
이라고 하며 미국 서부 3 지역에 배포됩니다. 요금제는 App Service의 무료 계층인 F1 가격 책정 SKU를 사용합니다.
App Service 플랜을 선언했으므로 다음 단계는 앱을 선언하는 것입니다.
resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
name: 'toy-product-launch-1'
location: 'westus3'
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
이 템플릿은 만든 요금제에서 앱을 호스트하도록 Azure에 지시합니다. 요금제의 정의에는 문구 serverFarmId: appServicePlan.id
에 App Service 요금제를 나타내는 이름이 포함되어 있습니다. 이 줄은 Bicep이 id
속성을 사용하여 App Service 요금제의 리소스 ID를 가져오는 것을 의미합니다. 실제로 다음과 같이 적혀 있습니다. 이 앱의 서버 팜 ID는 앞서 정의한 App Service 요금제의 ID입니다.
팁
Azure에서 리소스 ID는 각 리소스의 고유한 식별자입니다. 리소스 ID에는 Azure 구독 ID, 리소스 그룹 이름 및 리소스 이름과 함께 일부 다른 정보가 포함됩니다.
Azure는 플랜의 기호 이름을 참조하는 속성을 사용하여 앱 리소스를 선언함으로써 App Service 앱과 플랜 간의 암시적 종속성을 이해합니다. Azure는 리소스를 배포할 때 플랜을 완전히 배포한 후에 앱 배포를 시작합니다.