Εκμάθηση: Κλήση συναρτήσεων δεδομένων χρήστη από μια εφαρμογή κονσόλας Python

Μπορείτε να καλέσετε συναρτήσεις δεδομένων χρήστη Fabric από εξωτερικές εφαρμογές στέλνοντας αιτήσεις HTTP στο δημόσιο τελικό σημείο της συνάρτησης. Αυτό σας δίνει τη δυνατότητα να ενσωματώσετε την επιχειρηματική λογική του Fabric σε εφαρμογές web, δέσμες ενεργειών αυτοματισμού, μικροϋπηρεσίες ή οποιοδήποτε σύστημα εκτός του περιβάλλοντος Fabric.

Σε αυτό το πρόγραμμα εκμάθησης:

  • Καταχώρηση εφαρμογής Microsoft Entra για έλεγχο ταυτότητας
  • Λάβετε τη δημόσια διεύθυνση URL της λειτουργίας και ενεργοποιήστε τη δημόσια πρόσβαση
  • Δημιουργήστε μια εφαρμογή κονσόλας Python που καλεί τη συνάρτηση
  • Κατανόηση του σχήματος απόκρισης και των κωδικών κατάστασης HTTP

Προαπαιτούμενα στοιχεία

Δημιουργία εφαρμογής Microsoft Entra

Για να καλέσετε συναρτήσεις δεδομένων χρήστη από μια εξωτερική εφαρμογή, πρέπει να καταχωρήσετε μια εφαρμογή στο Microsoft Entra ID. Αυτή η εγγραφή εφαρμογής παρέχει τα διαπιστευτήρια που χρησιμοποιεί η εφαρμογή Python για τον έλεγχο ταυτότητας.

  1. Μεταβείτε στο κέντρο διαχείρισης του Microsoft Entra και καταχωρήστε μια εφαρμογή χρησιμοποιώντας τα βήματα που περιγράφονται στη Γρήγορη εκκίνηση: Καταχώρηση μιας εφαρμογής στην πλατφόρμα ταυτοτήτων της Microsoft.

  2. Οι τιμές Αναγνωριστικό εφαρμογής (υπολογιστής-πελάτης) της εφαρμογής Microsoft και Αναγνωριστικό καταλόγου (μισθωτής) εμφανίζονται στο πλαίσιο Σύνοψη. Καταγράψτε αυτές τις τιμές, επειδή απαιτούνται αργότερα.

  3. Στη λίστα Διαχείριση, επιλέξτε δικαιώματα APIκαι, στη συνέχεια, Προσθήκη δικαιώματος.

  4. Προσθέστε την υπηρεσία PowerBI, επιλέξτε Δικαιώματα με ανάθεση και επιλέξτε UserDataFunction.Execute.All ή στοιχείο. Execute.All δικαιώματα. Επιβεβαιώστε ότι δεν απαιτείται συγκατάθεση διαχειριστή.

  5. Επιστρέψτε στη ρύθμιση Διαχείριση και επιλέξτε Έλεγχος ταυτότητας>Προσθήκη πλατφόρμας>Εφαρμογή μίας σελίδας.

  6. Για σκοπούς τοπικής ανάπτυξης, προσθέστε http://localhost:3000 στην περιοχή URIs ανακατεύθυνσης και επιβεβαιώστε ότι η εφαρμογή έχει ενεργοποιηθεί για τη ροή του κωδικού εξουσιοδότησης με το κλειδί επαλήθευσης για Exchange κώδικα (PKCE). Επιλέξτε το κουμπί Ρύθμιση παραμέτρων για να αποθηκεύσετε τις αλλαγές σας. Εάν η εφαρμογή αντιμετωπίσει σφάλμα που σχετίζεται με αιτήματα μεταξύ προελεύσεων, προσθέστε την πλατφόρμα εφαρμογών για κινητές συσκευές και επιτραπέζιους υπολογιστές στο προηγούμενο βήμα με το ίδιο URI ανακατεύθυνσης.

  7. Επιστρέψτε στοελέγχου ταυτότητας , κάντε κύλιση προς τα κάτω στην περιοχή Ρυθμίσεις για προχωρημένους και, στην περιοχή Να επιτρέπονται οι δημόσιες ροές προγράμματος-πελάτη, επιλέξτε Ναι για Ενεργοποιήστε τις παρακάτω ροές για κινητές συσκευές και υπολογιστές.

Δημιουργία εφαρμογής κονσόλας

Τώρα που έχετε μια εγγραφή εφαρμογής, δημιουργήστε μια εφαρμογή κονσόλας Python που ελέγχει την ταυτότητα και καλεί τη λειτουργία δεδομένων χρήστη.

Λάβετε τη διεύθυνση URL της συνάρτησης για κλήση

Κάθε συνάρτηση δεδομένων χρήστη έχει μια μοναδική δημόσια διεύθυνση URL που χρησιμεύει ως τελικό σημείο REST API. Για να μπορέσετε να καλέσετε τη συνάρτηση από μια εξωτερική εφαρμογή, πρέπει να ενεργοποιήσετε τη δημόσια πρόσβαση και να λάβετε τη διεύθυνση URL.

