bicep를 사용하여 논리 앱(표준) connections.json 매개 변수화 - 2부

7618 단어 biceplogicappsazure
에서 계속해서 다음 단계는 앱 설정을 업데이트하고 앱 설정에서 읽도록 connections.json을 설정하는 것입니다.

이것이 흥미로워지는 곳입니다. 인터넷과 테스트를 통해 많은 검색을 한 후 강조해야 할 몇 가지 사항이 있습니다.
  • managedApiConnections 정보를 전체 문자열로 바꿀 수 없습니다. 즉, 아래 설정은 작동하지 않습니다.

    ...
    
    "managedApiConnections": {
      "azureblob_1": {
        "api": {
          "id": "@appsetting('azureBlobApiId')"
        },
        "authentication": {
          "type": "ManagedServiceIdentity"
        },
        "connection": {
          "id": "@appsetting('azureBlobConnectionId')"
        },
        "connectionRuntimeUrl": "@appsetting('azureBlobConnectionRuntimeUrl')"
      }
    }
    ...
    

    위와 같이 연결이 작동하는 것 같습니다. API 연결 상태를 보면 "연결됨"이라고 보고됩니다. 모든 것이 정상인 것 같습니다... 워크플로우를 저장하려고 시도하기 전까지는 말입니다. 워크플로를 저장하려고 하면 알 수 없는 오류가 표시됩니다.

    Workflow saved successfully. Workflow validation failed for the workflow 'xxxxxxxxxx'. The file 'connections.json' contains invalid expressions. The allowed expression functions are 'xxxxxxxxxx'.
    


  • 위의 문제를 해결하기 위해 이 문서Create cross-environment parameters for workflow inputs in Azure Logic Apps에서 힌트를 찾을 수 있습니다. 본질적으로 위의 코드 대신 다음 코드를 만들어야 합니다(아래 코드는 워크플로를 저장할 때 여전히 오류가 발생합니다. 마지막 관찰 및 해결 방법은 3단계 참조).

    ...
    
    "managedApiConnections": {
      "azureblob_1": {
        "api": {
          "id": "/subscriptions/@{appsetting('WORKFLOW_SUBSCRIPTION_ID')}/providers/Microsoft.Web/locations/@{appsetting('WORKFLOW_LOCATION')}/managedApis/azureblob"
        },
        "authentication": {
          "type": "ManagedServiceIdentity"
        },
        "connection": {
          "id": "/subscriptions/@{appsetting('WORKFLOW_SUBSCRIPTION_ID')}/resourceGroups/@{appsetting('WORKFLOW_RG_NAME')}/providers/Microsoft.Web/connections/azureblob"
        },
        "connectionRuntimeUrl": "@appsetting('azureBlobConnectionRuntimeUrl')"
      }
    }
    ...
    

    참고: connectionRuntimeUrl만 앱 설정을 성공적으로 사용할 수 있습니다. apiIdconnectionId는 어떻게든 부분적으로 매개변수화될 수 있습니다.

  • 마지막으로 중괄호{}를 사용하여 표현식을 둘러싸는 보간 형식에 대한 위의 Microsoft 문서 권장 사항이 작동하지 않는 것 같습니다. 마지막으로 최종connections.json이 다음과 같이 보이도록 중괄호를 제거해야 합니다.

    ...
    
    "managedApiConnections": {
      "azureblob_1": {
        "api": {
          "id": "/subscriptions/@appsetting('WORKFLOW_SUBSCRIPTION_ID')/providers/Microsoft.Web/locations/@appsetting('WORKFLOW_LOCATION')/managedApis/azureblob"
        },
        "authentication": {
          "type": "ManagedServiceIdentity"
        },
        "connection": {
          "id": "/subscriptions/@appsetting('WORKFLOW_SUBSCRIPTION_ID')/resourceGroups/@appsetting('WORKFLOW_RG_NAME')/providers/Microsoft.Web/connections/azureblob"
        },
        "connectionRuntimeUrl": "@appsetting('azureBlobConnectionRuntimeUrl')"
      }
    }
    ...
    


  • 위의 설정이 완료되면 이제 API 연결을 사용하고 워크플로를 성공적으로 저장할 수 있습니다.

    좋은 웹페이지 즐겨찾기