การทํางานกับแผนที่ค่าคีย์

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

มีบางครั้งที่คุณต้องการจัดเก็บข้อมูลเพื่อดึงข้อมูลขณะรันไทม์ ซึ่งเป็นข้อมูลที่ยังไม่หมดอายุ ที่ไม่ควรฮาร์ดโค้ดในตรรกะพร็อกซี API คีย์-แมปค่า (KVM) เหมาะสำหรับกรณีนี้ ต KVM คือคอลเล็กชันที่กำหนดเองของคู่คีย์/ค่า ทั้งที่เข้ารหัสและไม่เข้ารหัส ต่อไปนี้เป็นตัวอย่างสองตัวอย่าง:

หากต้องการเรียนรู้เกี่ยวกับความต่อเนื่องประเภทอื่นๆ โปรดดู เพิ่มการแคชและการคงอยู่

สถานการณ์จำลอง KVM

ต่อไปนี้เป็นสถานการณ์ที่ KVM นำมาใช้เป็นประโยชน์

  • คุณมีพร็อกซี API ที่ต้องเรียกใช้ URL เป้าหมาย (หรือข้อความไฮไลต์บริการ) 1 รายการในการทดสอบ และ URL เป้าหมายอีกรายการในสภาพแวดล้อมที่ใช้งานจริง แทนการฮาร์ดโค้ด URL ใน พร็อกซีของคุณ คุณสามารถตั้งค่าให้พร็อกซีตรวจหาสภาพแวดล้อมการใช้งาน แล้วเรียกใช้คีย์ที่เกี่ยวข้อง นโยบายการดำเนินการแมปค่า และดึง URL เป้าหมายที่ถูกต้องจาก KVM รายการใดรายการหนึ่งที่คุณ สร้าง แล้ว และในภายหลัง หากเป้าหมายใดเป้าหมายหนึ่งหรือทั้ง 2 เป้าหมายเปลี่ยนแปลง คุณเพียงอัปเดต KVM ด้วย URL ใหม่ พร็อกซีจะรับค่าค่าใหม่ และไม่จำเป็นต้องทำให้พร็อกซีใช้งานได้ใหม่
  • คุณต้องการจัดเก็บข้อมูลเข้าสู่ระบบ คีย์ส่วนตัว หรือโทเค็น เช่น โทเค็น สำหรับใช้ภายนอก บริการ ข้อมูลเข้าสู่ระบบที่ต้องใช้ในการสร้างโทเค็น OAuth หรือคีย์ส่วนตัว ที่ใช้ในข้อความไฮไลต์ Java หรือ JavaScript สำหรับการเข้ารหัสหรือการลงชื่อ JSON Web Token (JWT) แทนที่จะเป็น การส่งข้อมูลเข้าสู่ระบบ คีย์ หรือโทเค็นในคำขอ หรือฮาร์ดโค้ดในตรรกะของพร็อกซี คุณสามารถจัดเก็บไว้ใน KVM (เข้ารหัสเสมอ) และดึงข้อมูลแบบไดนามิกในการเรียกไปยัง เป้าหมายที่กำหนด

คุณจะพบกับสถานการณ์อื่นๆ ที่เป็นประโยชน์ในการจัดเก็บคู่คีย์/ค่า ใน โดยทั่วไป ให้พิจารณาใช้ KVM เมื่อ

  • ตำแหน่งที่เจาะจงในโค้ดต้องใช้ค่าที่แตกต่างกันขณะรันไทม์
  • ข้อมูลที่ละเอียดอ่อนจำเป็นต้องส่งผ่านโดยไม่ต้องฮาร์ดโค้ด
  • ต้องการจัดเก็บค่าที่ไม่มีวันหมดอายุเหมือนแคช

KVM มีขอบเขต

ขอบเขตหมายถึง "พื้นที่ที่มี KVM ให้บริการ" คุณสร้าง KVM ได้ในขอบเขตต่อไปนี้ organization, environment และ apiproxy

ตัวอย่างเช่น ถ้าพร็อกซี API เดียวต้องใช้ข้อมูลใน KVM คุณสามารถสร้าง KVM ที่ apiproxy ซึ่งมีเฉพาะพร็อกซี API นั้นเท่านั้นที่เข้าถึงข้อมูลได้

หรือคุณอาจต้องการให้พร็อกซี API ทั้งหมดในสภาพแวดล้อมการทดสอบมีสิทธิ์เข้าถึงแมปค่าคีย์ ซึ่งคุณจะสร้างแมปค่าคีย์ที่ขอบเขตสภาพแวดล้อม พร็อกซีที่ทำให้ใช้งานได้ใน "prod" สภาพแวดล้อมไม่สามารถเข้าถึง KVM ใน "การทดสอบ" ขอบเขตของสภาพแวดล้อม ถ้าต้องการ KVM เท่าเดิม คีย์ที่จะพร้อมใช้งานในเวอร์ชันที่ใช้งานจริง ให้สร้าง KVM แบบคู่ขนานที่กำหนดขอบเขตเป็น "prod" ของคุณ

