การเข้าถึงแบบส่วนตัวของ Cloud Run ไปยังปลายทางส่วนกลางและปลายทางระดับภูมิภาคของ Cloud Storage

1. บทนำ

ปลายทางของ Google API

Google Cloud API มีปลายทางหลายประเภทเพื่อเข้าถึงบริการ โดยหลักๆ แล้วจะแตกต่างกันในวิธีจัดการการกำหนดเส้นทางการส่งคำขอ ที่ตั้งของข้อมูล และการแยกในระดับภูมิภาค

โปรดดูเอกสารประกอบของผลิตภัณฑ์เกี่ยวกับ ประเภทปลายทาง API

รายละเอียดของปลายทางส่วนกลาง ภูมิภาค และสถานที่ตั้งมีดังนี้

  1. ปลายทางทั่วโลก
  • รูปแบบ: {service}.googleapis.com (เช่น storage.googleapis.com)
  • คำอธิบาย: ปลายทางเหล่านี้เป็นจุดเข้าใช้งานเดียวทั่วโลกสำหรับบริการ โดยไม่ได้ระบุภูมิภาคใน URL
  • การกำหนดเส้นทาง: คำขอจะได้รับการกำหนดเส้นทางโดยส่วนหน้าของ Google ทั่วโลก (GFE) และการจัดสรรภาระงานของบริการทั่วโลก ซึ่งโดยปกติจะนำการรับส่งข้อมูลไปยังภูมิภาคที่ใกล้ที่สุดซึ่งมีสถานะปกติเพื่อลดเวลาในการตอบสนอง
  • การสิ้นสุด TLS: เกิดขึ้นที่ GFE ที่ใกล้กับไคลเอ็นต์มากที่สุด ซึ่งอาจอยู่นอกภูมิภาค Google Cloud ที่มีข้อมูลหรือทรัพยากร
  • การจัดเก็บข้อมูล: ไม่มีการรับประกันสำหรับข้อมูลที่อยู่ระหว่างการส่ง ข้อมูลอาจข้ามขอบเขตระดับภูมิภาคหลังจากถอดรหัสที่ GFE
  • การแยกภูมิภาค: จำกัด แม้ว่าแบ็กเอนด์มักจะอยู่ในระดับภูมิภาค แต่จุดแรกเข้าและการปรับสมดุลการรับส่งข้อมูลจะอยู่ในระดับโลก ซึ่งหมายความว่าปัญหาในส่วนใดส่วนหนึ่งของโครงสร้างพื้นฐานระดับโลกอาจส่งผลต่อบริการในภูมิภาคอื่นๆ
  • กรณีการใช้งาน: การเข้าถึงแบบอเนกประสงค์ที่เวลาในการตอบสนองต่ำสำหรับผู้ใช้ที่กระจายอยู่ตามภูมิศาสตร์เป็นสิ่งสำคัญ และการพำนักของข้อมูลที่เข้มงวดในระหว่างการส่งไม่ใช่ข้อกังวลหลัก
  1. จุดสิ้นสุดระดับภูมิภาค (REP)
  • รูปแบบ: {service}.{location}.rep.googleapis.com (เช่น storage.us-east1.rep.googleapis.com)
  • คำอธิบาย: ออกแบบมาเพื่อรับประกันการแยกภูมิภาคและการรักษาข้อมูลในประเทศที่เข้มงวด โดยจะระบุตำแหน่ง (ภูมิภาค Google Cloud ที่เฉพาะเจาะจง) เป็นโดเมนย่อย ซึ่งเป็นมาตรฐานที่ทันสมัยและจะมาแทนที่ Locational Endpoints
  • การกำหนดเส้นทาง: ใช้สแต็กฟรอนท์เอนด์แบบภูมิภาคทั้งหมด ซึ่งรวมถึงตัวจัดสรรภาระงานภายนอกระดับภูมิภาคและการจัดสรรภาระงานของบริการระดับภูมิภาค เส้นทางคำขอทั้งหมดตั้งแต่ DNS ไปจนถึงแบ็กเอนด์ของบริการจะอยู่ในภูมิภาคที่ระบุ
  • การสิ้นสุด TLS: เกิดขึ้นภายในภูมิภาคที่ระบุในตัวจัดสรรภาระงานภายนอกระดับภูมิภาค
  • การคงอยู่ในภูมิภาคของข้อมูล: รับประกันว่าข้อมูลจะยังคงอยู่ในภูมิภาคที่กำหนดทั้งในระหว่างการส่งและขณะใช้งาน ซึ่งเป็นไปตามข้อกำหนดด้านการปฏิบัติตามข้อกำหนดและอธิปไตยที่เข้มงวด
  • การแยกในภูมิภาค: มีประสิทธิภาพ ความล้มเหลวในโครงสร้างพื้นฐานส่วนหน้าของภูมิภาคหนึ่งจะไม่ส่งผลกระทบต่อภูมิภาคอื่นๆ
  • กรณีการใช้งาน: แอปพลิเคชันที่ต้องมีการจัดเก็บข้อมูลที่เข้มงวด การแยกภูมิภาคสูง และการปฏิบัติตามข้อกำหนด

