ใช้ฟังก์ชันในแอป Fabric

ฟังก์ชันคือฟังก์ชัน TypeScript ที่ทํางานบนเซิร์ฟเวอร์ภายในแอป Fabric ของคุณ ใช้ฟังก์ชันสําหรับตรรกะที่ไม่ควรทํางานในเบราว์เซอร์ เช่น การทํางานกับความลับ การเข้าถึงข้อมูลที่มีสิทธิพิเศษ และการเรียกบริการปลายทางด้วยตัวตนของแอป

แต่ละฟังก์ชันจะถูกลงทะเบียนด้วยชื่อและเปิดเผยเป็นจุดสิ้นสุด HTTP ที่สามารถเรียกใช้งานได้ ส่วนหน้าของ React ของคุณจะเรียกใช้ฟังก์ชันผ่านไคลเอนต์ Rayfin ที่มีชนิดข้อมูล ดังนั้นคุณไม่จําเป็นต้องสร้างคําขอ การกําหนดเส้นทาง หรือการจัดการโทเค็น

Note

คําสั่งในบทความนี้ใช้เวอร์ชันพรีวิวของ Rayfin CLI

เมื่อใดควรใช้ฟังก์ชัน

ใช้ฟังก์ชัน Rayfin เพื่อ:

  • เรียกใช้ API ภายนอกด้วยโทเค็นแอปพลิเคชัน ตัวอย่างเช่น Azure AI Foundry, Azure DevOps, Fabric, Azure Storage และ Azure Key Vault
  • อ่านหรือเขียนฐานข้อมูลของแอปด้วยระบบความปลอดภัยระดับแถวที่เซิร์ฟเวอร์บังคับใช้
  • เก็บกุญแจ API ชื่อการติดตั้งโมเดล และความลับอื่น ๆ ออกจากโค้ดของไคลเอนต์
  • เรียกใช้การประสานงาน เช่น การเรียกแบบแฟนออก การรวบรวมข้อมูล หรือการแจ้งคําสั่ง AI ใกล้กับข้อมูล

ข้อกําหนดเบื้องต้น

ก่อนเริ่ม ให้ติดตั้งหรือสร้างทรัพยากรต่อไปนี้:

  • Node.js 20 ปีขึ้นไปและไม่มีปัญหาสุขภาพ
  • โครงสร้างแอป Fabric ที่สร้างขึ้นด้วย Rayfin CLI
  • ฟังก์ชัน Azure Core Tools ซึ่งโฮสต์ฟังก์ชันท้องถิ่นใช้สําหรับการดีบัก

ติดตั้ง ฟังก์ชัน Azure Core Tools เวอร์ชัน 4:

npm install --global azure-functions-core-tools@4

สร้างแอปที่มีฟังก์ชัน

สร้างโครงสร้างแอปและเริ่มต้นโปรเจกต์ฟังก์ชันของแอป:

npm create @microsoft/rayfin@latest

cd my-app

npx rayfin functions init

คําสั่งนี้จะ rayfin functions init เพิ่มโปรเจกต์ฟังก์ชัน การตั้งค่า TypeScript และไฟล์ฟังก์ชันเริ่มต้นลงในแอปที่มีอยู่

สร้างแอปด้วย GitHub Copilot

โครงนั่งร้านประกอบด้วยคําแนะนําและทักษะที่จําเป็นสําหรับการทํางานกับโครงการ GitHub Copilot เปิดโปรเจกต์ใน Visual Studio Code และอธิบายแอปที่คุณต้องการสร้างใน GitHub Copilot Chat

ตัวอย่างเช่น ใช้พรอมต์ต่อไปนี้เพื่อสร้างผู้ช่วยตรวจสอบคําขอดึงของ AI:

Build an app that helps business analysts track sales performance across
regions. Show key metrics, let analysts ask questions about trends, and
use Functions to securely retrieve data from our sales API with application
authentication.

GitHub Copilot สามารถสร้างและอัปเดตไฟล์และส่วนประกอบที่จําเป็นได้ คุณยังสามารถขอให้เอเจนต์รันแอป ดีบักฟังก์ชันในเครื่อง และติดตั้งแอปได้

เข้าใจรูปแบบโครงการ

คําสั่งเริ่มต้นฟังก์ชันจะอัปเดต rayfin/rayfin.yml และสร้าง rayfin/functions. แอปทั่วไปที่มีฟังก์ชันจะมีโครงสร้างดังนี้:

