บทแนะนำเป้าหมายที่โฮสต์

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
ข้อมูล

บทแนะนำต่อไปนี้อธิบายวิธีทำให้แอปพลิเคชัน Node.js ใช้งานได้ใน Edge โดยใช้เป้าหมายที่โฮสต์ซึ่งเป็นสภาพแวดล้อมรันไทม์ของ Node.js ดั้งเดิมที่ฝากไว้โดย Apigee

บทแนะนำจะอธิบายงานต่อไปนี้

  • การทำให้แอป Node.js ใช้งานได้กับเป้าหมายที่โฮสต์โดยใช้ Edge UI
  • การทำให้แอป Node.js ใช้งานได้กับเป้าหมายที่โฮสต์จากเครื่องพัฒนาซอฟต์แวร์ในเครื่อง
  • การย้ายข้อมูลพร็อกซีที่มีอยู่ด้วยการติดตั้งใช้งานเป้าหมาย Edge Node.js ดั้งเดิมไปยังเป้าหมายที่โฮสต์

ทำให้แอป Node.js ใช้งานได้กับเป้าหมายที่โฮสต์โดยใช้ Edge UI

ในบทแนะนำนี้ คุณจะได้ทำให้แอป Node.js แบบง่ายๆ ใช้งานได้กับเป้าหมายที่โฮสต์โดยใช้ Edge UI เมื่อดูบทแนะนำจนจบ คุณจะเข้าใจโครงสร้างพื้นฐานและเนื้อหาพื้นฐานของพร็อกซีเป้าหมายที่โฮสต์ รวมถึงวิธีเข้าถึงการทำให้ใช้งานได้และสร้างไฟล์บันทึก

ลงชื่อเข้าใช้

  1. ไปที่ apigee.com/edge
  2. ป้อนข้อมูลรับรองการเข้าสู่ระบบ Apigee ของคุณเพื่อลงชื่อเข้าใช้

