다음을 통해 공유


Bicep의 파일 함수

이 문서에서는 외부 파일에서 콘텐츠를 로드하기 위한 Bicep 함수를 설명합니다.

loadFileAsBase64

loadFileAsBase64(filePath)

파일을 base64 문자열로 로드합니다.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
filePath string 로드할 파일의 경로입니다. 경로는 배포된 Bicep 파일을 기준으로 합니다. 변수를 포함할 수 없습니다.

설명

배포에 포함할 이진 콘텐츠가 있는 경우 이 함수를 사용합니다. 수동으로 파일을 base64 문자열로 인코딩하고 Bicep 파일에 추가하는 대신 이 함수로 파일을 로드합니다. Bicep 파일이 JSON 템플릿에 컴파일될 때 파일이 로드됩니다. 템플릿으로 컴파일할 때 변수가 확인되지 않았기 때문에 파일 경로에서 변수를 사용할 수 없습니다. 배포하는 동안 JSON 템플릿에는 파일의 콘텐츠가 하드 코드된 문자열로 포함됩니다.

이 함수에는 Bicep CLI 버전 0.4.X 이상이 필요합니다.

파일의 최대 허용 크기는 96Kb입니다.

반환 값

base64 문자열인 파일입니다.

loadJsonContent

loadJsonContent(filePath, [jsonPath], [encoding])

지정된 JSON 파일을 Any 개체로 로드합니다.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
filePath string 로드할 파일의 경로입니다. 경로는 배포된 Bicep 파일을 기준으로 합니다. 변수를 포함할 수 없습니다.
jsonPath 아니요 string 파일의 일부만 로드되도록 지정하는 JSONPath 식입니다.
encoding 아니요 string 파일 인코딩입니다. 기본값은 utf-8입니다. 사용 가능한 옵션은 iso-8859-1, us-ascii, utf-16, utf-16BE 또는 utf-8입니다.

설명

별도의 파일에 저장되어 있는 JSON 콘텐츠 또는 축소된 JSON 콘텐츠가 있는 경우 이 함수를 사용합니다. Bicep 파일의 JSON 콘텐츠를 복제하는 대신 이 함수로 콘텐츠를 로드합니다. JSON 경로를 지정하여 JSON 파일의 일부를 로드할 수 있습니다. Bicep 파일이 JSON 템플릿에 컴파일될 때 파일이 로드됩니다. 템플릿으로 컴파일할 때 변수가 확인되지 않았기 때문에 파일 경로에 변수를 포함할 수 없습니다. 배포하는 동안 JSON 템플릿에는 파일의 콘텐츠가 하드 코드된 문자열로 포함됩니다.

VS Code에서 로드된 개체의 속성은 사용 가능한 intellisense입니다. 예를 들어, 여러 Bicep 파일에서 공유할 값을 사용하여 파일을 만들 수 있습니다. 이 문서에 예제가 나와 있습니다.

이 함수에는 Bicep CLI 버전 0.7.X 이상이 필요합니다.

파일의 최대 허용 크기는 줄 끝을 포함하여 1,048,576자입니다.

반환 값

Any 개체로서의 파일 콘텐츠입니다.

예제

다음 예제에서는 네트워크 보안 그룹에 대한 값이 포함된 JSON 파일을 만듭니다.

{
  "description": "Allows SSH traffic",
  "protocol": "Tcp",
  "sourcePortRange": "*",
  "destinationPortRange": "22",
  "sourceAddressPrefix": "*",
  "destinationAddressPrefix": "*",
  "access": "Allow",
  "priority": 100,
  "direction": "Inbound"
}

해당 파일을 로드하고 JSON 개체로 변환합니다. 개체를 사용하여 리소스에 값을 할당합니다.

param location string = resourceGroup().location

var nsgconfig = loadJsonContent('nsg-security-rules.json')

resource newNSG 'Microsoft.Network/networkSecurityGroups@2023-11-01' = {
  name: 'example-nsg'
  location: location
  properties: {
    securityRules: [
      {
        name: 'SSH'
        properties: nsgconfig
      }
    ]
  }
}

네트워크 보안 그룹을 배포하는 다른 Bicep 파일에서 값 파일을 다시 사용할 수 있습니다.

loadYamlContent

loadYamlContent(filePath, [pathFilter], [encoding])

지정된 YAML 파일을 Any 개체로 로드합니다.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
filePath string 로드할 파일의 경로입니다. 경로는 배포된 Bicep 파일을 기준으로 합니다. 변수를 포함할 수 없습니다.
pathFilter 아니요 string 경로 필터는 파일의 일부만 로드되도록 지정하는 JSONPath 식입니다.
encoding 아니요 string 파일 인코딩입니다. 기본값은 utf-8입니다. 사용 가능한 옵션은 iso-8859-1, us-ascii, utf-16, utf-16BE 또는 utf-8입니다.