my-app/
├── rayfin/
│   ├── rayfin.yml
│   ├── data/
│   │   ├── TripPlan.ts
│   │   └── schema.ts
│   └── functions/
│       ├── package.json
│       ├── tsconfig.json
│       └── src/
│           ├── function_app.ts
│           └── types.ts
└── src/
    └── services/

ไฟล์เหล่านี้มีวัตถุประสงค์ดังต่อไปนี้:

เส้นทาง จุดประสงค์
rayfin/rayfin.yml กําหนดค่าการยืนยันตัวตน ข้อมูล ฟังก์ชัน และบริการโฮสต์แบบคงที่
rayfin/data/ ประกอบด้วยโมเดลข้อมูลของแอปและการส่งออกสคีมา
rayfin/functions/package.json กําหนดความพึ่งพาและสร้างสคริปต์สําหรับโปรเจกต์ฟังก์ชัน
rayfin/functions/tsconfig.json กําหนดค่าการสร้าง TypeScript สําหรับฟังก์ชัน
rayfin/functions/src/function_app.ts ประกอบด้วยการใช้งานฟังก์ชันของคุณ
rayfin/functions/src/types.ts ประกอบด้วยประเภทที่สร้างขึ้นAppFunctionsSchema อย่าแก้ไขไฟล์นี้ด้วยตนเอง
src/ ประกอบด้วยส่วนหน้าของ React และประเภทโดเมนหรือห่อโดเมนที่ใช้ร่วมกัน

เมื่อคุณเปิดใช้งานฟังก์ชัน rayfin/rayfin.yml จะรวมบริการฟังก์ชันดังนี้:

services:
  functions:
    enabled: true
    auth:
      type: application
    buildCommand: npm run build

การรับรองความถูกต้องของแอปพลิเคชัน

ฟังก์ชันที่เปิดใช้งานต้องการการตรวจสอบสิทธิ์แอปพลิเคชันอย่างชัดเจนใน rayfin/rayfin.yml:

services:
  functions:
    enabled: true
    auth:
      type: application
    buildCommand: npm run build

โครงสร้างฟังก์ชัน auth.type: applicationใหม่

ฟังก์ชันที่ถูกปิดใช้งานสามารถละเว้น auth. อย่างไรก็ตาม หากคุณจัดหา authจะต้องรวมถึง:

auth:
  type: application

npx rayfin up Full และ Normal npx rayfin dev Flow จะตรวจสอบการตั้งค่านี้ก่อนนําไปใช้กับการตั้งค่า Project กับ Fabric หรือ Docker backend

รันโหมด full npx rayfin up เพื่อใช้โหมดการตรวจสอบสิทธิ์ YAML กับแอประยะไกลที่มีอยู่

เส้นทางการตรวจสอบสิทธิ์ที่ใช้โดยฟังก์ชันที่ติดตั้ง

ฟังก์ชันที่ติดตั้งใช้เส้นทางการตรวจสอบสิทธิ์สองเส้นทางแยกกัน:

เส้นทางการเข้าถึง ข้อมูลรับรอง ตัวตนและสิทธิ์การเข้าถึง
การเชื่อมต่อภายนอกผ่าน ctx.Tokens.* โทเค็นทรัพยากรที่แพลตฟอร์มจัดให้ ตัวตนของแอปพลิเคชันและสิทธิ์บนทรัพยากรภายนอก
ฐานข้อมูล Rayfin ผ่าน ctx.getDataClient() โทเค็น Rayfin ของ Invocation ตัวตนและสิทธิ์ของผู้โทรบนฐานข้อมูล Rayfin

สําหรับแอป Fabric ปัจจุบัน ตัวตนของแอปพลิเคชันคือเจ้าของรายการ BaaS

ดังนั้นการเชื่อมต่อภายนอกจึงใช้สิทธิ์ของเจ้าของรายการ ไม่ใช่สิทธิ์ของผู้ใช้แอปที่เรียกใช้ฟังก์ชันนั้น ให้สิทธิ์การเข้าถึงที่จําเป็นสําหรับทรัพยากรภายนอกและ API ที่เรียกโดยโค้ดฟังก์ชันให้กับตัวตนของแอป

การประกาศกลุ่มเป้าหมายหรือการปรับใช้ฟังก์ชันไม่ได้ให้สิทธิ์ตัวตนของแอปแก่ทรัพยากรภายนอก

การลงชื่อเข้าใช้แอปและการอนุญาตให้เรียกใช้ฟังก์ชันนั้นแยกจากการเข้าถึงทรัพยากรภายนอกของตัวตนแอป