สร้างพร็อกซีใหม่

  1. ในเมนูการนําทางด้านข้าง เลือกพัฒนา > พร็อกซี API
  2. คลิก + พร็อกซี
  3. ในหน้าสร้างพร็อกซี ให้เลือกเป้าหมายที่โฮสต์
  4. คลิกถัดไป
  5. ในช่องชื่อพร็อกซี ให้ป้อน hello-hosted-targets
  6. โปรดตรวจสอบว่าได้เลือกตัวอย่าง" Hello World" แล้ว
  7. คลิกถัดไป
  8. ในหน้าความปลอดภัย ให้เลือกผ่าน (ไม่มี) สําหรับการให้สิทธิ์
  9. คลิกถัดไป
  10. คลิกถัดไป
  11. ในหน้าบิลด์ ให้ตรวจสอบว่าเลือกสภาพแวดล้อมทดสอบแล้ว โปรดสังเกตว่าประเภทพร็อกซีคือเป้าหมายที่โฮสต์
  12. คลิกสร้างและทำให้ใช้งานได้ การทำให้พร็อกซีใช้งานได้อาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์
  13. หลังจากทำให้พร็อกซีใช้งานได้เรียบร้อยแล้ว ให้คลิกดูพร็อกซี hello-hosted-targets ที่ด้านล่างของหน้า
  14. เรียกใช้พร็อกซี API วิธีที่ง่ายที่สุดในการดำเนินการนี้คือการไปที่แท็บติดตาม เริ่มเซสชันการติดตาม แล้วคลิกส่ง คุณควรได้รับสถานะ 200 พร้อมการตอบกลับดังต่อไปนี้
    {"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}

ตรวจสอบพร็อกซี

  1. ใน Edge UI ให้คลิกแท็บพัฒนา
  2. ใน Navigator ให้เลือกค่าเริ่มต้นในส่วนปลายทางเป้าหมาย
  3. ในตัวแก้ไขโค้ด ให้สังเกตว่ามีองค์ประกอบย่อย <HostedTarget/> ที่ว่างเปล่าใต้องค์ประกอบ <TargetEndpoint> ต้องระบุแท็กว่างนี้ ซึ่งจะบอก Edge ว่าเป้าหมายของพร็อกซีคือแอปพลิเคชันที่มีการทำให้ใช้งานได้กับสภาพแวดล้อมเป้าหมายที่โฮสต์

  4. ใน Navigator ให้สังเกตเนื้อหาในส่วนสคริปต์ ไฟล์แอป Node.js จะแสดงอยู่ในป้ายกำกับที่โฮสต์ไว้

  5. ใน Edge UI ให้ตรวจสอบไฟล์ที่แสดงอยู่ในส่วนโฮสต์ในสคริปต์ ดังนี้
    • ไฟล์ app.yaml มีข้อมูลการกำหนดค่า เช่น คุณอาจเพิ่มตัวแปรสภาพแวดล้อมที่จะพร้อมใช้งานสำหรับแอปพลิเคชัน Node.js ขณะรันไทม์ได้ สำหรับตัวอย่างนี้ คุณไม่จำเป็นต้องแก้ไขไฟล์
    • ไฟล์ index.js คือไฟล์หลักของแอป Node.js
    • หากแอปมีทรัพยากร Dependency ของโมดูล การอ้างอิงดังกล่าวจะต้องแสดงอยู่ใน package.json

ดูไฟล์บันทึก

ไฟล์บันทึกของแอปพลิเคชันอาจมีประโยชน์สำหรับการแก้ไขข้อบกพร่องที่เกิดขึ้นระหว่างระยะบิลด์และระหว่างรันไทม์

  1. ใน Edge UI ให้คลิกแท็บพัฒนา
  2. หากต้องการดูบันทึกของบิลด์ ให้คลิกบันทึกของบิลด์
  3. คลิกบันทึกรันไทม์เพื่อดูบันทึกการทำให้ใช้งานได้

    โปรดดูเพิ่มเติมที่การเข้าถึงไฟล์บันทึก

สรุป

  • คุณได้ทำให้แอปพลิเคชัน Node.js แบบง่ายๆ ใช้งานได้ในสภาพแวดล้อมเป้าหมายที่โฮสต์ และทดสอบใน Edge UI
  • คุณได้ทราบว่าพร็อกซีเป้าหมายที่โฮสต์ต้องใช้แท็กว่างพิเศษในปลายทางเป้าหมายที่ชื่อว่า <HostedTarget/>
  • คุณทราบว่า Edge โหลดทรัพยากร Dependency ของโมดูลให้คุณโดยอัตโนมัติ และต้องระบุการอ้างอิงดังกล่าวในไฟล์ package.json
  • และคุณยังได้รู้วิธีตรวจสอบไฟล์บันทึกบิวด์และรันไทม์ด้วย

ทำให้ Node.js จากระบบของคุณใช้งานได้ใน Edge

ส่วนนี้จะอธิบายวิธีทำให้แอปพลิเคชัน Node.js แบบสแตนด์อโลนใช้งานได้จากระบบภายในของคุณกับเป้าหมายที่โฮสต์โดยใช้ apigeetool ยูทิลิตี apigeetool จะรวมแอป Node.js เข้ากับพร็อกซีเป้าหมายที่โฮสต์ใหม่ และทำให้ใช้งานได้กับ Edge

ติดตั้ง Apigeetool

ขอแนะนำให้นักพัฒนาซอฟต์แวร์นำโค้ดพร็อกซีไปใช้ใน Edge โดยใช้ apigeetool หากต้องการติดตั้ง apigeetool ให้เรียกใช้คำสั่ง NPM ต่อไปนี้

npm install -g apigeetool

สร้างแอป Node.js

เพื่ออำนวยความสะดวก เราจึงเตรียมโค้ดสำหรับแอป Node.js ง่ายๆ ไว้ให้คุณ

  1. สร้างไดเรกทอรีสำหรับแอป Node.js โดยเรียกไดเรกทอรี node-hosted-express
  2. cd ไปยังไดเรกทอรีใหม่
  3. สร้างไฟล์ชื่อ index.js และคัดลอกโค้ดนี้ไปยังไฟล์
  4. var express = require('express')
    var app = express()
    
    app.get('/', function(req, res) {
        res.json({
            hello: "Hello World!"
        })
    })
    
    app.get('/hello/:name', function(req, res) {
        var name = req.params.name
        res.json({
            hello: "hello " + name
        })
    })
    
    var server = app.listen(process.env.PORT || 9000, function() {
        console.log('Listening on port %d', server.address().port)
    })
    
  5. สร้างไฟล์ชื่อ package.json และคัดลอกโค้ดนี้ไปใส่ โปรดสังเกตว่าโมดูล Express จะแสดงเป็นทรัพยากร Dependency
  6. {
        "name": "hello-world",
        "version": "1.0.0",
        "main": "index.js",
        "scripts": {
            "start": "node index.js --use_strict"
        },
        "author": "",
        "license": "",
        "dependencies": {
            "express": "^4.16.0"
        }
    }
    
  7. สร้างไฟล์ชื่อ app.yaml และคัดลอกโค้ดต่อไปนี้ลงในไฟล์
  8. runtime: node
    runtimeVersion: 8
    application: my-express-app
    env:
      - name: NODE_ENV
        value: production
      - name: LOG_LEVEL
        value: 3
    
  9. ตรวจสอบว่าไดเรกทอรีมีลักษณะเช่นนี้
    ls
    app.yaml index.js package.json
    

ตรวจสอบโครงสร้างไดเรกทอรีที่จำเป็นสำหรับโค้ดของแอป

แอป Node.js ต้องมีโครงสร้างเดียวกันกับแอป Node.js มาตรฐาน แต่โปรดตรวจสอบว่าคุณได้ปฏิบัติตามข้อกำหนดเหล่านี้ก่อนที่จะทำให้ใช้งานได้กับ apigeetool ไปยัง Edge

  • ต้องมีไฟล์ Manifest app.yaml และต้องอยู่ในไดเรกทอรีรากของแอป ดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์นี้ได้ที่ไฟล์ Manifest
  • ต้องมีไฟล์ package.json โดยจะต้องระบุทรัพยากร Dependency ที่แอปต้องการ
  • ไม่ ต้องมีโฟลเดอร์ node_modules Edge จะเรียกใช้ npm install ให้คุณเมื่อมีการทำให้แอป Node.js ใช้งานได้ โดยรับทรัพยากร Dependency จาก package.json เวลาเดียวที่คุณต้องระบุ node_modules อย่างชัดเจนคือเมื่อคุณมีโมดูลที่กำหนดเองซึ่งไม่พร้อมใช้งานจนถึง npm

การทำให้พร็อกซีใช้งานได้

  1. ในเทอร์มินัล ให้ cd ไปยังไดเรกทอรีรากของแอปพลิเคชัน Node.js
  2. เรียกใช้ apigeetool ด้วยคำสั่ง deployhostedtarget
  3. apigeetool deployhostedtarget -o org -e env -n proxy-name -b /node-hosted-express -u username

    โดยที่ -n คือชื่อที่ต้องการตั้งให้กับพร็อกซีใหม่ ต้องไม่ซ้ำกันในองค์กร จำกัดอักขระที่คุณอนุญาตให้ใช้ในชื่อดังต่อไปนี้ a-z0-9._\-$%

    เช่น

    apigeetool deployhostedtarget -o myorg -e test -n node-hosted-express -b /node-hosted-express -u jdoe@apigee.com

    ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ apigeetool ได้ที่ https://github.com/apigee/apigeetool-node

กำลังทดสอบพร็อกซี

คุณทดสอบพร็อกซีด้วยคำสั่ง cURL กับไคลเอ็นต์ REST เช่น Postman หรือใน Edge UI ในเครื่องมือติดตามได้ ต่อไปนี้คือตัวอย่างคำสั่ง cURL

curl http://myorg-test.apigee.net/node-hosted-express
     {"date":1506992197427,"msg":"hello-world"}

การรับบันทึกบิลด์

บันทึกของบิลด์จะแสดงเอาต์พุตที่เกี่ยวข้องกับการทำให้ใช้งานได้และการสร้างแอป Node.js โปรดดูไฟล์บันทึกเพิ่มเติม

apigeetool getlogs -u username -o org -e env --hosted-build -n proxy-name

เช่น

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-build -n node-hosted-express

การรับบันทึกรันไทม์

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

apigeetool getlogs -u username -o org -e env --hosted-runtime -n proxy-name

เช่น

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-runtime -n node-hosted-express

การดูพร็อกซีใน UI ของ Edge

หลังจากทำให้ใช้งานได้เรียบร้อยแล้ว คุณจะดูและแก้ไขพร็อกซีได้ในส่วนพร็อกซี API ของ Edge UI

การย้ายพร็อกซี Node.js ที่มีอยู่ไปยังพร็อกซีเป้าหมายที่โฮสต์

หัวข้อนี้จะอธิบายวิธีย้ายข้อมูลพร็อกซี Edge API ที่มีอยู่ซึ่งใช้การติดตั้งใช้งานเป้าหมาย Node.js ดั้งเดิมด้วยตนเองไปยังเป้าหมายที่โฮสต์ นอกจากนี้ยังอธิบายวิธีทำให้พร็อกซีใช้งานได้หลังจากที่ทำตามขั้นตอนการย้ายข้อมูลแล้ว

ขั้นตอนการย้ายข้อมูลจะเก็บโครงสร้างพร็อกซี API, นโยบาย, โฟลว์ และองค์ประกอบการกำหนดค่าอื่นๆ ไว้ โดยคุณจะดำเนินการย้ายข้อมูลได้ใน4 ขั้นตอนตามที่ระบุไว้ด้านล่าง จากนั้นจึงทำให้พร็อกซีที่ย้ายข้อมูลใช้งานได้ด้วย apigeetool

ขั้นตอนที่ 1: ปรับโครงสร้างไฟล์พร็อกซี

หากต้องการปรับโครงสร้างไฟล์ พร็อกซี API ต้องอยู่ในระบบไฟล์ในเครื่อง หากทำให้พร็อกซีใช้งานได้ใน Edge คุณต้องดาวน์โหลดพร็อกซีก่อนดำเนินการต่อ ในการกำหนดค่าแบบเดิม และ "แพ็กเกจ" พร็อกซี Edge ที่มีโค้ด Node.js จะมีโครงสร้างไฟล์นี้ โค้ดแอปพลิเคชัน Node.js จะวางไว้ในไดเรกทอรี resources/node ดังนี้

apiproxy/
    policies/
    proxies/
    targets/
    resources/
      node/
        Your application code


สำหรับเป้าหมายที่โฮสต์ คุณต้องวางไดเรกทอรีรากของแอป Node.js ไว้ในไดเรกทอรีที่ชื่อ resources/hosted เพียงสร้างไดเรกทอรีใหม่ชื่อ resources/hosted และย้ายเนื้อหาของ resources/node ไปยังไดเรกทอรีดังกล่าว จากนั้นให้ลบไดเรกทอรี resources/node

apiproxy/
     policies/
     proxies/
     targets/
     resources/
       hosted/
         Your application code

ขั้นตอนที่ 2: เพิ่มไฟล์ Manifest

สร้างไฟล์ Manifest ชื่อ app.yaml แล้ววางไว้ในไดเรกทอรี apiproxy/resources/hosted

ต่อไปนี้เป็นตัวอย่างไฟล์ app.yaml โดยระบุว่ารันไทม์คือ Node.js (จำเป็น) นอกจากนี้ยังสร้างตัวแปรสภาพแวดล้อมในสภาพแวดล้อมการดำเนินการ (ตัวแปรที่แอป Node.js เข้าถึงได้) ตัวแปรสภาพแวดล้อมเป็นตัวเลือกที่ไม่บังคับและจะแสดงที่นี่เป็นตัวอย่างเท่านั้น โปรดดูรายละเอียดและตัวอย่างเพิ่มเติมที่หัวข้อไฟล์ Manifest

runtime: node
  env:
    - name: NODE_ENV
      value: production


ตัวอย่างต่อไปนี้แสดงโครงสร้างโปรเจ็กต์ Node.js ที่อยู่ในตำแหน่งที่ถูกต้องในพร็อกซีสำหรับการทำให้เป้าหมายที่โฮสต์ใช้งานได้

apiproxy/
   resources/
      hosted/
        index.js
        node_modules/
        app.yaml
        package.json

ขั้นตอนที่ 3: ตรวจสอบว่าคุณมีไฟล์ package.json

ในพร็อกซี Edge Node.js ดั้งเดิมจะมี package.json หรือไม่ก็ได้ แต่สำหรับเป้าหมายที่โฮสต์ คุณจะต้องระบุไว้ในไดเรกทอรี apiproxy/resources/hosted อย่าลืมระบุทรัพยากร Dependency ที่จำเป็นสำหรับแอปในไฟล์นี้

ขั้นตอนที่ 4: แก้ไขปลายทางเป้าหมายของพร็อกซี

พร็อกซี Node.js ดั้งเดิมต้องมีแท็กชื่อ <ScriptTarget> ในไฟล์ปลายทางเป้าหมาย (โดยทั่วไปคือ /apiproxy/targets/default.xml) สำหรับเป้าหมายที่โฮสต์ คุณจะต้องเพิ่มแท็กว่างที่ชื่อ <HostedTarget/> หากมีแท็ก ScriptTarget ในไฟล์ ให้นำออก เช่น

    <?xml version="1.0" encoding="UTF-8"?>
    <TargetEndpoint name="default">
       <Description />
       <FaultRules />
       <PreFlow name="PreFlow">
          <Request />
          <Response />
       </PreFlow>
       <PostFlow name="PostFlow">
          <Request />
          <Response />
       </PostFlow>
       <Flows />
       <HostedTarget />
    </TargetEndpoint>
    

การทำให้พร็อกซีใช้งานได้

ตอนนี้คุณทำให้พร็อกซีใช้งานได้โดยใช้คำสั่ง apigeetool deployproxy แล้ว

  1. cd ในไดเรกทอรีรากของพร็อกซี: /apiproxy
  2. ใช้คำสั่งนี้เพื่อทำให้พร็อกซีใช้งานได้
  3. apigeetool deployproxy -u username -o org -e env -n proxy-name -d .

    เช่น

    apigeetool deployproxy -u jdoe -o docs -e test -n hello-world -d .

ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ apigeetool ได้ที่ https://github.com/apigee/apigeetool-node/blob/master/README.md

กำลังทดสอบพร็อกซี

คุณทดสอบพร็อกซีด้วยคำสั่ง cURL กับไคลเอ็นต์ REST เช่น Postman หรือใน Edge UI ในเครื่องมือติดตามได้ ตัวอย่างคำสั่ง cURL มีดังนี้

curl http://myorg-test.apigee.net/hello-world
Hello,World!