โปรดทราบว่า Google API บางรายการไม่มีปลายทางระดับภูมิภาค และดูปลายทางระดับภูมิภาคทั้งหมดที่รองรับได้ที่นี่

นอกจากนี้ จุดสิ้นสุดระดับภูมิภาคแบบหลายภูมิภาค (mREP) ยังเป็นจุดสิ้นสุดระดับภูมิภาค เช่น us (สหรัฐอเมริกา), eu (สหภาพยุโรป) และอื่นๆ (เช่น storage.us.rep.googleapis.com)

  1. จุดสิ้นสุดเชิงตำแหน่ง (LEP)
  • รูปแบบ: {location}-{service}.googleapis.com (เช่น us-east1-storage.googleapis.com)
  • คำอธิบาย: Endpoint เหล่านี้เป็นแนวทางก่อนหน้านี้ในการให้สิทธิ์เข้าถึงที่เฉพาะเจาะจงตามสถานที่ตั้ง สถานที่ตั้งเป็นส่วนหนึ่งของชื่อโฮสต์หลัก หมายเหตุ: ปลายทางตามสถานที่ตั้งจะถูกแทนที่ด้วยปลายทางระดับภูมิภาค
  • การกำหนดเส้นทาง: ยังคงใช้ฟรอนท์เอนด์ของ Google ทั่วโลก
  • การสิ้นสุด TLS: โดยปกติจะเกิดขึ้นที่ GFE ซึ่งอาจไม่ได้อยู่ในภูมิภาคที่ระบุในชื่อโฮสต์
  • การรักษาข้อมูลในประเทศ: ไม่สามารถรับประกันว่าข้อมูลจะยังคงอยู่ในภูมิภาคที่ระบุในระหว่างการรับส่งสำหรับการเข้าชมจากอินเทอร์เน็ตสาธารณะ
  • การแยกภูมิภาค: อ่อนแอกว่าปลายทางระดับภูมิภาคเนื่องจากใช้โครงสร้างพื้นฐานส่วนหน้าแบบทั่วโลก
  • กรณีการใช้งาน: เคยใช้สำหรับสถานการณ์การเข้าถึงระดับภูมิภาคบางอย่าง แต่ปัจจุบันไม่แนะนำให้ใช้โดยทั่วไปเนื่องจากต้องการให้ใช้ปลายทางระดับภูมิภาคเพื่อรับประกันที่แข็งแกร่งกว่า

Private Service Connect สำหรับ Google API

Private Service Connect เป็นความสามารถของระบบเครือข่าย Google Cloud ที่ช่วยให้ผู้บริโภคเข้าถึงบริการของผู้ผลิตได้ ซึ่งรวมถึงความสามารถในการเชื่อมต่อกับ Google APIs ผ่านปลายทางส่วนตัวที่โฮสต์ภายใน VPC ของผู้ใช้

วิธีใช้ปลายทาง PSC เพื่อเข้าถึง Google API

วิธีใช้แบ็กเอนด์ PSC เพื่อเข้าถึง Google API

Cloud Run ส่งการรับส่งข้อมูลไปยังเครือข่าย VPC

