2015-04-13 16 views
10

Tôi muốn sử dụng nhóm GCS làm nền tảng cho cửa hàng blobstore của mình nhưng tôi không thể tìm ra cách thiết lập một nhóm trên máy chủ phát triển của mình.Làm cách nào để bật Google Cloud Storage trên máy chủ phát triển địa phương của tôi?

Có hướng dẫn để thực hiện điều này bằng cách sử dụng các nhà phát triển giao diện điều khiển trên máy chủ trực tiếp, nhưng tôi không thể tìm thấy bất cứ điều gì về cách để làm điều đó trên máy tính phát triển địa phương của tôi ...

Trả lời

20

Hóa ra bạn không cần để thực hiện bất kỳ thiết lập nào. Tôi chỉ cho rằng có một cái tên cụ thể khi tải lên bằng cách sử dụng blobstore và một cái được tạo cho tôi một cách tự động.

Ngẫu nhiên, nó dường như không được ghi lại ở bất cứ đâu cách bạn có thể duyệt các tệp trong lưu trữ của máy chủ phát triển. Bạn có thể làm điều đó bằng cách chọn thực thể __GsFileInfo__ trong quyền truy cập quản trị Datastore Viewer vào máy chủ dev cục bộ của bạn.

4

Bạn cần tải xuống và tích hợp Google Cloud Storage Client Library cho Máy ứng dụng.

Thư viện này cung cấp cho bạn các GcsService đó cũng tương tự như BlobstoreService, vì vậy bạn có thể viết một tập tin, đọc một tập tin, xóa một tập tin và các chức năng khác được cung cấp từ Cloud Storage

Khi bạn sử dụng mã trong môi trường phát triển, các tệp được tải lên được lưu trữ trong thư mục và một thực thể __GsFileInfo__ được tạo trong kho dữ liệu cục bộ, giữ nguyên siêu dữ liệu đính kèm với tệp

Thư viện này sẽ hoạt động cho cả phát triển và môi trường sản xuất.

Ở đây bạn có thể tìm thấy hướng dẫn Getting Started và đầy đủ JavaDoc tham khảo

+0

Tôi không nghĩ bạn cần lấy thư viện khách hàng. Bạn cần phải làm điều đó chỉ khi, tốt, bạn cần phải truy cập vào các cửa hàng thông qua các chức năng thư viện. Tôi đang viết thư cho cửa hàng bằng cách sử dụng blobstore, vì vậy tôi không cần thư viện khách hàng. Có vẻ như việc thiết lập các thùng xảy ra tự động khi bạn sử dụng chúng, vì vậy không cần thiết lập gì cả. Xem câu trả lời của tôi. – user2771609

7

Đối với những người cố gắng để có được Google Cloud Storage làm việc tại tất cả từ máy chủ ứng dụng Java phát triển địa phương của họ, tôi nghĩ một câu trả lời hơn sẽ là hữu ích. Tôi đã quản lý máy chủ ứng dụng dev cục bộ của mình làm việc với Google Cloud Storage không phải cục bộ, nhưng chỉ tìm hiểu mã và tìm ra những gì cần thiết - dường như không có tài liệu về điều này.

Mục tiêu sẽ được để có được khối mã này để làm việc tại địa phương, mà đọc một tập tin từ GCS:

GcsService gcsService = 
     GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance()); 
    int fileSize = (int) gcsService.getMetadata(gcsFilename).getLength(); 
    ByteBuffer byteBuffer = ByteBuffer.allocate(fileSize); 
    GcsInputChannel inputChannel = gcsService.openReadChannel(gcsFilename, 0); 
    int readResult = inputChannel.read(byteBuffer); 
    byte[] fileBytes = byteBuffer.array(); 

Nếu bạn cố gắng làm điều này tại địa phương, bạn sẽ không tìm thấy bất kỳ tập tin bạn đã tải lên GCS, vì nó sẽ cố gắng sử dụng GCS cục bộ giả mạo. Thật không may, tôi đã không tìm thấy một cách hay để tải lên GCS cục bộ này, vì vậy điều đó không hữu ích (không có trình khám phá tệp nào vì nó có trong phiên bản đám mây và gsutil không hoạt động cho nó). Vì vậy, thay vào đó, chúng tôi sẽ làm cho nó hoạt động với GCS không phải cục bộ (đám mây) khi chạy trong máy chủ ứng dụng dev cục bộ.

Để làm điều đó, lưu ý GcsService mà được tạo ra trong com.google.appengine.tools.cloudstorage.GcsServiceFactory bởi khối mã này:

if (location == SystemProperty.Environment.Value.Production || hasCustomAccessTokenProvider()) { 
    rawGcsService = OauthRawGcsServiceFactory.createOauthRawGcsService(builder.build()); 
} else if (location == SystemProperty.Environment.Value.Development) { 
    rawGcsService = LocalRawGcsServiceFactory.createLocalRawGcsService(); 

Trên đây nói rằng bạn cần phải xác định một mã thông báo truy cập tùy chỉnh nhà cung cấp dịch vụ để nhận dịch vụ phi địa phương, mà bạn thực hiện bằng cách xác định thuộc tính hệ thống. Đối với một ứng dụng công cụ ứng dụng, bạn có thể làm điều đó trong appengine-web.xml như thế này:

<system-properties> 
    <property name="gcs_access_token_provider" value="com.mypackage.MyAccessTokenProvider" /> 
</system-properties> 

Giá trị này của tài sản đó là một lớp học mà bạn xác định mà thực hiện com.google.appengine.tools.cloudstorage.oauth.AccessTokenProvider, cung cấp mã thông báo truy cập cho ứng dụng của bạn. Lớp đó cần tạo GoogleCredential, có thể được sử dụng để tìm nạp mã thông báo truy cập, sử dụng hướng dẫn cho "Khác" cho GoogleCredential trên https://developers.google.com/identity/protocols/OAuth2ServiceAccount#authorizingrequests.

Bây giờ, nó sẽ tạo OAuth GcsService kết nối với đám mây và bạn không cần sử dụng bộ nhớ cục bộ giả.

Các vấn đề liên quan