การเข้าถึงฐานข้อมูล Rayfin จะใช้โทเค็น Rayfin เสมอและรักษาตัวตนและสิทธิ์ฐานข้อมูลของผู้โทรไว้ การตั้งค่า services.functions.auth.type: application นี้จะไม่เปลี่ยนการเข้าถึงฐานข้อมูล Rayfin ไปยังตัวตนของแอปพลิเคชัน

สําหรับการประกาศกลุ่มเป้าหมาย โทเค็นทรัพยากร สิทธิ์ และพฤติกรรมการพัฒนาในเครื่อง ดูที่ เชื่อมต่อฟังก์ชันกับทรัพยากรภายนอก

เรียกใช้แอปภายในเครื่อง

จากโฟลเดอร์รากของแอป ลงชื่อเข้าใช้:

cd my-app
npx rayfin login

เริ่ม frontend และฟังก์ชันท้องถิ่นจะโฮสต์:

npm run dev

ในโปรเจกต์ npm run dev ที่เปิดใช้งานฟังก์ชัน จะแมปไปยัง rayfin dev. คําสั่งนี้จะนําสคีมา เริ่มโฮสต์ฟังก์ชันท้องถิ่น และเริ่มเซิร์ฟเวอร์พัฒนา Vite เปิด URL ที่พิมพ์ในเครื่อง terminal และปล่อยให้ terminal ทํางานต่อไปขณะพัฒนาและดีบักแอป

หากต้องการเริ่มต้นเฉพาะโฮสต์ฟังก์ชัน เช่น เมื่อคุณรันส่วนหน้าแยกต่างหาก ให้ใช้คําสั่งต่อไปนี้แทน:

cd my-app
npx rayfin dev 

ปรับใช้กับ Fabric

ปรับใช้ข้อมูล เว็บไซต์แบบคงที่ และฟังก์ชันของแอป:


npx rayfin up --workspace <workspace-name>

แทนที่<WORKSPACE>ด้วยชื่อของพื้นที่ทํางาน Fabric เป้าหมาย

เพิ่มฟังก์ชันให้กับแอปที่มีอยู่

จากรากของแอป Fabric ที่มีอยู่ เปิดใช้งานฟีเจอร์และเริ่มต้นโปรเจกต์ฟังก์ชันเพียงครั้งเดียว:


npx rayfin functions init

หลังจากเริ่มต้นแล้ว ให้เพิ่มการใช้งานฟังก์ชันลงในrayfin/functions/src/function_app.ts

Limitations

  • ความเป็นเจ้าของฟังก์ชัน: เฉพาะเจ้าของรายการฟังก์ชันข้อมูลผู้ใช้เท่านั้นที่สามารถแก้ไขและเผยแพร่โค้ดฟังก์ชันได้
  • คูลดาวน์การเผยแพร่: รออย่างน้อยสองนาทีหลังจากเผยแพร่ก่อนเผยแพร่อีกครั้ง คูลดาวน์นี้ใช้เมื่อเผยแพร่จากพอร์ทัล Functions ในเบราว์เซอร์, ฟังก์ชันข้อมูลผู้ใช้, ส่วนขยาย Visual Studio Code, การดําเนินการนําเข้า Git หรือกระบวนการปรับใช้
  • ขนาดแพ็กเกจการปรับใช้: ไฟล์ Functions ZIP ไม่สามารถเกิน 30 MB
  • ขนาดข้อมูลของคําขอ: บริการฟังก์ชันข้อมูลผู้ใช้บันทึกข้อมูลสูงสุด 4 MB สําหรับพารามิเตอร์คําขอทั้งหมดรวมกัน ขีดจํากัดนี้คาดว่าจะใช้กับฟังก์ชัน Rayfin แต่ยังไม่ได้รับการยืนยัน
  • เวลาหมดเวลาการทํางาน: ฟังก์ชันหนึ่งสามารถทํางานได้นานสูงสุด 240 วินาที
  • การเก็บบันทึกการเรียกร้อง: บันทึกการเรียกใช้ในอดีตจะถูกเก็บไว้เป็นเวลา 30 วันโดยค่าเริ่มต้น
  • อัตลักษณ์แอปพลิเคชัน: อัตลักษณ์แอปพลิเคชันในปัจจุบันเป็นเจ้าของรายการ BaaS

สําหรับข้อกําหนดความพร้อมใช้งานในภูมิภาคและรายละเอียดเพิ่มเติมเกี่ยวกับข้อจํากัดของฟังก์ชันข้อมูลผู้ใช้ โปรดดูรายละเอียดบริการและข้อจํากัดของฟังก์ชันข้อมูลผู้ใช้ Fabric