Για να λάβετε τη διεύθυνση URL της συνάρτησης:

  1. Στην πύλη Fabric, ανοίξτε το στοιχείο συναρτήσεων δεδομένων χρήστη.

  2. Βεβαιωθείτε ότι βρίσκεστε σε λειτουργία μόνο εκτέλεσης και όχι σε λειτουργία ανάπτυξης .

  3. Στην Εξερεύνηση συναρτήσεων, τοποθετήστε το δείκτη του ποντικιού πάνω από το όνομα της συνάρτησης και επιλέξτε τα αποσιωπητικά (...).

  4. Επιλέξτε Ιδιότητες.

  5. Στο τμήμα παραθύρου Ιδιότητες, βεβαιωθείτε ότι η δημόσια πρόσβαση είναι ενεργοποιημένη. Εάν όχι, επιλέξτε την εναλλαγή για να την ενεργοποιήσετε.

  6. Αντιγράψτε τη δημόσια διεύθυνση URL για χρήση στην εφαρμογή Python.

    Στιγμιότυπο οθόνης που εμφανίζει το τμήμα παραθύρου Ιδιότητες με ενεργοποιημένη τη δημόσια πρόσβαση και το πεδίο Δημόσια διεύθυνση URL.

    Φιλοδώρημα

    Εάν η δημόσια πρόσβαση είναι ήδη ενεργοποιημένη, μπορείτε να παραλείψετε το παράθυρο Ιδιότητες. Στην Εξερεύνηση συναρτήσεων, επιλέξτε τα αποσιωπητικά (...) δίπλα στο όνομα της συνάρτησης και επιλέξτε Αντιγραφή διεύθυνσης URL συνάρτησης. Αυτό αντιγράφει την ίδια διεύθυνση URL με τη δημόσια διεύθυνση URL στο τμήμα παραθύρου Ιδιότητες.

  7. Στον κώδικα της εφαρμογής σας, αντικαταστήστε το FUNCTION_URL σύμβολο κράτησης θέσης με τη διεύθυνση URL που αντιγράψατε.

Ρυθμίστε το έργο σας Python

