Truy cập vào các tệp trong Cloud Storage, trừu tượng hóa trừu tượng Resource

Truy cập vào các tệp trong Cloud Storage, trừu tượng hóa trừu tượng Resource

Thông tin về lớp học lập trình này

subjectLần cập nhật gần đây nhất: thg 2 10, 2020
account_circleTác giả: meltsufin

1. Tổng quan

Khung chương trình Spring cung cấp bản tóm tắt ResourceLoader để dễ dàng đọc và ghi tệp từ nhiều nguồn, chẳng hạn như hệ thống tệp, đường dẫn lớp học hoặc web. Bạn chỉ cần chỉ định URI cho tài nguyên bằng tiền tố giao thức nổi tiếng. Ví dụ: để truy cập vào một tệp trên hệ thống tệp trên máy, bạn phải chỉ định một URI như file:/data/config.yaml.

Bạn sẽ viết một ứng dụng Spring Boot để truy cập các tệp lưu trữ trên Cloud Storage bằng cách sử dụng bản tóm tắt Tài nguyên mùa xuân và tiền tố giao thức gs:.

Bạn làm việc đó bằng cách sử dụng Cloud Shell và công cụ dòng lệnh gcloud của SDK SDK.

Kiến thức bạn sẽ học được

  • Cách sử dụng Cloud Storage khởi động mùa xuân
  • Cách truy cập các tệp trong Cloud Storage bằng Spring
  • Cách sử dụng bản tóm tắt ResourceWritableResource của Spring

Bạn cần có

  • Một dự án Google Cloud
  • Một trình duyệt, chẳng hạn như Google Chrome
  • Quen thuộc với các trình chỉnh sửa văn bản Linux tiêu chuẩn, chẳng hạn như Vim, Emacs và GNU nano

Bạn sẽ sử dụng lớp học lập trình như thế nào?

Bạn xếp hạng trải nghiệm như thế nào khi xây dựng các ứng dụng web HTML và CSS?

Bạn đánh giá trải nghiệm sử dụng các dịch vụ của Google Cloud như thế nào?

2. Thiết lập và các yêu cầu

Thiết lập môi trường theo tiến độ riêng

Nếu chưa có Tài khoản Google (Gmail hoặc Google Apps), thì bạn phải tạo một tài khoản. Đăng nhập vào bảng điều khiển của Google Cloud Platform (console.cloud.google.com) và tạo một dự án mới:

Ảnh chụp màn hình từ 2016-02-10 12:45:26.png

Hãy ghi nhớ mã dự án, một tên duy nhất trên tất cả các dự án Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động cho bạn!). Lớp học này sẽ được gọi sau này trong lớp học lập trình này là PROJECT_ID.

Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên của Google Cloud.

Nếu tham gia lớp học lập trình này, bạn sẽ không mất quá vài đô la, nhưng có thể sẽ hiệu quả hơn nếu bạn quyết định sử dụng nhiều tài nguyên hơn hoặc nếu bạn để các tài nguyên đó hoạt động (xem "cleanup" ở cuối tài liệu này).

Người dùng mới của Google Cloud Platform đủ điều kiện dùng thử 300 đô la dùng thử miễn phí.

Cloud Shell

Bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud.

Kích hoạt Google Cloud Shell

Từ bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ trên cùng bên phải:

Sau đó nhấp vào "Start Cloud Shell":

Bạn chỉ cần dành vài phút để cấp phép và kết nối với môi trường:

Máy ảo này được tải bằng tất cả các công cụ phát triển mà bạn cần. cung cấp một thư mục gốc 5GB cố định và chạy trên Google Cloud, qua đó nâng cao đáng kể hiệu suất và khả năng xác thực mạng. Phần lớn công việc của bạn trong phòng thí nghiệm này có thể thực hiện chỉ bằng một trình duyệt hoặc Google Chromebook.

Sau khi kết nối với Cloud Shell, bạn sẽ thấy rằng bạn đã được xác thực và dự án này đã được đặt thành PROJECT_ID của bạn.

Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:

gcloud auth list

Đầu ra lệnh

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

Đầu ra lệnh

[core]
project = <PROJECT_ID>

Nếu chưa, bạn có thể đặt lệnh đó bằng lệnh sau:

gcloud config set project <PROJECT_ID>

Đầu ra lệnh

Updated property [core/project].

3. Tạo một tệp trong Cloud Storage

Sau khi Cloud Shell chạy, bạn có thể bắt đầu tạo tệp và chuyển các tệp đó sang Cloud Storage.

Tạo một tệp có tên my-file.txt:

$ echo "Hello World from GCS" > my-file.txt

Sau đó, tạo một bộ chứa duy nhất mới trong Cloud Storage và chuyển tệp vào đó bằng gsutil.

$ BUCKET=spring-bucket-$USER
$ gsutil makebucket gs://$BUCKET
$ gsutil copy my-file.txt gs://$BUCKET

Chuyển đến trình duyệt lưu trữ trong Cloud Storage và xác minh rằng bộ chứa và tệp có ở đó.

4. Khởi chạy ứng dụng Spring Boot

Bắt đầu viết ứng dụng bằng cách sử dụng dòng lệnh để tạo một ứng dụng mới khởi động vào mùa xuân có Spring Initializr:

$ curl https://start.spring.io/starter.tgz \
-d dependencies=web,cloud-gcp-storage -d baseDir=spring-gcs | tar -xzvf -