หากต้องการให้พร็อกซีทั้งหมดในทุกสภาพแวดล้อมเข้าถึง KVM เดียวกัน ให้สร้าง KVM ที่ organization ขอบเขต

เกี่ยวกับ KVM ที่เข้ารหัส

KVM ที่เข้ารหัสจะเข้ารหัสด้วยคีย์การเข้ารหัส AES-128 ที่ Apigee สร้างขึ้น คีย์ที่ใช้ในการ เข้ารหัส KVM ที่จัดเก็บอยู่ในขอบเขตของ KVM ตัวอย่างเช่น ภายในองค์กร KVM ที่เข้ารหัสซึ่งคุณสร้างที่ขอบเขตสภาพแวดล้อมจะสร้างขึ้นโดยใช้ขอบเขตระดับสภาพแวดล้อมเดียวกัน

Edge จะจัดการการแสดงค่าที่เข้ารหัสด้วยวิธีต่อไปนี้ (ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้าง KVM ที่เข้ารหัสได้ที่การจัดการและการใช้ KVM)

UI ของ Edge

แมปค่าคีย์ที่เข้ารหัสจะแสดงค่ามาสก์ด้วยเครื่องหมายดอกจันใน UI (*****) สำหรับ ตัวอย่าง:

Management API

ใน API การจัดการ ค่าที่เข้ารหัสจะส่งกลับแบบมาสก์ ต่อไปนี้เป็นการจัดการตัวอย่าง การตอบกลับ API ในการเรียกใช้ KVM ที่เข้ารหัส:

{
  "encrypted": true,
  "entry": [
    {
      "name": "Key1",
      "value": "*****"
    },
    {
      "name": "Key2",
      "value": "*****"
    }
  ],
  "name": "secretMap"
}

ติดตามและแก้ไขข้อบกพร่อง

เมื่อคุณใช้นโยบายการดำเนินการแมปค่าคีย์ ในการเรียกค่า KVM ที่เข้ารหัส คุณจะต้องระบุชื่อของตัวแปรเพื่อเก็บฟิลด์ หากต้องการได้รับค่าที่เข้ารหัส คุณต้องเพิ่ม "private." นำหน้าเป็น ชื่อตัวแปร ซึ่งทำให้คีย์/ค่า KVM ไม่ปรากฏในเซสชันการติดตามและแก้ไขข้อบกพร่อง

จำกัดสูงสุด

ในองค์กรที่มี แกน เปิดใช้ Persistence Services (CPS) แล้ว:

  • ชื่อ/ตัวระบุ KVM จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  • คีย์ต้องมีขนาดไม่เกิน 2 KB
  • ขนาดของค่าต้องไม่เกิน 10 KB

สำหรับ Apigee Edge สำหรับ Private Cloud แต่ละ KVM ไม่ควรเกิน 15 MB (ซึ่งเป็นขนาดคีย์และค่ารวมกัน) หากเกินขีดจำกัดนี้ Apigee Edge สำหรับ Private Cloud จะแสดงข้อผิดพลาด หากต้องการระบุขนาดของ KVM คุณสามารถใช้ คำสั่ง nodetool cfstats

KVM ที่มีขนาดใหญ่กว่าอาจส่งผลให้ประสิทธิภาพลดลง ดังนั้น คุณควรแยกพื้นที่โฆษณา KVM โมโนลิธเป็น KVM ที่มีขนาดเล็กกว่าเพื่อปรับปรุงประสิทธิภาพ

การจัดการและการใช้ KVM

คุณสร้าง จัดการ และใช้ KVM ได้หลายวิธี ส่วนนี้จะอธิบายเกี่ยวกับ ตัวเลือกสำหรับการสร้างแล้วดึงข้อมูล ทั้ง KVM ที่เข้ารหัสและไม่เข้ารหัส

การสร้างและการอัปเดต KVM