ข้อมูลขาออก VPC โดยตรงช่วยเพิ่มประสิทธิภาพโครงสร้างพื้นฐานและทำให้การกำหนดค่าข้อมูลขาออก VPC ใน Cloud Run ง่ายขึ้น รวมถึงข้อดีต่อไปนี้

  • การตั้งค่า: บริการและงานของ Cloud Run สามารถส่งการรับส่งข้อมูลไปยังเครือข่าย VPC ได้โดยไม่ต้องมีค่าใช้จ่ายในการจัดการเครื่องมือเชื่อมต่อการเข้าถึง VPC แบบ Serverless
  • ค่าใช้จ่าย: คุณจะจ่ายเฉพาะค่าใช้จ่ายในการรับส่งข้อมูลในเครือข่าย ซึ่งจะปรับเป็น 0 เช่นเดียวกับตัวบริการ
  • ความปลอดภัย: คุณใช้แท็กเครือข่ายในการแก้ไขบริการได้โดยตรงเพื่อการรักษาความปลอดภัยของเครือข่ายที่ละเอียดยิ่งขึ้น
  • ประสิทธิภาพ: เวลาในการตอบสนองต่ำกว่า อัตราการรับส่งข้อมูลสูงกว่า

คุณสามารถเปิดใช้บริการ ฟังก์ชัน งาน หรือกลุ่ม Worker ของ Cloud Run เพื่อส่งการรับส่งข้อมูลทั้งหมดไปยังเครือข่าย VPC ได้โดยใช้ข้อมูลขาออก VPC โดยตรง

2. สิ่งที่คุณจะได้เรียนรู้

  • วิธีสร้างปลายทาง PSC สำหรับ Google API ส่วนกลาง
  • วิธีสร้างปลายทาง PSC สำหรับ Google API ระดับภูมิภาค
  • วิธีเปลี่ยนปลายทาง API ในโค้ด Cloud Run และกำหนดค่าระบบเครือข่ายสำหรับการออก

3. สถาปัตยกรรมโดยรวมของ Lab

8f5328678688f210.png

4. ขั้นตอนการเตรียม

บทบาท IAM ที่จำเป็นต่อการทำงานในแล็บ

คุณเริ่มต้นด้วยการกำหนดบทบาท IAM ที่จำเป็นให้กับบัญชี GCP ที่ระดับโปรเจ็กต์

  • ผู้ดูแลระบบเครือข่าย Compute (roles/compute.networkAdmin) บทบาทนี้ช่วยให้คุณควบคุมทรัพยากรเครือข่ายของ Compute Engine ได้อย่างเต็มที่
  • ผู้ดูแลระบบการบันทึก (roles/logging.admin) บทบาทนี้ให้สิทธิ์เข้าถึงสิทธิ์การบันทึกทั้งหมดและสิทธิ์ที่เกี่ยวข้อง
  • ผู้ดูแลการใช้บริการ (roles/serviceusage.serviceUsageAdmin) บทบาทนี้ช่วยให้คุณเปิดใช้ ปิดใช้ และตรวจสอบสถานะของบริการ ตรวจสอบการดำเนินงาน รวมถึงใช้โควต้าและการเรียกเก็บเงินสำหรับโปรเจ็กต์ของผู้บริโภคได้
  • ผู้ดูแลระบบ DNS (roles/dns.admin) บทบาทนี้ให้สิทธิ์การอ่านและการเขียนทรัพยากร Cloud DNS ทั้งหมด
  • ผู้ดูแลระบบ Cloud Run (roles/run.admin) บทบาทนี้ช่วยให้คุณควบคุมทรัพยากร Cloud Run ทั้งหมดได้อย่างเต็มที่
  • ผู้ดูแลระบบพื้นที่เก็บข้อมูล (roles/storage.admin) บทบาทนี้ช่วยให้คุณควบคุมออบเจ็กต์และที่เก็บข้อมูลได้อย่างเต็มที่

เปิดใช้ API

ใน Cloud Shell ให้ตรวจสอบว่าได้กำหนดค่าโปรเจ็กต์อย่างถูกต้องและตั้งค่าตัวแปรสภาพแวดล้อมแล้ว

ใน Cloud Shell ให้ทำดังนี้

gcloud auth login
gcloud config set project <your project id>
export project_id=<your project id>
export region=<your region>
export zone=$region-a
echo $project_id
echo $region

เปิดใช้ Google API ที่จำเป็นทั้งหมดในโปรเจ็กต์ ใน Cloud Shell ให้ทำดังนี้

