Google Cloud Storage คือผลิตภัณฑ์ Google แยกต่างหากที่ Ad Manager ใช้เป็นที่เก็บข้อมูลรายงานการโอนข้อมูลและรหัสคุกกี้กลุ่มเป้าหมายที่อัปโหลดเป็นกลุ่ม
วิธีการ
คุณจะเข้าถึงที่เก็บข้อมูลของพื้นที่เก็บข้อมูลระบบคลาวด์ของ Ad Manager ได้ 3 วิธีดังต่อไปนี้ โดยจะเรียงตามลำดับความซับซ้อน
- ในเว็บ ให้ไปที่
https://console.developers.google.com/storage/gdfp-[รหัสเครือข่าย Ad Manager]
- gsutil คือเครื่องมือบรรทัดคำสั่งแบบ Python ที่มีคำสั่งเหมือน Unix สำหรับการโต้ตอบกับที่เก็บข้อมูลของพื้นที่เก็บข้อมูล การตรวจสอบสิทธิ์ที่เก็บข้อมูลจะเป็นแบบนามธรรมและจัดการโดยอัตโนมัติ
- Google Cloud Storage API คือ API ที่มีฟีเจอร์สมบูรณ์สำหรับการควบคุมที่เก็บข้อมูลของพื้นที่เก็บข้อมูลที่พร้อมใช้งานผ่านอินเทอร์เฟซเว็บ JSON หรือ XML RESTful ไลบรารีของไคลเอ็นต์ API พร้อมใช้งานสำหรับสภาพแวดล้อมในการเขียนโปรแกรมยอดนิยมหลายแบบ เช่น Java, JavaScript, Python และ Objective-C วิธีการนี้เป็นประโยชน์มากที่สุดเมื่อคุณต้องควบคุมที่เก็บข้อมูลของพื้นที่เก็บข้อมูลแบบเป็นโปรแกรมเพื่อผสานรวมกับแอป Google App Engine หรือเว็บแอป Java
บทความนี้ให้รายละเอียดเกี่ยวกับ Google Cloud Storage API เราขอแนะนำให้คุณศึกษาวิธีการเหล่านี้ก่อน เนื่องจากการจัดการสิทธิ์เข้าถึงเว็บและ gsutil นั้นทำได้ง่ายกว่า วิธีการเหล่านี้มีการจัดทำเป็นเอกสารไว้อย่างครบถ้วนในเว็บไซต์ของนักพัฒนาซอฟต์แวร์ Google Cloud Storage
จัดการการเข้าถึงที่เก็บข้อมูลของ Ad Manager
ที่เก็บข้อมูลที่ Ad Manager ใช้จะรวมอยู่ในโปรเจ็กต์พื้นที่เก็บข้อมูลระบบคลาวด์ที่ Google เป็นเจ้าของ ที่เก็บข้อมูลของพื้นที่เก็บข้อมูล Ad Manager จะไม่ปรากฏในรายชื่อโปรเจ็กต์ของคุณใน Google Developers Console
คุณจะต้องทำงานร่วมกับตัวแทนของ Google เพื่อตั้งค่าฟีเจอร์ต่างๆ ซึ่งขึ้นอยู่กับที่เก็บข้อมูลของพื้นที่เก็บข้อมูล Ad Manager ซึ่งจะจัดกลุ่ม Google ให้คุณใช้ในการจัดการที่เก็บข้อมูลของพื้นที่เก็บข้อมูล
หากคุณเป็นผู้ดูแลระบบของกลุ่ม G Suite ที่มีอยู่แล้ว ให้แจ้งชื่อกลุ่ม Google ของ G Suite กับตัวแทนในขั้นตอนการเปิดใช้งานฟีเจอร์ ตัวแทนจะทำงานร่วมกับคุณเพื่อเปิดใช้งานฟีเจอร์ที่ใช้ที่เก็บข้อมูลของพื้นที่เก็บข้อมูล Ad Manager โดยใช้กลุ่มที่คุณมีอยู่แล้ว
หากคุณจัดการเครือข่าย Ad Manager มากกว่า 1 เครือข่ายที่มีสิทธิ์เข้าถึงการโอนข้อมูล คุณควรแจ้งเรื่องนี้กับตัวแทน Google เพื่อให้รวมการจัดการเครือข่ายได้ โดยในการจัดการที่เก็บข้อมูลการโอนข้อมูลทั้งหมดในเครือข่ายจะใช้กลุ่ม 1 กลุ่ม
ใช้ Google Cloud Storage API
หากพิจารณาแล้วว่าการเข้าถึง API เหมาะกับความต้องการของคุณมากที่สุด เราขอแนะนำให้กำหนดค่าบัญชีบริการ Google Cloud Storage
กำหนดค่าบัญชีบริการ Google Cloud Storage
เมื่อเข้าถึงที่เก็บข้อมูลของพื้นที่เก็บข้อมูลผ่าน API คุณควรกำหนดค่าบัญชีบริการแทนที่จะใช้ในบริบทของผู้ใช้ บัญชีบริการช่วยให้พัฒนาแอปพลิเคชันได้ง่ายขึ้นโดยใช้คีย์ส่วนตัวสำหรับการตรวจสอบสิทธิ์แทนโทเค็น OAuth ที่สร้างขึ้นแบบไดนามิก วิธีกำหนดค่าบัญชีบริการมีดังนี้
-
ไปที่ Google Developer Console
-
สร้างโปรเจ็กต์ใหม่ (หรือเลือกโปรเจ็กต์ที่มีอยู่แล้ว) เพื่อเป็นไฟล์หลักของแอปพลิเคชันและคลิกโปรเจ็กต์นั้น
-
(ไม่บังคับ) หากคุณวางแผนที่จะคัดลอกไฟล์จากที่เก็บข้อมูลของพื้นที่เก็บข้อมูล Ad Manager ไปยังบัญชี Google Cloud Storage ของคุณเอง ให้คลิกการเรียกเก็บเงินและการตั้งค่าเพื่อเพิ่มแหล่งที่มาของการเรียกเก็บเงินลงในโปรเจ็กต์
-
สร้างรหัสไคลเอ็นต์ใหม่
-
คลิก API และบริการ > ข้อมูลเข้าสู่ระบบ
-
คลิกสร้างรหัสไคลเอ็นต์ใหม๋
-
เลือกบัญชีบริการเป็นประเภทแอปพลิเคชัน จากนั้นคลิกสร้างรหัสไคลเอ็นต์
-
อีเมลที่สร้างขึ้นจะอยู่ในรูปแบบ
[unique-id]@developer.gserviceagccount.com
ให้คัดลอกและบันทึกไว้เพื่อเพิ่มลงในกลุ่ม Google -
คลิกสร้างคีย์ P12 ใหม่ ระบบจะบันทึกไฟล์ไปยังคอมพิวเตอร์ ใช้คีย์นี้ในแอปพลิเคชันที่คุณพัฒนาเพื่อเข้าถึง API ตามที่แสดงในตัวอย่างโค้ดด้านล่าง
-
- เพิ่มอีเมลลงในกลุ่ม Google ที่คุณสร้างขึ้นเพื่อจัดการการเข้าถึงที่เก็บข้อมูลของพื้นที่เก็บข้อมูล Ad Manager คลิกเพิ่มสมาชิกโดยตรงแทนการ "เชิญ" เพื่อเพิ่มบัญชีบริการ หากคุณไม่มีสิทธิ์เข้าถึง ให้ขอให้ผู้ดูแลระบบของกลุ่ม Google เพิ่มอีเมลในนามของคุณ
Google มีตัวอย่างโค้ดและไลบรารีสำหรับ Google Cloud Storage ตัวอย่าง Java สำหรับการอ่านไฟล์จากพื้นที่เก็บข้อมูลระบบคลาวด์ของ Ad Manager ต่อไปนี้จะแสดงให้เห็นว่าคอมโพเนนต์ที่กำหนดค่าไว้ตอนตั้งค่าบัญชีบริการอาจส่งผลต่อโค้ดของคุณอย่างไร
-
ชื่อโปรเจ็กต์: ชื่อโปรเจ็กต์ Google Cloud Storage
-
อีเมลของบัญชีบริการ: อีเมลที่คุณสร้าง
-
ไฟล์คีย์ .p12: ไฟล์ที่คุณดาวน์โหลด
-
ชื่อที่เก็บข้อมูล: Google ให้ชื่อนี้เมื่อคุณเปิดใช้งานฟีเจอร์ที่ใช้พื้นที่เก็บข้อมูลระบบคลาวด์ของ Ad Manager
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.security.GeneralSecurityException; import java.util.Collections; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.storage.Storage; import com.google.api.services.storage.model.StorageObject; public class GcsApiTest { /** * ชื่อของโปรเจ็กต์ที่สร้างบัญชีบริการขึ้นมา * * ข้อมูลนี้จะแสดงอยู่ภายใต้ Google Developers Console */ private static final String PROJECT_NAME = "project name"; /** * อีเมลของนักพัฒนาซอฟต์แวร์ของบัญชีบริการ * อีเมลนี้จะสร้างขึ้นตอนที่สร้างรหัสไคลเอ็นต์บัญชีบริการใน Google Developers Console และจะเรียกดูได้จากหน้าข้อมูลเข้าสู่ระบบ โดยต้องเพิ่มอีเมลนี้ลงในกลุ่ม Google ที่ใช้ควบคุมการเข้าถึงที่เก็บข้อมูลของพื้นที่เก็บข้อมูลด้วย */ private static final String SERVICE_ACCOUNT_EMAIL = "service account email address"; /** * ที่เก็บข้อมูลที่จะใช้สำหรับการทำงานของพื้นที่เก็บข้อมูล * * ชื่อของที่เก็บข้อมูลนี้จะได้จากผู้จัดการฝ่ายดูแลลูกค้าของคุณ ชื่อที่ได้จะคล้ายคลึงกับ "gdfp-12345678" หรือ "gdfp_cookieupload_12345678" ทั้งนี้ขึ้นอยู่กับส่วนเสริม Ad Manager ที่คุณใช้อยู่ */ private static final String BUCKET_NAME = "bucket name"; /** * ขอบเขต OAuth 2.0 ของ Google Cloud Storage สำหรับการอ่านและเขียน ซึ่งควรสอดคล้องกับสิทธิ์การเข้าถึงที่กลุ่ม Google ของคุณมีสำหรับที่เก็บข้อมูล และคุณจะขอสิทธิ์การเข้าถึงที่ไม่ได้รับอนุญาตให้ใช้กลุ่มไม่ได้ (ซึ่งอาจเป็นแบบอ่านอย่างเดียว) */ private static final String STORAGE_SCOPE = "https://www.googleapis.com/auth/devstorage.read_write"; /** * เส้นทางไปยังไฟล์คีย์ .p12 ที่ให้สิทธิ์เข้าถึงที่เก็บข้อมูล * * ไฟล์นี้จะสร้างขึ้นตอนที่สร้างรหัสไคลเอ็นต์ของบริการ หากไม่มีไฟล์นี้ คุณจะต้องสร้างไฟล์คีย์ p12 ของไคลเอ็นต์ใหม่จาก Google Developers Console */ private static final String KEY_P12 = "path to .p12 key file"; /** HTTP transport. */ private HttpTransport httpTransport; private Storage storage; // ตัวสร้าง ตั้งค่าข้อมูลเข้าสู่ระบบและออบเจ็กต์พื้นที่เก็บข้อมูล public GcsApiTest() { File p12File = new File(KEY_P12); ลองใช้ { httpTransport = GoogleNetHttpTransport.newTrustedTransport(); GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(JacksonFactory.getDefaultInstance()) .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) .setServiceAccountScopes( Collections.singleton(STORAGE_SCOPE)) .setServiceAccountPrivateKeyFromP12File(p12File).build(); storage = new Storage.Builder(httpTransport, JacksonFactory.getDefaultInstance(), credential) .setApplicationName(PROJECT_NAME).build(); } catch (GeneralSecurityException | IOException e1) { e1.printStackTrace(); System.exit(1); } } /** * วิธีการแสดงชื่อของไฟล์แรกในที่เก็บข้อมูล * * @แสดงชื่อไฟล์หรือ null หากที่เก็บข้อมูลว่างเปล่า * @throws IOException */ public String GetFirstFile() throws IOException { Storage.Objects.List listObjects = storage.objects().list(BUCKET_NAME); listObjects.setMaxResults(5L); com.google.api.services.storage.model.Objects objects = listObjects .execute(); // หากที่เก็บข้อมูลว่างเปล่า if (null == objects.getItems() || objects.getItems().isEmpty()) { System.out.println("Bucket \"" + BUCKET_NAME + "\" empty or invalid."); return null; } StorageObject object = objects.getItems().get(0); System.out.println("First object in bucket: \"" + object.getName() + "\"."); return object.getName(); } /** * วิธีการดาวน์โหลดไฟล์ที่ระบุจากที่เก็บข้อมูล * * @param filename * ชื่อของไฟล์ที่จะต้องดาวน์โหลด * @throws IOException */ public void DownloadFile(String filename) throws IOException { Storage.Objects.Get getObject = storage.objects().get(BUCKET_NAME, filename); OutputStream os = new FileOutputStream(filename, true); getObject.getMediaHttpDownloader().setDirectDownloadEnabled(true); getObject.executeMediaAndDownloadTo(os); System.out.println("File \"" + filename + "\" downloaded."); } /** * วิธีหลักในการทำการทดสอบต่างๆ * * @param args */ public static void main(String[] args) { GcsApiTest gcsApiTest = new GcsApiTest(); ลองใช้ { String filename = gcsApiTest.GetFirstFile(); gcsApiTest.DownloadFile(filename); } catch (IOException e) { System.out.println(e.getMessage()); } } }
การควบคุมและการเชื่อมต่อพร้อมกัน
ไม่มีข้อจำกัดที่กำหนดไว้ล่วงหน้าสำหรับการเชื่อมต่อพร้อมกัน อย่างไรก็ตาม Google จะควบคุมคำขอดึงการโอนข้อมูลเพื่อหลีกเลี่ยงการละเมิด