ผู้จัดจำหน่ายระหว่างประเทศของ Alibaba Cloud: การเรียกใช้อินเทอร์เฟซ API ของ Alibaba Cloud และวิธีการกำหนดค่าคีย์
สำหรับนักเรียนที่ยังใหม่กับการประมวลผลแบบคลาวด์หรือการพัฒนาส่วนหลัง "การเรียกใช้อินเทอร์เฟซ API" เป็นวิธีเดียวที่จะเชื่อมต่อธุรกิจและทรัพยากรบนคลาวด์ไม่ว่าคุณจะต้องการเขียนสคริปต์สำหรับสวิตช์อัตโนมัติการปรับเปลี่ยนกลุ่มความปลอดภัยเป็นชุดหรือการรวมที่เก็บข้อมูล OSS ของ Alibaba Cloud และอินเทอร์เฟซโมเดลขนาดใหญ่เข้ากับระบบของคุณเองก็ไม่สามารถทำได้หากไม่มี API
อย่างไรก็ตามเมื่อหลายคนเห็นเงื่อนไขการเข้ารหัส (เช่น AccessKey, Secret, HMAC-SHA1, Signature Algorithm) พวกเขาก็หัวโตหรือเนื่องจากการกำหนดค่าที่ไม่เหมาะสมคีย์จึงรั่วไหลไปยัง GitHub โดยไม่ได้ตั้งใจทำให้เซิร์ฟเวอร์ถูกแฮกเกอร์แฮ็กเพื่อขุดและสูญเสียหนัก.
บทช่วยสอนของวันนี้จะพาคุณผ่านกระบวนการทั้งหมดในภาษาท้องถิ่น: จาก
วิธีการรับคีย์อย่างปลอดภัย
, ถึง
วิธีการกำหนดค่าอย่างหรูหราในท้องถิ่น
, และอีกครั้ง
เสร็จสิ้นการเรียก API ครั้งแรกด้วยรหัสที่ง่ายที่สุด
。
ขั้นตอนแรก: แนวคิดหลัก (อย่าใส่กุญแจประตูโดยตรง)
ก่อนที่จะเริ่มต้องมีการชี้แจงแนวคิดหลักสองประการ:
AK
และ
SK
。มันเหมือนของคุณ
บัตรประชาชนและรหัสผ่านระบบคลาวด์
。
AccessKey ID (เรียกว่า AK): เทียบเท่ากับ "ชื่อผู้ใช้" ของคุณเป็นสาธารณะและใช้เพื่อบอก Alibaba Cloud ว่า "ฉันเป็นใคร"
AccessKey Secret (SK): เทียบเท่ากับ "รหัสผ่าน" ของคุณต้องไม่เปิดเผยต่อสาธารณะเพื่อพิสูจน์ว่า "ฉันคือฉัน"
ทุกคำขอ API ของ Alibaba Cloud จำเป็นต้องเข้ารหัสและลงนามเนื้อหาที่ร้องขอด้วย SK หลังจากได้รับคำขอ Alibaba Cloud ก็ใช้อัลกอริทึมเดียวกันในการตรวจสอบและปล่อยมันไป
🚨กฎเหล็ก: อย่าใช้ AK/SK ของบัญชีหลัก!
หากคุณใช้คีย์ของบัญชี Alibaba Cloud Boss (บัญชีหลัก) โดยตรงคีย์นี้จะมีการควบคุมทรัพย์สินทั้งหมดในบัญชีของคุณสูงสุด (หักค่าธรรมเนียมลบฐานข้อมูลซื้อเซิร์ฟเวอร์)
แนวทางที่ถูกต้อง:
สร้างบัญชีย่อย (ผู้ใช้ RAM) เช่น "Sweeper" โดยเฉพาะกำหนดเฉพาะการอนุญาตให้ทำสิ่งที่เฉพาะเจาะจงจากนั้นใช้ AK/SK ของบัญชีย่อยนี้
ขั้นตอนที่สอง: คีย์การเข้าถึงที่ปลอดภัย (5นาที)
เราต้องผ่าน Alibaba Cloud
RAM (การควบคุมการเข้าถึง)
เพื่อสร้างคีย์บัญชีย่อยที่ปลอดภัย
1.สร้างผู้ใช้ย่อย RAM
ลงชื่อเข้าใช้คอนโซล Alibaba Cloud ป้อน RAM ในแถบค้นหาด้านบนแล้วคลิกเพื่อเข้าสู่คอนโซลควบคุมการเข้าถึง
ในแถบนำทางด้านซ้ายให้คลิก Identity Management-> ผู้ใช้
คลิกปุ่มสร้างผู้ใช้
การกำหนดค่าพารามิเตอร์หลัก: ชื่อการเข้าสู่ระบบ: ตั้งชื่อที่มีความหมายเช่น api-operator-oss (หมายความว่าบัญชีนี้ใช้เพื่อปรับอินเทอร์เฟซ OSS โดยเฉพาะ) ชื่อที่แสดง: ตัวอย่างเช่นบัญชีเฉพาะของอินเทอร์เฟซ OSS วิธีการเข้าถึง: ประเด็นสำคัญ! ต้องติ๊ก OpenAPI เรียกการเข้าถึงไม่จำเป็นต้องตรวจสอบ "การเข้าสู่ระบบคอนโซล" เนื่องจากบัญชีนี้ไม่จำเป็นต้องเข้าสู่ระบบหน้าเว็บ
คลิกตกลง. ในขณะนี้จะปรากฏขึ้นบนหน้าจอ
ตารางที่มี AccessKey ID และ AccessKey Secret
คัดลอกและบันทึกทันทีไปยังสถานที่ที่ปลอดภัยในท้องถิ่น (เช่นผู้จัดการรหัสผ่าน)!> หมายเหตุ: ความลับนี้จะแสดงในครั้งนี้เท่านั้นเมื่อคุณรีเฟรชหน้าหรือปิดหน้าต่างคุณจะไม่เห็นมันอีกเลยหากคุณทำหายคุณสามารถลบและสร้างใหม่ได้เท่านั้น
2.ให้สิทธิ์ปลั๊กบุคลากร (การอนุญาต)
บัญชีย่อยที่สร้างขึ้นใหม่คือ "Bai Ding" โดยไม่มีสิทธิ์ใดๆจะมีการรายงานข้อผิดพลาดหากคุณเรียกใช้อินเทอร์เฟซโดยตรง
User not authorized
。
ในรายชื่อผู้ใช้ในตอนนี้ค้นหาผู้ใช้ที่สร้างขึ้นใหม่ของคุณแล้วคลิกเพิ่มสิทธิ์ทางด้านขวา
เลือกช่วงการอนุญาต: บัญชีคลาวด์ทั้งหมด
เลือกนโยบาย: ป้อนบริการที่คุณต้องการเรียกในช่องค้นหาตัวอย่างเช่นหากคุณต้องการควบคุมเซิร์ฟเวอร์ให้ค้นหา ECS และตรวจสอบ AliyunECSFullAccess (สิทธิ์ของผู้ดูแลระบบ) หรือ AliyunECSReadOnlyAccess (สิทธิ์แบบอ่านอย่างเดียว) ขอแนะนำให้ปฏิบัติตามหลักการของการอนุญาตขั้นต่ำสิ่งที่คุณต้องการให้สิ่งที่คุณต้องการและอย่าพยายามช่วยลดปัญหาและให้ผู้ดูแลระบบโดยตรง (ผู้ดูแลระบบ)
คลิกตกลงการอนุญาตจะเสร็จสมบูรณ์
ขั้นตอนที่สาม: การกำหนดค่าคีย์ท้องถิ่น (ปฏิเสธการเข้ารหัสยาก!)
หลังจากได้ AK/SK สิบล้าน
อย่า
เขียนลงในรหัสโดยตรง (นี่คือ "รหัสยาก" ในตำนาน) ในกรณีที่รหัสถูกส่งไปยังคลังสินค้าสาธารณะในวันหนึ่งคุณสามารถรอจ่ายเงินเดือนเต็มจำนวนเพื่อจ่ายบิลบนคลาวด์
แนวทางมาตรฐานอุตสาหกรรมคือการใช้
ตัวแปรสิ่งแวดล้อม (Environment Variables)
。
1.วิธีการกำหนดค่า Linux / macOS
เปิดเทอร์มินัลและแก้ไขไฟล์ตัวแปรสภาพแวดล้อมของคุณ (เช่น
~ /.Bashrc
หรือ
~ /.Zshrc
):
Export ALIBABA_CLOUD_ACCESS_KEY_ID = "AccessKeyID ของคุณ"
Export ALIBABA_CLOUD_ACCESS_KEY_SECRET = "AccessKeySecret ของคุณ"
หลังจากบันทึกแล้วให้เรียกใช้
ที่มา ~ /.Bashrc
(หรือไฟล์ที่เกี่ยวข้อง) ให้การกำหนดค่ามีผล
2.วิธีการกำหนดค่าของ Windows
คลิกขวาที่ "คอมพิวเตอร์เครื่องนี้"-> "คุณสมบัติ"-> "การตั้งค่าระบบขั้นสูง"-> "ตัวแปรสภาพแวดล้อม"
ใน "ตัวแปรผู้ใช้" หรือ "ตัวแปรระบบ" คลิก "ใหม่": ชื่อตัวแปร: ALIBABA_CLOUD_ACCESS_KEY_ID, ค่าตัวแปร: กรอก AK ของคุณสร้างชื่อตัวแปรใหม่: ALIBABA_CLOUD_ACCESS_KEY_SECRET ค่าตัวแปร: กรอก SK ของคุณ
คลิกตกลงตลอดทางเพื่อบันทึกหมายเหตุ: หลังจากกำหนดค่าแล้วคุณต้องรีสตาร์ทสภาพแวดล้อมการพัฒนาแบบรวมของคุณ (เช่น VS Co
De/PyCharm) หรือหน้าต่างบรรทัดคำสั่งมิฉะนั้นจะไม่สามารถอ่านตัวแปรใหม่ได้
ขั้นตอนที่สี่: API แรกเรียกการต่อสู้จริง (ตัวอย่างงูหลาม)
ตอนนี้สภาพแวดล้อมพร้อมแล้วเราใช้วิธีที่แนะนำมากที่สุดโดยใช้อย่างเป็นทางการของ Alibaba Cloud
V2.0 SDK
โทร. นี่คือตัวอย่างของการสืบค้นอินสแตนซ์เซิร์ฟเวอร์ ECS ทั้งหมด (DescebeInstances) ภายใต้บัญชีของคุณ
1.ติดตั้งไลบรารีหลัก SDK และไลบรารีผลิตภัณฑ์ที่เกี่ยวข้อง
ทำงานในเทอร์มินัลท้องถิ่น:
แบช
Pip install alibabacloud_tea_openapi
Pip install alibabacloud_ecs20140526 = = 4.3.0
2.เขียนรหัสการโทร
Alibaba Cloud V2.0 SDK ฉลาดมากจะอ่านตัวแปรสภาพแวดล้อมที่เราเพิ่งกำหนดค่าโดยอัตโนมัติ
ALIBABA_CLOUD_ACCESS_KEY_ID
และ
ALIBABA_CLOUD_ACCESS_KEY_SECRET
ไม่จำเป็นต้องเขียนคำที่ละเอียดอ่อนในรหัส
Import os
Import sys
From alibabacloud_ecs20140526.client import Client as Ecs20140526Client
From alibabacloud_tea_openapi import models as open_api_models
From alibabacloud_ecs20140526 import models as ecs_20140526_models
Class AliyunApiDemo:
@Staticmethod
Def create_client() -> Ecs20140526Client:
"""
เริ่มต้นบัญชี Client
"""
# SDK จะได้รับ ALIBABA_CLOUD_ACCESS_KEY_ID และ ALIBABA_CLOUD_ACCESS_KEY_SECRET โดยอัตโนมัติจากตัวแปรสภาพแวดล้อม
Config = open_api _
Models.Config ()
# เลือกชื่อโดเมนที่คุณต้องการเรียกเช่นหางโจวคือ cn-hangzhou และเซี่ยงไฮ้คือ cn-shanghai
Config.endpoint = f"ecs.cn-hangzhou.aliyuncs.com"
Return Ecs20140526Client(config)
@staticmethod
Def main():
Client = AliyunApiDemo. create_client()
# สร้างพารามิเตอร์การร้องขอ (ค้นหาตัวอย่าง ECS ภายใต้พื้นที่ปัจจุบัน)
Descripbe_instances_request = (
Ecs_20140526_models.DescribeInstancesRequest (
Region_id = "cn-hangzhou"
)
)
Try:
# เริ่มต้นการโทร
Response = client.de scribe_instances(describe_instances_request)
# พิมพ์กลับผล JSON
& Nb
Sp; พิมพ์ ("=== API เรียกสำเร็จและส่งกลับผลลัพธ์ดังนี้ ===")
Print (response.body)
Except Exception as error:
# จัดการข้อผิดพลาดอย่างสง่างาม
พิมพ์ (f "=== API ล้มเหลว ===")
If hasattr(error, "message"):
พิมพ์ (f "ข้อความแสดงข้อผิดพลาด: {error.message}")
If hasattr(error, "code"):
พิมพ์ (f "รหัสข้อผิดพลาด: {error.code}")
If __name__ = = "__main__":
AliyunApiDemo.main()
เรียกใช้รหัสนี้หากคุณเห็นข้อมูล JSON ของรายการอินสแตนซ์เซิร์ฟเวอร์ของคุณแสดงว่าคุณได้เปิดประตู API ของ Alibaba Cloud เรียบร้อยแล้ว
ขั้นตอนที่5: Master Advanced Fairy Tools-OpenAPI Explorer
หากคุณไม่ต้องการเขียนโค้ดหรือไม่ทราบวิธีกรอกพารามิเตอร์ของอินเทอร์เฟซบางอย่าง Alibaba Cloud ให้ "สิ่งประดิษฐ์โกง" อย่างแน่นอน-
พอร์ทัล OpenAPI (OpenAPI Explorer)
。
https://next.api.aliyun.com การเข้าถึงเบราว์เซอร์/
ป้อนฟังก์ชันที่คุณต้องการใช้ในช่องค้นหาทางด้านซ้ายเช่น "สร้างดิสก์บนคลาวด์" หรือ "ส่ง SMS"
ในแบบฟอร์มตรงกลางให้กรอกพารามิเตอร์โดยตรงในช่องป้อนข้อมูลของอินเทอร์เฟซภาพ
ประเด็นสำคัญอยู่ที่นี่: แท็บ "ตัวอย่าง SDK" ทางด้านขวาของหน้าจะสร้างรหัสภาษาต่างๆโดยอัตโนมัติตามพารามิเตอร์ที่คุณกรอกแบบเรียลไทม์ (Python, Java, Go, Node.js มี
)。
คุณสามารถคลิก "เริ่มการโทร" ได้โดยตรงบนหน้าเว็บเพื่อดูว่าผลลัพธ์ที่ส่งคืนโดยอินเทอร์เฟซถูกต้องหรือไม่หลังจากการดีบักเสร็จสิ้นให้คัดลอกโค้ดทางด้านขวาไปยังโครงการของคุณโดยตรงเพื่อใช้งาน
สรุปเคล็ดลับหลีกเลี่ยงหลุม
อินเตอร์เฟซที่ปรับได้ไม่ยากยากในรายละเอียดและความปลอดภัยสุดท้ายนี้ฉันจะให้เคล็ดลับสี่ประการในการหลีกเลี่ยงหลุม:
ลดสิทธิ์: อย่าอ่านหรือเขียนหากคุณสามารถอ่านอย่างเดียวและอย่าเลือกทั้งหมดหากคุณสามารถจำกัดผลิตภัณฑ์เฉพาะได้
รหัสไม่ได้เข้ารหัส: ในซอร์สโค้ดคุณจะเห็น access_key ตามด้วยสตริงซึ่งทั้งหมดนี้ถูกเขียนใหม่เพื่ออ่านจากตัวแปรสภาพแวดล้อม
ระบบหมุนเวียนปกติ: ขอแนะนำให้ปิดใช้งานคีย์บัญชีย่อยของโครงการเชิงพาณิชย์บนคอนโซลทุกๆหกเดือนและสร้างชุดใหม่เพื่อป้องกันไม่ให้พนักงานลาออกหรือรั่วไหลโดยไม่ได้ตั้งใจ
ใช้ประโยชน์จาก Explorer ให้เป็นประโยชน์: อย่าแทะเอกสารข้อความอย่างเป็นทางการไปที่พอร์ทัล OpenAPI เพื่อดูรหัสสาธิตที่สร้างขึ้นโดยอัตโนมัติเพื่อหลีกเลี่ยงทางอ้อม