설명

별도의 파일에 저장되어 있는 YAML 콘텐츠 또는 축소된 YAML 콘텐츠가 있는 경우 이 함수를 사용합니다. Bicep 파일의 YAML 콘텐츠를 복제하는 대신 이 함수로 콘텐츠를 로드합니다. 경로 필터를 지정하여 YAML 파일의 일부를 로드할 수 있습니다. Bicep 파일이 YAML 템플릿에 컴파일될 때 파일이 로드됩니다. 템플릿으로 컴파일할 때 변수가 확인되지 않았기 때문에 파일 경로에 변수를 포함할 수 없습니다. 배포하는 동안 YAML 템플릿에는 파일의 콘텐츠가 하드 코드된 문자열로 포함됩니다.

VS Code에서 로드된 개체의 속성은 사용 가능한 intellisense입니다. 예를 들어, 여러 Bicep 파일에서 공유할 값을 사용하여 파일을 만들 수 있습니다. 이 문서에 예제가 나와 있습니다.

이 함수에는 Bicep CLI 버전 0.16.X 이상이 필요합니다.

파일의 최대 허용 크기는 줄 끝을 포함하여 1,048,576자입니다.

반환 값

Any 개체로서의 파일 콘텐츠입니다.

예제

다음 예제에서는 네트워크 보안 그룹에 대한 값이 포함된 YAML 파일을 만듭니다.

description: "Allows SSH traffic"
protocol: "Tcp"
sourcePortRange: "*"
destinationPortRange: "22"
sourceAddressPrefix: "*"
destinationAddressPrefix: "*"
access: "Allow"
priority: 100
direction: "Inbound"

해당 파일을 로드하고 JSON 개체로 변환합니다. 개체를 사용하여 리소스에 값을 할당합니다.

param location string = resourceGroup().location

var nsgconfig = loadYamlContent('nsg-security-rules.yaml')

resource newNSG 'Microsoft.Network/networkSecurityGroups@2023-11-01' = {
  name: 'example-nsg'
  location: location
  properties: {
    securityRules: [
      {
        name: 'SSH'
        properties: nsgconfig
      }
    ]
  }
}

네트워크 보안 그룹을 배포하는 다른 Bicep 파일에서 값 파일을 다시 사용할 수 있습니다.

loadTextContent

loadTextContent(filePath, [encoding])

지정된 파일의 콘텐츠를 문자열로 로드합니다.

네임스페이스: sys.

매개 변수

매개 변수 필수 Type 설명
filePath string 로드할 파일의 경로입니다. 경로는 배포된 Bicep 파일을 기준으로 합니다. 변수를 포함할 수 없습니다.
encoding 아니요 string 파일 인코딩입니다. 기본값은 utf-8입니다. 사용 가능한 옵션은 iso-8859-1, us-ascii, utf-16, utf-16BE 또는 utf-8입니다.

설명

별도의 파일에 저장되는 콘텐츠가 있는 경우 이 함수를 사용합니다. Bicep 파일에서 콘텐츠를 복제하는 대신 로드할 수 있습니다. 예를 들어, 파일에서 배포 스크립트를 로드할 수 있습니다. Bicep 파일이 JSON 템플릿에 컴파일될 때 파일이 로드됩니다. 템플릿으로 컴파일할 때 변수가 확인되지 않았기 때문에 파일 경로에서 변수를 포함할 수 없습니다. 배포하는 동안 JSON 템플릿에는 파일의 콘텐츠가 하드 코드된 문자열로 포함됩니다.

loadJsonContent() 함수를 사용하여 JSON 파일을 로드합니다.

이 함수에는 Bicep CLI 버전 0.4.X 이상이 필요합니다.

파일의 최대 허용 크기는 줄 끝을 포함하여 131,072자입니다.

반환 값

문자열인 파일의 콘텐츠입니다.

예제

다음 예제에서는 파일에서 스크립트를 로드하고 배포 스크립트에 사용합니다.

resource exampleScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'exampleScript'
  location: resourceGroup().location
  kind: 'AzurePowerShell'
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '/subscriptions/{sub-id}/resourcegroups/{rg-name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{id-name}': {}
    }
  }
  properties: {
    azPowerShellVersion: '8.3'
    scriptContent: loadTextContent('myscript.ps1')
    retentionInterval: 'P1D'
  }
}

다음 단계