gcloud services enable \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  run.googleapis.com \
  compute.googleapis.com \
  dns.googleapis.com \
  servicedirectory.googleapis.com \
  networkconnectivity.googleapis.com

สร้าง VPC

สร้างเครือข่าย VPC ที่มีโหมดซับเน็ตที่กำหนดเองในโปรเจ็กต์ ทำดังนี้ใน Cloud Shell

gcloud compute networks create mynet \
    --subnet-mode=custom

สร้างซับเน็ต

ใน Cloud Shell ให้ทำดังนี้เพื่อสร้างเครือข่ายย่อย IPv4

gcloud compute networks subnets create mysubnet \
    --network=mynet \
    --range=10.0.0.0/24 \
    --region=$region

สร้าง Cloud NAT และ Cloud Router

Cloud NAT ใช้เพื่ออนุญาตให้งาน Cloud Run เชื่อมต่อกับเว็บไซต์ภายนอก

gcloud compute routers create $region-cr \
   --network=mynet \
   --region=$region 
gcloud compute routers nats create $region-nat \
    --router=$region-cr \
    --region=$region \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

5. สร้างปลายทาง PSC สำหรับ Cloud Storage

คุณจะสร้างปลายทาง PSC 2 รายการสำหรับ Cloud Storage โดยรายการหนึ่งมีขอบเขตเป็นแบบทั่วโลก และอีกรายการมีขอบเขตเป็นแบบภูมิภาค

สร้างปลายทาง PSC ที่มีขอบเขตทั่วโลก

Private Service Connect ช่วยให้คุณสร้างอุปกรณ์ปลายทางส่วนตัวที่มีขอบเขตทั่วโลกได้โดยใช้ที่อยู่ IP ภายในแบบสากลภายในเครือข่าย VPC

คุณจะต้องจัดสรรที่อยู่ IP ที่ไม่ซ้ำกันซึ่งไม่ได้กำหนดไว้ใน VPC โปรดดูเอกสารเกี่ยวกับข้อกำหนดของที่อยู่ IP นี้

ใน Cloud Shell ให้ทำดังนี้เพื่อสร้างที่อยู่ IP โปรดเปลี่ยน –addresses=<pscendpointip> เพื่อใช้ที่อยู่ IP ที่คุณจัดสรร

gcloud compute addresses create pscglobalip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=<pscendpointip> \
    --network=mynet
pscendpointip=$(gcloud compute addresses list --filter=name:pscglobalip --format="value(address)")
echo $pscendpointip

สร้างกฎการส่งต่อเพื่อเชื่อมต่อปลายทางกับ Google API และบริการ

gcloud compute forwarding-rules create pscendpoint \
    --global \
    --network=mynet \
    --address=pscglobalip \
    --target-google-apis-bundle=all-apis

ตรวจสอบ p.googleapis.com ใน Cloud DNS

เมื่อสร้างปลายทาง ระบบจะสร้างการกำหนดค่า DNS ต่อไปนี้โดยอัตโนมัติ

  • ระบบจะสร้างโซน DNS ส่วนตัวของ Service Directory สำหรับ p.googleapis.com
  • ระเบียน DNS จะสร้างขึ้นใน p.googleapis.com สำหรับ Google API และบริการที่ใช้กันโดยทั่วไปบางรายการซึ่งพร้อมใช้งานโดยใช้ Private Service Connect และมีชื่อ DNS เริ่มต้นที่ลงท้ายด้วย googleapis.com

ระบบจะลงทะเบียนปลายทางส่วนกลางกับ Service Directory คุณจะใช้ storage-[ชื่อปลายทาง PSC].p.googleapis.com เพื่อเข้าถึง Cloud Storage ดูรายละเอียดได้ในเอกสารประกอบสำหรับผลิตภัณฑ์

ตรวจสอบว่าได้สร้างโซน p.googleaps.com แล้วหรือยังโดยเรียกใช้คำสั่ง

gcloud dns managed-zones list

หากต้องการใช้ชื่อ DNS เริ่มต้น storage.googleapis.com คุณจะต้องสร้างโซนส่วนตัว storage.googleapis.com ใน Cloud DNS และเพิ่มระเบียน Apex ที่ชี้ไปยังปลายทาง PSC ของที่อยู่ IP ขอบเขตส่วนกลาง