Xin lưu ý rằng Initializr sẽ tự động thêm spring-boot-starter-webspring-cloud-gcp-starter-storage vào các phần phụ thuộc trong pom.xml của ứng dụng mẫu.

Thay đổi đối với thư mục của ứng dụng mẫu:

$ cd spring-gcs

Tạo và chạy ứng dụng bằng Maven.

$ ./mvnw spring-boot:run

Ứng dụng sẽ bắt đầu lắng nghe trên cổng 8080. Mở thẻ Cloud Shell mới và chạy curl để truy cập vào ứng dụng.

$ curl localhost:8080

Bạn sẽ nhận được phản hồi 404 vì ứng dụng chưa làm gì hữu ích. Quay lại thẻ Cloud Shell trước đó nơi ứng dụng đang chạy và bị loại bỏ bằng Control+C (Command+C trên Macintosh).

5. Đọc tệp trong Cloud Storage

Sửa đổi ứng dụng Spring Boot của bạn để truy cập my-file.txt, tệp mà trước đây bạn lưu trữ trong Cloud Storage. Mục tiêu của bạn là chỉ trả về nội dung của tệp qua HTTP.

Trong hướng dẫn sau, bạn sẽ dùng Vim để chỉnh sửa tệp, nhưng cũng có thể sử dụng Emacs, GNU nano hoặc trình chỉnh sửa mã tích hợp sẵn trong Cloud Shell:

$ cd ~/spring-gcs

Thêm bộ điều khiển REST GcsController vào ứng dụng.

$ vi src/main/java/com/example/demo/GcsController.java

Dán mã sau và đừng quên sửa URI tài nguyên bằng bộ chứa mà bạn đã tạo trước đó. Bạn có thể kiểm tra bộ chứa bằng cách chạy lệnh echo $BUCKET.

src/main/java/com/example/demo/GcsController.java

package com.example.demo;

import java.io.IOException;
import java.nio.charset.Charset;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GcsController {

 
@Value("gs://REPLACE_WITH_YOUR_BUCKET/my-file.txt")
 
private Resource gcsFile;

 
@RequestMapping(value = "/", method = RequestMethod.GET)
 
public String readGcsFile() throws IOException {
   
return StreamUtils.copyToString(
        gcsFile
.getInputStream(),
       
Charset.defaultCharset()) + "\n";
 
}
}

Tạo và chạy ứng dụng bằng Maven:

$ ./mvnw spring-boot:run

Ứng dụng bắt đầu lắng nghe trên cổng 8080. Mở thẻ Cloud Shell mới và chạy curl để truy cập vào ứng dụng.

$ curl localhost:8080

Giờ đây, bạn sẽ thấy rằng nội dung của tệp được trả về từ ứng dụng. Hãy chuyển đến thẻ Cloud Shell trước đó, nơi ứng dụng đang chạy và hủy bỏ bằng Control+C (Command+C trên Macintosh).

6. Ghi vào tệp trong Cloud Storage

Bạn đọc nội dung của tệp trong Cloud Storage và hiển thị tệp đó thông qua bộ điều khiển Spring REST. Bây giờ, hãy thay đổi nội dung của tệp bằng cách đăng nội dung tệp mới lên cùng một điểm cuối HTTP.

Bạn cần thêm một phương thức khác vào GcsController để phản hồi POST HTTP và ghi dữ liệu vào tệp của bạn trong Cloud Storage. Lần này, hãy truyền Resource vào mùa xuân đến WritableResource.

Cập nhật GcsController với các lần nhập bổ sung mà bạn cần.

src/main/java/com/example/demo/GcsController.java

import java.io.OutputStream;
import org.springframework.core.io.WritableResource;
import org.springframework.web.bind.annotation.RequestBody;

Thêm phương thức điểm cuối mới vào bộ điều khiển.

src/main/java/com/example/demo/GcsController.java

@RestController
public class GcsController {
 
@RequestMapping(value = "/", method = RequestMethod.POST)
 
String writeGcs(@RequestBody String data) throws IOException {
   
try (OutputStream os = ((WritableResource) gcsFile).getOutputStream()) {
      os
.write(data.getBytes());
   
}
   
return "file was updated\n";
 
}
 
...
}

Tạo và chạy ứng dụng bằng Maven:

$ ./mvnw spring-boot:run

Ứng dụng bắt đầu lắng nghe trên cổng 8080. Mở một thẻ Cloud Shell mới và chạy curl để đăng thông báo lên ứng dụng.

$ curl -d 'new message' -H 'Content-Type: text/plain' localhost:8080

Bạn sẽ thấy một thông báo xác nhận rằng nội dung của tệp đã được cập nhật. Tuy nhiên, hãy xác minh điều đó bằng cách thực hiện GET.

$ curl localhost:8080

Bạn sẽ thấy nội dung cập nhật của tệp được trả về từ ứng dụng. Quay lại thẻ Cloud Shell trước đó nơi ứng dụng đang chạy và bị loại bỏ bằng Control+C (Command+C trên Macintosh).

7. Xin chúc mừng!

Bạn đã học cách dùng bản tóm tắt Tài nguyên mùa xuân để dễ dàng truy cập vào các tệp trong Cloud Storage. Bạn đã viết một ứng dụng web mùa xuân để có thể đọc và ghi vào tệp trong Cloud Storage. Bạn cũng đã tìm hiểu về công cụ Khởi động mùa xuân cho bộ nhớ trên đám mây giúp bật chức năng đó.

Tìm hiểu thêm

Giấy phép

Tài liệu này được cấp phép theo Giấy phép chung Creative Commons 2.0.