데이터 전송 스토리지 버킷에 대한 액세스 권한은 Google Ad Manager의 사용자 역할을 통해 관리됩니다. 필요한 사용자 역할 권한이 있으면 원하는 방법을 사용하여 데이터 전송 파일에 액세스할 수 있습니다.
도움말의 섹션으로 이동하기
권한의 사용자 역할 정보
스토리지 버킷에 액세스하려면 '데이터 전송 버킷 보기' 권한이 사용 설정된 역할에 속해 있어야 합니다.
- 관리자 사용자 역할: 기본 제공 관리자 사용자 역할에는 기본적으로 이 권한이 사용 설정되어 있습니다.
- 맞춤 사용자 역할: 맞춤 사용자 역할에 권한을 추가할 수 있습니다.
사용자 역할을 변경하려면 네트워크의 관리자이거나 '관리 탭에서 사용자, 역할, 팀 수정' 권한이 있어야 합니다. 사용자는 한 번에 하나의 역할에만 연결할 수 있습니다.
자세한 내용은 사용자 역할 멤버십 관리하기를 참고하세요.
역할에서 권한 보기
관리자는 사용자가 현재 속한 역할을 검토하고 필요에 따라 권한을 추가하거나 삭제할 수 있습니다.
- Google Ad Manager에 로그인합니다.
- 관리를 클릭한 다음 액세스 및 승인을 클릭합니다.
- 역할을 클릭한 다음 역할 이름을 클릭합니다.
- '보고'에서 '데이터 전송 버킷 보기' 권한을 찾습니다.
- (선택사항) 역할의 권한을 사용 설정하려면 체크박스를 선택합니다.
스토리지 버킷에 액세스하는 방법
Google Cloud Storage는 Ad Manager에서 데이터 전송 보고서 및 일괄 업로드한 잠재고객 쿠키 ID의 데이터 저장소로 사용하는 별도의 Google 제품입니다.
Ad Manager Cloud Storage 버킷에 액세스할 수 있는 세 가지 방법이 있습니다. 방법을 복잡한 순으로 나열하면 다음과 같습니다.
- 웹:
https://console.developers.google.com/storage/gdfp-[Ad Manager 네트워크 코드]를 방문합니다. - gsutil은 저장소 버킷과의 상호작용을 위해 Unix와 유사한 명령어를 제공하는 Python 기반 명령줄 도구입니다. 버킷 인증이 자동으로 추출되어 처리됩니다.
- Google Cloud Storage API는 저장소 버킷 조작을 위한 모든 기능을 갖춘 API로, JSON 또는 XML RESTful 웹 인터페이스를 통해 사용할 수 있습니다. API 클라이언트 라이브러리는 다양한 프로그래밍 환경(예: 자바, 자바스크립트, Python, Objective-C)에서 사용할 수 있습니다. 이러한 방식은 사용자가 Google App Engine 앱이나 자바 웹 앱과 프로그래밍 방식으로 통합하는 저장소 버킷을 조작해야 하는 경우 유용합니다.
이 도움말은 Google Cloud Storage API의 세부정보를 제공합니다. 웹 및 gsutil 액세스는 관리하기가 더 쉬우므로 이 방법을 먼저 탐색해보는 것이 좋습니다. 이러한 방법은 Google Cloud Storage 개발자 사이트에 전부 설명되어 있습니다.
Google Cloud Storage API 사용
API 액세스가 가장 적합하다고 판단된 경우 Google Cloud Storage 서비스 계정을 구성하시기 바랍니다.
Google Cloud Storage 서비스 계정 구성
API를 통해 저장소 버킷에 액세스할 때 사용자의 컨텍스트에서 실행하기보다 서비스 계정을 구성하는 것이 효율적입니다. 서비스 계정은 동적으로 생성된 OAuth 토큰 대신 비공개 키를 인증에 사용하여 애플리케이션 개발을 단순화합니다. 서비스 계정 구성 방법은 다음과 같습니다.
-
Google Developer Console로 이동합니다.
-
애플리케이션의 상위 카테고리가 되는 새 프로젝트를 만들거나 기존 프로젝트를 선택한 다음 프로젝트를 클릭합니다.
-
(선택사항) Ad Manager 저장소 버킷에서 본인의 Google Cloud Storage 계정으로 파일을 복사할 예정이면 결제 및 설정을 클릭하여 프로젝트에 청구 기준을 추가합니다.
-
새 클라이언트 ID를 생성합니다.
-
API 및 서비스와 사용자 인증 정보를 차례로 클릭합니다.
-
새 클라이언트 ID 만들기를 클릭합니다.
-
애플리케이션 유형으로 서비스 계정을 선택하고 클라이언트 ID 만들기를 클릭합니다.
-
생성된 이메일 주소는
[unique-id]@developer.gserviceagccount.com형식입니다. Ad Manager 네트워크에 서비스 계정 사용자를 추가하고 '데이터 전송 버킷 보기' 권한이 있는 역할에 있는지 확인합니다. -
새 P12 키 생성을 클릭합니다. 파일은 컴퓨터에 저장됩니다. 아래 예시 코드에서와 같이 개발한 애플리케이션에서 이 키를 사용하여 API에 액세스합니다.
-
- '데이터 전송 버킷 보기' 권한이 있는 사용자는 Ad Manager 스토리지 버킷에 액세스할 수 있습니다.
Google에서는 Google Cloud Storage에 대한 코드 예제와 라이브러리를 제공합니다. Ad Manager 클라우드 저장소 버킷의 파일을 읽기 위한 다음 Java 예제에는 서비스 계정을 설정할 때 사용자가 설정한 구성요소가 코드에 반영되는 방식을 보여줍니다.
-
프로젝트 이름: Google Cloud Storage 프로젝트의 이름입니다.
-
서비스 계정 이메일 주소: 생성한 이메일 주소입니다.
-
.p12 키 파일: 다운로드한 파일입니다.
-
버킷 이름 : Ad Manager 클라우드 저장소 버킷을 사용하는 기능을 활성화할 때 Google에서 제공하는 이름입니다.
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 {
/**
* The name of the project under which the service account was created.
*
* Google Developers Console에 표시되는 정보
*/
private static final String PROJECT_NAME = "project name";
/**
* 서비스 계정의 개발자 이메일 주소
*
* 이 이메일은 Google Developers Console에서 서비스 계정 클라이언트 ID를
* 만들 때 생성되며 사용자 인증 정보 페이지에서
* 검색할 수 있습니다.
*/
private static final String SERVICE_ACCOUNT_EMAIL = "service account email address";
/**
* 저장소 운영에 사용하는 버킷
*
* 이 버킷의 이름은 계정 관리자에 의해
* 제공되었습니다. 사용 중인 Ad Manager 부가기능에 따라 'gdfp-12345678' 또는
* 'gdfp_cookieupload_12345678'과 이름이 유사할 수 있습니다.
*/
private static final String BUCKET_NAME = "bucket name";
/**
* 읽기 및 쓰기에 사용되는 Google Cloud Storage OAuth 이는 버킷의 '데이터 전송 버킷 보기' 권한에 대한
* 액세스 권한에 해당해야 하며,
* 이 권한을 통해 부여되지 않은 액세스 권한을
* 요청할 수 없습니다.
*/
private static final String STORAGE_SCOPE =
"https://www.googleapis.com/auth/devstorage.read_write";
/**
* 버킷에 대한 액세스 제공하는 key.p12 파일의 경로
*
* 이 파일은 서비스 클라이언트 ID가 만들어질 때 생성됩니다. 이 파일이
* 없는 경우 Google Developers Console에서 새 클라이언트 p12 키를
* 생성해야 합니다.
*/
private static final String KEY_P12 = "path to .p12 key file";
/** HTTP transport. */
private HttpTransport httpTransport;
private Storage storage;
// constructor, sets up credentials and storage objects
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);
}
}
/**
* 버킷에 있는 첫 번째 파일의 이름을 반환하는 메서드
*
* @파일의 이름을 반환하거나 버킷이 비어 있는 경우 null로 표시
* @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();
// 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();
}
/**
* 저장소 버킷에서 지정된 파일을 다운로드하는 메서드
*
* @매개변수 파일 이름
* 다운로드해야 하는 파일의 이름입니다.
* @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.");
}
/**
* 다른 테스트를 실행하는 주요 메서드
*
* @매개변수 인수
*/
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());
}
}
}
조절 및 동시 연결
동시 연결에는 미리 정의된 한도가 없지만 Google은 악용사례를 방지하기 위해 데이터 전송 가져오기 요청을 제한합니다.