สร้างปลายทาง PSC ที่มีขอบเขตระดับภูมิภาคสำหรับ Cloud Storage

คุณจะต้องมี IP อย่างน้อย 1 รายการจากซับเน็ต VPC เรียกใช้คำสั่งด้านล่าง ระบบจะจัดสรร IP จากเครือข่ายย่อยให้กับปลายทาง PSC

gcloud network-connectivity regional-endpoints create psc-regional-endpoint \
    --region=$region \
    --network=projects/$project_id/global/networks/mynet \
    --subnetwork=projects/$project_id/regions/$region/subnetworks/mysubnet \
    --target-google-api=storage.us-central1.rep.googleapis.com

รับที่อยู่ IP ของปลายทางที่สร้างจากขั้นตอนด้านบน

regionalip=$(gcloud network-connectivity regional-endpoints describe psc-regional-endpoint --region=$region --format="value(address)")
echo $regionalip

คุณจะใช้ storage.us-central1.rep.googleapis.com เพื่อเข้าถึง Cloud Storage คุณต้องสร้างโซนส่วนตัวสำหรับ storage.us-central1.rep.googleapis.com และระเบียน Apex ของที่อยู่ IP ที่เพิ่งสร้างสำหรับปลายทางระดับภูมิภาคใน Cloud DNS

สร้างโซนส่วนตัวสำหรับปลายทางระดับภูมิภาคของ Cloud Storage

คุณจะใช้ storage.[ชื่อภูมิภาค].rep.googleapis.com เพื่อเข้าถึงปลายทางระดับภูมิภาคของ Cloud Storage

คุณจะต้องสร้างโซนส่วนตัวใน Cloud DNS และเพิ่มระเบียน Apex ที่ชี้ไปยังที่อยู่ IP ของปลายทางระดับภูมิภาคของ Cloud Storage

ในคำสั่งด้านล่าง us-central1 คือภูมิภาคตัวอย่าง คุณควรสร้างโซนที่มีชื่อภูมิภาคของคุณ

gcloud dns managed-zones create psc-regional-endpoint-zone \
  --description="" \
  --dns-name="storage.us-central1.rep.googleapis.com" \
  --visibility="private" \
  --networks="mynet"

gcloud dns record-sets create storage.us-central1.rep.googleapis.com. \
  --rrdatas=$regionalip \
  --ttl=300 \
  --type=A \
  --zone=psc-regional-endpoint-zone

6. กำหนดค่างาน Cloud Run ด้วยปลายทาง PSC ที่มีขอบเขตทั่วโลก

รับโค้ด

ก่อนอื่นคุณจะสำรวจแอปพลิเคชัน Node.js เพื่อถ่ายภาพหน้าจอของหน้าเว็บและจัดเก็บไว้ใน Cloud Storage จากนั้นคุณจะสร้างอิมเมจคอนเทนเนอร์สำหรับแอปพลิเคชันและเรียกใช้เป็นงานใน Cloud Run

จาก Cloud Shell ให้เรียกใช้คำสั่งต่อไปนี้เพื่อโคลนโค้ดของแอปพลิเคชันจากที่เก็บนี้

git clone https://github.com/GoogleCloudPlatform/jobs-demos.git

ไปที่ไดเรกทอรีที่มีแอปพลิเคชันโดยใช้คำสั่งต่อไปนี้

cd jobs-demos/screenshot

คุณควรเห็นเลย์เอาต์ไฟล์ดังนี้

|

├── Dockerfile

├── README.md

├── screenshot.js

├── package.json

คำอธิบายโดยย่อของแต่ละไฟล์มีดังนี้

  • screenshot.js มีโค้ด Node.js สำหรับแอปพลิเคชัน แอปพลิเคชันจะจับภาพหน้าจอของหน้าเว็บและจัดเก็บไว้ใน Cloud Storage
  • package.json กำหนดทรัพยากร Dependency ของไลบรารี
  • Dockerfile จะกำหนดอิมเมจคอนเทนเนอร์

เปิดโค้ด screenshot.js แล้วเปลี่ยน apiEndpoint เป็นปลายทางส่วนกลางของ PSC ค้นหาโค้ดและแทนที่ const storage = new Storage(); ด้วยโค้ดต่อไปนี้