คุณสร้างและอัปเดต KVM ได้ด้วยวิธีต่อไปนี้

  • นโยบายการดำเนินการแมปค่าคีย์ (ไม่มีการเข้ารหัส)

    สำหรับการสร้างและอัปเดต KVM แบบรันไทม์โดยพร็อกซี API ให้ใช้ นโยบายการดำเนินการแมปค่าคีย์ (ในนโยบาย คุณระบุชื่อ KVM ใน แอตทริบิวต์ mapIdentifier ระดับบนสุด element.)

    เอลิเมนต์ <InitialEntries> ช่วยให้คุณสร้างและป้อนข้อมูล ชุดรายการพื้นฐานใน KVM ใหม่ทันทีที่คุณบันทึกนโยบายใน UI หรือติดตั้งใช้งาน พร็อกซี API (หากคุณพัฒนาไว้แบบออฟไลน์) หากค่ามีการเปลี่ยนแปลงในนโยบาย พารามิเตอร์ที่มีอยู่ จะถูกเขียนทับ คีย์/ค่าใหม่จะถูกเพิ่มลงใน KVM ที่มีอยู่ควบคู่ไปกับ คีย์/ค่าที่มีอยู่

    องค์ประกอบ <Put> สร้าง KVM ใหม่หากไม่มี มีอยู่แล้ว และโมเดลจะสร้างคีย์ที่มีค่าอย่างน้อย 1 ค่า หาก KVM อยู่แล้ว มีอยู่แล้ว ระบบจะเพิ่มคีย์/ค่า (หรืออัปเดตหากมีคีย์อยู่แล้ว) คุณสามารถใช้ องค์ประกอบ <Put> หลายรายการในนโยบาย KVM

  • Management API

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

    API การจัดการแผนที่คีย์/ค่า ช่วยให้คุณสร้าง อัปเดต และลบ KVM และคีย์/ค่าที่เข้ารหัสได้ที่ ขอบเขตทั้งหมด (องค์กร สภาพแวดล้อม และ apiproxy)

    หากต้องการสร้าง KVM ที่เข้ารหัสด้วย API การจัดการ ให้เพิ่ม "encrypted" : "true" ไปยังเพย์โหลด JSON คุณสามารถเข้ารหัส KVM ได้เมื่อคุณสร้าง ให้พวกเขา คุณเข้ารหัส KVM ที่มีอยู่ไม่ได้

  • UI การจัดการ

    คุณสามารถสร้างและอัปเดตใน UI การจัดการ Edge ได้ ขอบเขตระดับสภาพแวดล้อม KVM ซึ่งเป็นขอบเขตเดียวของ KVM ที่ จะปรากฏใน UI UI การจัดการเป็นวิธีที่ดีในการจัดการข้อมูล KVM สำหรับ API ด้วยตนเอง พร็อกซีขณะรันไทม์ ดูการสร้างและแก้ไขแมปค่าคีย์สภาพแวดล้อม เพื่อดูข้อมูลเพิ่มเติม

กำลังเรียกข้อมูล KVM

คุณสามารถเรียกค่าคีย์ที่เข้ารหัสและไม่ได้เข้ารหัสด้วยวิธีเดียวกัน โดยมีรูปแบบเพียงเล็กน้อย เมื่อดึงข้อมูลด้วยนโยบายการดำเนินการแมปค่าคีย์

  • นโยบาย: ใช้องค์ประกอบ <Get> ใน นโยบายการดำเนินการแมปค่าคีย์ เพื่อเรียก KVM ที่เข้ารหัสและไม่เข้ารหัส ความแตกต่างเพียงเล็กน้อยอย่างหนึ่งคือ ในการดึงข้อมูลค่าที่เข้ารหัสด้วยนโยบาย คุณต้องเพิ่ม "private." นำหน้าชื่อของตัวแปรที่จะมีค่าที่ดึงมา ตามที่อธิบายไว้ใน รับส่วนการดำเนินการ ของหัวข้ออ้างอิง คำนำหน้าดังกล่าวซ่อนค่าจากการติดตามและแก้ไขข้อบกพร่อง ขณะที่คุณกำลังแก้ไขข้อบกพร่องของพร็อกซี API
  • Management API: สำหรับการจัดการด้านการดูแลระบบ คุณสามารถใช้ การสร้างและแก้ไขแมปค่าคีย์สภาพแวดล้อม เพื่อรับ KVM และคีย์/ค่า เช่น หากคุณต้องการ สำรองข้อมูล KVM โดยการรับและจัดเก็บคำจำกัดความ JSON และใช้ API การจัดการ โปรดทราบ แต่ค่าที่เข้ารหัสจะแสดงเป็น ***** ในการตอบกลับของ API
  • UI การจัดการ: คุณดู KVM ระดับสภาพแวดล้อมในการจัดการได้ UI โดยไปที่ API > การกำหนดค่าสภาพแวดล้อม > การแมปค่าคีย์ (คลาสสิก Edge) หรือผู้ดูแลระบบ > สภาพแวดล้อม > Key Value Maps (New Edge)

ตัวอย่าง KVM

สำหรับตัวอย่างของการใช้ KVM เพื่อป้อนข้อมูลค่าใน URL โปรดดู https://community.apigee.com/questions/32727/templatize-target-url-with-kvm-by-environment.html.