Google Cloud Storage Ad Manager'ın, Veri Aktarımı raporları ve toplu yüklenen kitle çerezi kimlikleri için veri havuzu olarak kullandığı ayrı bir Google ürünüdür.
Yöntemler
Ad Manager bulut depolama alanı gruplarına erişmek için kullanabileceğiniz en basitten en karmaşığa doğru sıralanmış üç yol mevcuttur:
- İnternette:
https://console.developers.google.com/storage/gdfp-[Ad Manager ağ kodu]
adresini ziyaret edin. - gsutil, depolama alanı grubu ile etkileşim için Unix benzeri komutlar sağlayan Python tabanlı bir komut satırı aracıdır. Grup kimlik doğrulaması soyutlanır ve otomatik olarak işlenir.
- Google Cloud Storage API'sı, JSON veya XML RESTful web arayüzleri üzerinden kullanılabilen, depolama alanı grubunu yönetmeye yönelik tam donanımlı bir API'dır. Java, JavaScript, Python ve Objective-C dahil olmak üzere birçok popüler programlama ortamı için API istemci kitaplıkları mevcuttur. Bu yaklaşım, depolama alanı gruplarını bir Google App Engine uygulaması veya Java web uygulaması ile entegre etmek üzere programlı olarak işlemeniz gerektiğinde özellikle faydalıdır.
Bu makalede, Google Cloud Storage API'si ile ilgili ayrıntılı bilgiler sunulmaktadır. Web ve gsutil erişiminin yönetimi daha kolay olduğundan ilk olarak bu yöntemleri incelemenizi öneririz. Bu yöntemler Google Cloud Storage geliştirici sitesinde eksiksiz olarak belgelenmiştir.
Ad Manager depolama alanı gruplarına erişimi yönetme
Ad Manager tarafından kullanılan depolama alanı grupları, Google'a ait bir bulut depolama alanı projesi içinde bulunur. Ad Manager depolama alanı grupları, Google Developers Console'da kendi proje listenizin altında görünmez.
Ad Manager depolama alanı gruplarına bağlı özellikleri ayarlamak için Google temsilcinizle çalışmanız gerekecektir. Temsilci, depolama alanı gruplarınızı yönetirken kullanabileceğiniz bir Google grubu sağlayacaktır.
Mevcut bir G Suite grubunun yöneticisiyseniz G Suite Google grubunuzun adını özellik etkinleştirme işleminin bir parçası olarak temsilcinizle paylaşabilirsiniz. Temsilci, mevcut grubunuzu kullanarak Ad Manager depolama alanı gruplarını kullanan herhangi bir özelliği etkinleştirmek için sizinle birlikte çalışacaktır.
Veri Aktarımı erişimi olan birden çok Ad Manager ağını yönetiyorsanız ağ yönetiminin birleştirilebilmesi için bu durumu Google temsilcinize iletmeniz gerekir. Ağlarınızdaki tüm Veri Aktarımı gruplarını yönetmek için bir grup kullanılacaktır.
Google Cloud Storage API'sini kullanma
API erişiminin ihtiyaçlarınız için en uygun çözüm olduğunu belirlediyseniz bir Google Cloud Storage hizmet hesabını yapılandırmanızı öneririz.
Google Cloud Storage hizmet hesabı yapılandırma
API üzerinden depolama alanı grubuna erişirken bir kullanıcı bağlamında çalıştırmak yerine hizmet hesabı yapılandırmak tercih edilir. Hizmet hesapları, kimlik doğrulaması için dinamik olarak oluşturulmuş OAuth jetonu yerine bir özel anahtar kullanarak uygulama geliştirmeyi basitleştirir. Bir hizmet hesabı yapılandırmak için:
-
Google Developers Console'a gidin.
-
Yeni proje oluşturun veya mevcut bir projeyi uygulamanızın üst öğesi olarak seçip projeyi tıklayın.
-
(İsteğe bağlı) Ad Manager depolama alanı grubundaki dosyaları kendi Google Cloud Storage hesabınıza kopyalamayı planlıyorsanız projenize faturalandırma kaynağı eklemek için Faturalandırma ve ayarlar'ı tıklayın.
-
Yeni istemci kimliği oluşturun:
-
API'ler ve Hizmetler > Kimlik bilgileri'ni tıklayın.
-
Yeni İstemci Kimliği oluştur'u tıklayın.
-
Uygulama türü olarak Hizmet hesabı'nı seçip İstemci Kimliği oluştur'u tıklayın.
-
Oluşturulan e-posta adresi şu biçimde olacaktır:
[unique-id]@developer.gserviceagccount.com
. Bu adresi kopyalayıp Google grubunuza eklemek üzere kaydedin. -
Yeni P12 anahtarı oluştur'u tıklayın. Dosya bilgisayarınıza kaydedilir. Bu anahtarı aşağıdaki örnekte gösterildiği gibi, API'ye erişmek üzere geliştirdiğiniz uygulamalarda kullanın.
-
- Ad Manager depolama alanı gruplarınıza erişimi yönetmek için e-posta adresini, oluşturduğunuz Google grubuna ekleyin. Hizmet hesabını eklemek için "davet et" seçeneği yerine Üyeleri doğrudan ekle'yi tıklayın. Erişiminiz yoksa Google grubu yöneticisinden sizin yerinize adresi eklemesini isteyin.
Google, Google Cloud Storage için kod örnekleri ve kitaplıkları sağlar. Bir Ad Manager bulut depolama alanı grubundan dosya okumayla ilgili aşağıdaki Java örneği, hizmet hesabını oluştururken yapılandırdığınız bileşenlerin kodunuzu nasıl etkileyebileceğini gösterir:
-
Proje adı: Google Cloud Storage projesinin adı.
-
Hizmet hesabı e-posta adresi: Oluşturduğunuz e-posta adresi.
-
.p12 anahtar dosyası: İndirdiğiniz dosya.
-
Grup adı: Bu ad, Ad Manager bulut depolama alanı gruplarını kullanan bir özelliği etkinleştirdiğinizde Google tarafından sağlanır.
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 { /** * Hizmet hesabının, altında oluşturulduğu projenin adı. * * Bu bilgiler, Google Developers Console altında görünür. */ private static final String PROJECT_NAME = "project name"; /** * Hizmet hesabının Geliştirici E-posta adresi. * * Bu e-posta adresi, Google Developers Console'da bir Hizmet Hesabı * İstemci Kimliği oluşturulduktan sonra oluşturulur ve Kimlik Bilgileri * sayfasından alınabilir. Bu e-posta adresi ayrıca, depolama alanı grubuna erişimi * yönetmek için kullanılan Google Grubu'na da eklenmelidir. */ private static final String SERVICE_ACCOUNT_EMAIL = "service account email address"; /** * Depolama alanı işlemleri için kullanılacak grup. * * Bu grubun adı size Hesap Yöneticiniz tarafından * sağlanmıştır. Kullandığınız Ad Manager eklentisine bağlı olarak muhtemelen "gdfp-12345678" veya * "gdfp_cookieupload_12345678" benzeri bir ada sahiptir. */ private static final String BUCKET_NAME = "bucket name"; /** * Okuma/yazma için Google Cloud Storage OAuth 2.0 kapsamı. Bu * Google Grubunuzun grup için sahip olduğu erişim haklarına karşılık * gelmelidir ve Gruba verilmemiş olan erişim haklarını isteyemezsiniz * (bunlar salt_okunur olabilir). */ private static final String STORAGE_SCOPE = "https://www.googleapis.com/auth/devstorage.read_write"; /** * Gruba erişim sağlayan key.p12 dosyasının yolu. * * Bu dosya, hizmet istemci kimliği oluşturulduğunda oluşturulur. Bu * dosyaya sahip değilseniz Google Developers Console'dan * yeni bir istemci p12 anahtarı oluşturmanız gerekecektir. */ private static final String KEY_P12 = "path to .p12 key file"; /** HTTP aktarımı. */ private HttpTransport httpTransport; private Storage storage; // constructor, kimlik bilgilerini ve depolama nesnelerini oluşturur public GcsApiTest() { File p12File = new File(KEY_P12); try { 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); } } /** * Gruptaki ilk dosyanın adını döndürmeye yönelik basit yöntem. * * @dosyanın adını döndürür veya grup boş ise null döndürür * @IOException fırlatır */ 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(); // empty bucket? 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(); } /** * Depolama alanı grubundan belirtilen dosyayı indirmeye yönelik yöntem * * @param filename * İndirilmesi gereken dosyanın adı. * @IOException hatası verir */ 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."); } /** * Farklı testleri yürüten ana yöntem. * * @param args */ public static void main(String[] args) { GcsApiTest gcsApiTest = new GcsApiTest(); try { String filename = gcsApiTest.GetFirstFile(); gcsApiTest.DownloadFile(filename); } catch (IOException e) { System.out.println(e.getMessage()); } } }
Kısıtlama ve eşzamanlı bağlantılar
Eşzamanlı bağlantılarda önceden belirlenmiş bir sınır yoktur. Ancak Google kötüye kullanımı engellemek için Veri Aktarımı getirme isteklerini kısıtlar.