const storage = new Storage(
    {
      apiEndpoint:'https://storage-pscendpoint.p.googleapis.com.',
      useAuthWithCustomEndpoint: true
    }
  );

ใช้งานงาน

ก่อนสร้างงาน คุณต้องสร้างบัญชีบริการที่จะใช้เรียกใช้งาน

gcloud iam service-accounts create screenshot-sa --display-name="Screenshot app service account"

ให้บทบาท storage.admin แก่บัญชีบริการเพื่อให้ใช้สร้างที่เก็บข้อมูลและออบเจ็กต์ได้

gcloud projects add-iam-policy-binding $project_id \
  --role roles/storage.admin \
  --member serviceAccount:screenshot-sa@$project_id.iam.gserviceaccount.com

มอบบทบาทผู้ใช้ที่เก็บข้อมูลออบเจ็กต์ บทบาทผู้เขียนบันทึก และบทบาทผู้ดูแลที่เก็บ Artifact Registry ให้กับบัญชีบริการ Compute เริ่มต้น

project_number=$(gcloud projects describe $project_id --format="value(projectNumber)")

gcloud projects add-iam-policy-binding $project_id \
  --role roles/storage.objectUser \
  --member serviceAccount:$project_number-compute@developer.gserviceaccount.com

gcloud projects add-iam-policy-binding $project_id \
  --role roles/logging.logWriter \
  --member serviceAccount:$project_number-compute@developer.gserviceaccount.com

gcloud projects add-iam-policy-binding $project_id \
  --role roles/artifactregistry.repoAdmin \
  --member serviceAccount:$project_number-compute@developer.gserviceaccount.com

คุณจะเปิดใช้ข้อมูลขาออก VPC โดยตรงสำหรับงาน Cloud Run เพื่อส่งการรับส่งข้อมูลทั้งหมดไปยังเครือข่าย VPC

ใน Cloud Shell ให้ทำดังนี้

gcloud run jobs deploy screenshot-1 \
  --source=. \
  --args="https://example.com" \
  --args="https://cloud.google.com" \
  --tasks=2 \
  --task-timeout=5m \
  --region=$region \
  --set-env-vars=BUCKET_NAME=screenshot-$project_id-$RANDOM \
  --service-account=screenshot-sa@$project_id.iam.gserviceaccount.com \
  --vpc-egress=all-traffic \
  --network=mynet \
  --subnet=mysubnet

เรียกใช้งาน

ใน Cloud Shell ให้ทำดังนี้

gcloud run jobs execute screenshot-1 --region=$region

ตรวจสอบสถานะของงานและบันทึก ไปที่คอนโซล Cloud Run แล้วมองหางาน คุณคลิกเข้าไปในงานและตรวจสอบประวัติของบันทึก คุณจะเห็นผลการเรียกใช้งานที่คล้ายกันดังที่แสดงด้านล่าง

bae25d504ea20384.png

หากต้องการดูบันทึกการเรียกใช้งานแบบละเอียด ให้คลิกดูบันทึกที่งาน คุณจะเห็นบันทึกงานที่คล้ายกันดังที่แสดงด้านล่าง

aa0468dc463f4320.png

สร้าง Bucket ใหม่แล้ว คุณไปที่คอนโซล Cloud Storage แล้วตรวจสอบ Bucket ใหม่ที่สร้างขึ้นได้ โปรดทราบว่าเมื่อคุณใช้ปลายทางส่วนกลางของ Cloud Storage Bucket จะเป็น Bucket แบบหลายภูมิภาค คุณตรวจสอบรูปภาพที่อัปโหลดไปยังที่เก็บข้อมูลได้

ผลการทดสอบแสดงให้เห็นว่า Cloud Run เข้าถึงปลายทางส่วนกลางของ Cloud Storage แบบส่วนตัว ซึ่งคุณได้เปลี่ยนในงาน Cloud Run

apiEndpoint:‘https://storage-pscendpoint.p.googleapis.com.'

7. กำหนดค่างาน Cloud Run ด้วยปลายทาง PSC ของขอบเขตระดับภูมิภาค

