Gejala
Saya membuat fungsi HTTP bernama func-http di dalam layanan CustomDemo. Fungsi tersebut berjalan di runtime kustom dengan pemicu HTTP anonim. Kode routing sampel berikut digunakan untuk mengimplementasikan server HTTP dari runtime kustom:
@app.route('/test', methods = ['POST','GET'])
def test():Ketika saya menggunakan alat cURL atau browser untuk mengakses URL fungsi HTTP, kode kesalahan
404 dikembalikan. - Gunakan alat cURL untuk mengakses fungsi HTTP.
curl -v https://164901546557****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/CustomDemo/func-http/test - Gunakan browser untuk mengakses fungsi HTTP.
https://164901546557****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/CustomDemo/func-http/testCatatan URL fungsi HTTP memiliki format berikut:https://<account_id>.<region_id>.fc.aliyuncs.com/<version>/proxy/<serviceName>/<functionName>/<path>.
Solusi
Anda dapat menyelesaikan masalah ini dengan salah satu metode berikut:
- Akses fungsi menggunakan subdomain yang ditetapkan oleh Function Compute untuk pemicu HTTP baru. Untuk informasi lebih lanjut, lihat Langkah 3: Uji fungsi.
Format subdomain:
https://<subdomain>.<region_id>.fcapp.run/[action?queries]Kode sampel:
https://funcname-svcname-khljsjksld.cn-shanghai.fcapp.run/action?hello=world - Tambahkan header bernama
x-fc-invocation-targetke perintah yang digunakan untuk mengakses fungsi. Sintaksis perintah:
Kode sampel:curl -v -H "x-fc-invocation-target: 2016-08-15/proxy/$ServiceName/$functionName" https://<account_id>.<region_id>.fc.aliyuncs.com/$pathcurl -v -H "x-fc-invocation-target: 2016-08-15/proxy/CustomDemo/func-http" https://164901546557****.cn-hangzhou.fc.aliyuncs.com/test - Tautkan nama domain kustom ke fungsi. Kemudian, jalankan perintah berikut untuk mengakses fungsi lagi. Untuk informasi lebih lanjut tentang cara menautkan nama domain, lihat Konfigurasi nama domain kustom.Sebagai contoh, jika nama domain adalah
example.com, sintaksis perintah berikut digunakan:
Kode sampel:curl -v https://example.com/$pathcurl -v https://example.com/testPenting Ganti/$pathdengan path dari mana permintaan dapat memicu fungsi dalam layanan. Path tersebut dikonfigurasi saat Anda menautkan nama domain kustom. Untuk informasi lebih lanjut, lihat Aturan pencocokan rute. - Modifikasi kode fungsi Anda dan sebarkan fungsi tersebut. Kemudian, gunakan URL default untuk mengakses fungsi. Contoh berikut menunjukkan kode yang dimodifikasi:
Kode sampel:@app.route('/2016-08-15/proxy/CustomDemo/func-http/test', methods = ['POST','GET']) def test():curl -v https://164901546557****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/CustomDemo/func-http/test