Δημιουργήστε ένα έργο Python με εικονικό περιβάλλον και εγκαταστήστε τις απαιτούμενες εξαρτήσεις.

  1. Δημιουργήστε έναν νέο φάκελο για την εφαρμογή Python, για παράδειγμα my-data-app.

  2. Ανοίξτε το φάκελο στον κώδικα του Visual Studio.

  3. Ανοίξτε την Παλέτα εντολών (Ctrl+Shift+P) και αναζητήστε Python: Create Environment.

  4. Επιλέξτε venv ως τύπο περιβάλλοντος.

  5. Επιλέξτε Python 3.11 ως έκδοση διερμηνέα.

  6. Ανοίξτε ένα νέο τερματικό στον κώδικα του Visual Studio (Ctrl+').

  7. Ενεργοποιήστε το εικονικό περιβάλλον Python:

    Παράθυρα:

    .venv\Scripts\activate
    

    macOS/Linux:

    source .venv/bin/activate
    
  8. Εγκαταστήστε τις απαιτούμενες βιβλιοθήκες Python:

    pip install azure-identity requests
    

Προσθέστε τον κωδικό της εφαρμογής

Προσθέστε τον κώδικα Python που πραγματοποιεί έλεγχο ταυτότητας με το Microsoft Entra ID και καλεί τη συνάρτηση δεδομένων χρήστη.

  1. Δημιουργήστε ένα αρχείο με όνομα app.py στο φάκελο του έργου σας.

  2. Προσθέστε τον παρακάτω κώδικα. Αντικαταστήστε <REPLACE WITH USER DATA FUNCTION URL> με τη δημόσια διεύθυνση URL που αντιγράψατε νωρίτερα.

    from azure.identity import InteractiveBrowserCredential
    import requests
    import json
    
    # Acquire a token using interactive browser authentication
    # This opens a browser window for the user to sign in with their Microsoft account
    credential = InteractiveBrowserCredential()
    scope = "https://analysis.windows.net/powerbi/api/user_impersonation"
    token = credential.get_token(scope)
    
    if not token.token:
        print("Error: Could not get access token")
        exit(1)
    
    # Prepare headers with the access token
    headers = {
        "Authorization": f"Bearer {token.token}",
        "Content-Type": "application/json"
    }
    
    FUNCTION_URL = "<REPLACE WITH USER DATA FUNCTION URL>"
    
    # Prepare the request data (modify to match your function's expected input)
    data = {"name": "John"}
    
    try:
        # Call the user data function public URL
        response = requests.post(FUNCTION_URL, json=data, headers=headers)
        response.raise_for_status()
        print(json.dumps(response.json(), indent=2))
    except Exception as e:
        print(f"Error: {e}")
    

    Σημείωση

    Αυτό το παράδειγμα χρησιμοποιείται InteractiveBrowserCredential για απλότητα, η οποία ανοίγει ένα πρόγραμμα περιήγησης για αλληλεπιδραστική είσοδο. Για εφαρμογές παραγωγής, μεταβιβάστε το και tenant_id από την client_id καταχωρημένη εφαρμογή Microsoft Entra στο InteractiveBrowserCredentialή χρησιμοποιήστε διαφορετικό τύπο διαπιστευτηρίων, όπως ClientSecretCredential για έλεγχο ταυτότητας από υπηρεσία σε υπηρεσία. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Βιβλιοθήκη προγράμματος-πελάτη Azure Identity για Python.

Εκτελέστε την εφαρμογή

Για να εκτελέσετε την εφαρμογή, χρησιμοποιήστε την ακόλουθη εντολή στο τερματικό:

python app.py

Ανοίγει ένα παράθυρο του προγράμματος περιήγησης για να εισέλθετε με το λογαριασμό Microsoft. Μετά τον έλεγχο ταυτότητας, η εφαρμογή καλεί τη λειτουργία δεδομένων χρήστη και εκτυπώνει την απάντηση.

Για να εντοπίσετε σφάλματα στην εφαρμογή στον κώδικα του Visual Studio, ορίστε σημεία διακοπής κάνοντας κλικ στην υδρορροή δίπλα στους αριθμούς γραμμών και, στη συνέχεια, πατήστε F5 για να ξεκινήσει ο εντοπισμός σφαλμάτων. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Εντοπισμός σφαλμάτων Python στον κώδικα του Visual Studio.

Σχήμα εξόδου

Όταν καλείτε μια συνάρτηση δεδομένων χρήστη από μια εξωτερική εφαρμογή, το σώμα απόκρισης ακολουθεί αυτό το σχήμα JSON:

{
  "functionName": "hello_fabric",
  "invocationId": "1234567890",
  "status": "Succeeded",
  "output": "Hello, John!",
  "errors": []
}

Η απόκριση περιλαμβάνει αυτές τις ιδιότητες:

  • functionName: Το όνομα της συνάρτησης που εκτελέστηκε.
  • invocationId: Ένα μοναδικό αναγνωριστικό για την εκτέλεση αυτής της συγκεκριμένης συνάρτησης. Χρήσιμο για την αντιμετώπιση προβλημάτων και τη συσχέτιση αρχείων καταγραφής.
  • status: Το αποτέλεσμα της εκτέλεσης της συνάρτησης. Πιθανές τιμές είναι Succeeded, BadRequest, Failed, Timeout, και ResponseTooLarge.
  • output: Η επιστρεφόμενη τιμή της συνάρτησής σας. Ο τύπος και η δομή δεδομένων εξαρτώνται από το τι επιστρέφει η συνάρτησή σας. Για παράδειγμα, εάν η συνάρτησή σας επιστρέφει μια συμβολοσειρά, output είναι μια συμβολοσειρά. Εάν η συνάρτησή σας επιστρέφει ένα λεξικό, output το είναι ένα αντικείμενο JSON.
  • errors: Μια λίστα σφαλμάτων που καταγράφηκαν κατά την εκτέλεση. Κάθε σφάλμα περιλαμβάνει ένα , messageκαι ένα nameπροαιρετικό properties αντικείμενο που περιέχει ζεύγη κλειδιού-τιμής με περισσότερες λεπτομέρειες. Αδειάστε όταν η λειτουργία είναι επιτυχής.

Κωδικοί απόκρισης

Η συνάρτηση επιστρέφει τους ακόλουθους κωδικούς HTTP ως αποτέλεσμα της εκτέλεσης.

κωδικού απόκρισης Μήνυμα Περιγραφή
200 Επιτυχία Η αίτηση ολοκληρώθηκε με επιτυχία.
400 Κακή αίτηση Το αίτημα δεν ήταν έγκυρο. Αυτή η απόκριση μπορεί να οφείλεται σε ελλιπείς ή λανθασμένες τιμές παραμέτρων εισόδου, τύπους δεδομένων ή ονόματα. Αυτή η απόκριση θα μπορούσε επίσης να προκληθεί από την απενεργοποίηση της δημόσιας πρόσβασης για μια λειτουργία.
403 Δεν επιτρέπεται Η απόκριση ήταν πολύ μεγάλη και η κλήση απέτυχε.
408 Αίτημα Timeout Το αίτημα απέτυχε επειδή η εκτέλεση διήρκεσε περισσότερο από τον μέγιστο επιτρεπόμενο χρόνο.
409 Διένεξη Δεν ήταν δυνατή η ολοκλήρωση του αιτήματος λόγω κατάστασης διένεξης. Αυτό το σφάλμα μπορεί να οφείλεται σε μια εξαίρεση που δεν έχει αντιμετωπιστεί ή σε ένα σφάλμα με τα διαπιστευτήρια χρήστη.
422 Κακή αίτηση Το αίτημα απέτυχε λόγω ενός UserThrownError που προέκυψε στη συνάρτηση.
500 Σφάλμα εσωτερικού διακομιστή Το αίτημα απέτυχε λόγω εσωτερικού σφάλματος στην υπηρεσία.