ในโค้ด คุณจะเปลี่ยน apiEndpoint เป็นปลายทาง PSC ที่มีขอบเขตระดับภูมิภาค

ค้นหาโค้ดและแทนที่ const storage = new Storage(); ด้วยโค้ดต่อไปนี้ ( เราใช้ us-central1 เป็นตัวอย่าง โปรดเปลี่ยนเป็นภูมิภาคของคุณ ) :

const storage = new Storage(
    {
      apiEndpoint:'https://storage.us-central1.rep.googleapis.com.',
      useAuthWithCustomEndpoint: true
    }
  );

ใช้งานงาน

ตรวจสอบว่าคุณอยู่ในไดเรกทอรีที่มีแอปพลิเคชัน (jobs-demos/screenshot)

pwd

คุณเปิดใช้การออก VPC โดยตรงสำหรับงานเพื่อส่งการรับส่งข้อมูลทั้งหมดไปยังเครือข่าย VPC

ใน Cloud Shell ให้ทำดังนี้

gcloud run jobs deploy screenshot-2 \
  --source=. \
  --args="https://example.com" \
  --args="https://cloud.google.com" \
  --tasks=2 \
  --task-timeout=5m \
  --region=$region \
  --set-env-vars=BUCKET_NAME=screenshot-$PROJECT_ID-$RANDOM \
  --service-account=screenshot-sa@$project_id.iam.gserviceaccount.com \
  --vpc-egress=all-traffic \
  --network=mynet \
  --subnet=mysubnet

เรียกใช้งาน

ใน Cloud Shell ให้ทำดังนี้

gcloud run jobs execute screenshot-2 --region=$region

ตรวจสอบสถานะของงานและบันทึก ไปที่คอนโซล Cloud Run แล้วมองหางาน คุณคลิกเข้าไปในงานและตรวจสอบประวัติของงาน คุณจะเห็นผลการเรียกใช้งานที่คล้ายกันดังที่แสดงด้านล่าง

1065ce25136d355e.png

หากต้องการดูบันทึกการดำเนินการงานโดยละเอียด ให้คลิกดูบันทึก คุณจะเห็นบันทึกงานที่คล้ายกันดังที่แสดงด้านล่าง

837afb2f95a7049b.png

สร้าง Bucket ใหม่แล้ว คุณไปที่คอนโซล Cloud Storage แล้วตรวจสอบ Bucket ใหม่ที่สร้างขึ้นได้ โปรดทราบว่าเมื่อคุณใช้ปลายทางระดับภูมิภาคของ Cloud Storage Bucket จะเป็น Bucket แบบภูมิภาคเดียว คุณตรวจสอบรูปภาพที่อัปโหลดไปยังที่เก็บข้อมูลได้

ผลการทดสอบแสดงว่า Cloud Run เข้าถึงปลายทางระดับภูมิภาคของ Cloud Storage แบบส่วนตัว ซึ่งคุณได้เปลี่ยนแปลงในงาน Cloud Run

apiEndpoint:‘https://storage.us-central1.rep.googleapis.com.'

8. ล้างข้อมูล

ล้างข้อมูลงาน Cloud Run

gcloud run jobs delete screenshot-1 \
  --region=$region --quiet
gcloud run jobs delete screenshot-2 \
  --region=$region --quiet

gcloud iam service-accounts delete screenshot-sa@$project_id.iam.gserviceaccount.com --quiet

ล้างข้อมูลปลายทาง PSC

gcloud compute forwarding-rules delete pscendpoint \
    --global --quiet
gcloud network-connectivity regional-endpoints delete psc-regional-endpoint \
    --region=$region --quiet
gcloud compute addresses delete pscglobalip \
    --global --quiet

ล้างข้อมูล Cloud NAT, Cloud Router และ VPC

gcloud compute routers nats delete $region-nat \
    --router=$region-cr \
    --region=$region --quiet
gcloud compute routers delete $region-cr \
    --region=$region --quiet
gcloud compute networks subnets delete mysubnet \
    --region=$region --quiet
gcloud compute networks delete mynet --quiet

9. ขอแสดงความยินดี

คุณได้ทดสอบการเข้าถึงส่วนตัวของ Cloud Run ไปยัง Cloud Storage ผ่าน Global Endpoint และ Regional Endpoint เรียบร้อยแล้ว