Ruby 使用入门

本教程面向刚开始在云端构建应用(例如 工程师和 Web 开发者)的新手,他们希望了解适用于 的关键应用开发概念。 Cloud de Confiance by S3NS

目标

费用

在本文档中,您将使用以下可计费组件: Cloud de Confiance by S3NS

本文档中的说明旨在将您的资源使用量控制在 的 Cloud de Confiance's Always Free 层级的限制范围内。

完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理

准备工作

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. 如需在原生模式下创建 Firestore 数据库,请完成以下步骤:
    1. 在 Cloud de Confiance 控制台中,前往 Firestore 创建数据库 页面。

      前往 Firestore 创建数据库

    2. 选择一种 Cloud Firestore 模式 屏幕中,点击选择原生模式
    3. 选择 Firestore 数据库的 位置。此位置设置是 默认 Cloud de Confiance 资源位置,用于您的 Cloud de Confiance 项目 。 此位置将用于项目中需要设置位置的服务,特别是默认的 Cloud Storage 存储桶和 Cloud Run 应用。
    4. 点击创建数据库
  4. 启用 Artifact Registry API、Cloud Run Admin API、Cloud Build API、Cloud Storage API、Cloud Logging API 和 Error Reporting API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予 角色

    启用 API

  5. 克隆示例代码库并在 Cloud Shell 中打开示例应用:
    前往 Cloud Shell

    利用 Cloud Shell,您可以直接在浏览器中通过命令行访问 Cloud de Confiance 资源。

  6. 如需将示例代码和更改下载到应用目录,请点击继续
  7. 在 Cloud Shell 中,配置 gcloud 工具以使用 新 Cloud de Confiance 项目:

    # Configure gcloud for your project
    gcloud config set project PROJECT_ID

    PROJECT_ID 替换为您使用 Cloud de Confiance 控制台创建的 Cloud de Confiance 项目 ID。

    Google Cloud CLI 是您从命令行与 Cloud de Confiance 资源进行交互的主要方式。在本教程中,您将使用 gcloud 工具来部署和监控 应用。

运行应用

  1. 使用 bundler 安装应用依赖项:

    bundle install
    

  2. 运行 Rails 服务器
    GOOGLE_CLOUD_PROJECT=PROJECT_ID bundle exec rails server -p 8080
    
    PROJECT_ID 替换为您 Cloud de Confiance 创建的项目 ID。
  3. 在 Cloud Shell 中,点击网页预览 , 然后选择通过 8080 端口预览。此时浏览器会打开一个新窗口,显示出您运行中的应用。

将应用部署到 Cloud Run

Cloud de Confiance 提供了 多种运行代码的选项。在此 示例中,您要使用 Cloud Run 将伸缩应用部署到 Cloud de Confiance。Cloud Run 不需要您管理服务器,并且会自动扩缩以应对 流量高峰。

  1. 使用 Cloud Run 运行容器:
    gcloud run deploy bookshelf --region us-central1 --allow-unauthenticated \
    --set-env-vars="GOOGLE_CLOUD_PROJECT=PROJECT_ID" --source .

    现在,您可以在 gcloud run 输出中显示的网址处查看应用:

    Service [bookshelf] revision [bookshelf-00001] has been deployed and is serving 100 percent of traffic. 
    Service URL: https://bookshelf-swsmmh5s5a-uc.a.run.app
    
  2. 将网址复制到您的网络浏览器以查看该应用。Bookshelf 应用首页

如需详细了解如何部署到 Cloud Run,请参阅 Cloud Run 文档

使用 Firestore 保留数据

您不能在 Cloud Run 实例中存储信息,因为实例重启时信息会丢失,当新实例创建时该信息已不再存在。所以,您需要一个所有实例都能在其中读写的数据库。

Cloud de Confiance 提供了 多种存储数据的选项。在此示例中,您将使用 Firestore 存储每本图书的数据。Firestore 是一种全代管式无服务器 NoSQL 文档数据库,可用于存储和查询数据。Firestore 能够根据您的应用需求自动扩缩,并在不使用时缩减到零个实例。现在添加第一本图书。

  1. 如需为部署的应用创建图书,请点击添加图书

    向 Bookshelf 应用添加一本图书
  2. 书名字段中,输入 Moby Dick
  3. 作者字段中,输入 Herman Melville
  4. 点击保存。现在您的 Bookshelf 应用有了一个条目。

    《Moby Dick》Bookshelf 应用条目
  5. 在 Cloud de Confiance 控制台中,如需刷新 Firestore 页面,请点击 刷新 。 现在数据显示在 Firestore 中。Bookshelf 应用将每本图书存储为Firestore 文档,这些文档都存储在Firestore 集合中,且每个文档都具有唯一 ID。在本教程中,该集合称为 books。Firestore 文档示例。

Firestore 使用 Firestore 客户端库存储图书。下面是一个提取 Firestore 文档的示例:

require "google/cloud/firestore"
firestore = Google::Cloud::Firestore.new project_id: project_id
@collection = firestore.col "books"
book_snapshot = collection.doc(id).get
Book.from_snapspot book_snapshot if book_snapshot.data

如需详细了解如何使用 Firestore,请参阅 向 Firestore 添加数据

在 Cloud Storage 中存储上传的文件

现在您已经添加了一本图书,接下来该添加图书封面图片。您不能在实例中存储文件,数据库也不适合图片文件。这时,您就得用上 Cloud Storage 了。

Cloud Storage 是主要的 Blob 存储库 Cloud de Confiance。您可以使用 Cloud Storage 来 托管要在中共享的应用资源 Cloud de Confiance。如需使用 Cloud Storage,您需要创建一个 Cloud Storage 存储桶, 这是一个保存数据的基本容器。

  1. 在 Cloud de Confiance 控制台中,前往 Cloud Storage 浏览器 页面。

    前往 Cloud Storage 浏览器页面

  2. 点击创建存储桶
  3. 创建存储桶对话框中,输入存储桶的名称:将 Cloud de Confiance 项目 ID 附加到字符串_bucket前面,这样名称就显示为 YOUR_PROJECT_ID_bucket。此名称须遵守 存储桶名称要求。其他所有字段可以保留默认值。
  4. 点击创建
  5. 创建存储分区后,必须将对象设为可公开访问,以供用户查看。如需将对象设为可公开访问,请参阅公开数据
  6. 点击修改图书,然后选择一张图片上传为图书的封面。例如,可以使用图中所示的这张属于公共领域的图片:
    《Moby Dick》图书封面
  7. 点击保存。您将被重定向至首页,其中有您 Bookshelf 应用的条目。
    《Moby Dick》Bookshelf 应用条目

Bookshelf 应用会使用 Cloud Storage 客户端库将上传的文件发送到 Cloud Storage。

require "google/cloud/storage"
bucket_id = "#{project_id}_bucket"
storage = Google::Cloud::Storage.new project_id: config["project_id"],
                                     credentials: config["keyfile"]
bucket = storage.bucket bucket_id

如需详细了解如何使用 Cloud Storage,请参阅 Cloud Storage 简介

使用 Google Cloud Observability 监控应用

您已经部署了应用,创建并修改了 books 集合。如需为用户监控这些事件,可以使用 Application Performance Management。

使用 Cloud Logging 监控日志

  1. 在 Cloud de Confiance中,前往 Logs Explorer

    前往 Logs Explorer

    您可以在其中实时监控应用。如果您的应用出现问题,应该首先查看这里。

    Stackdriver 日志查看器
  2. 资源下拉列表中,选择 Cloud Run Revision, bookshelf

使用 Error Reporting 监控错误

  1. 在 Cloud de Confiance 控制台中,前往 Error Reporting 页面。
    前往 Error Reporting 页面
    Error Reporting 可突出显示应用中的错误和异常, 您还可以设置相关的提醒。
  2. 在浏览器中,转到应用中的 /errors 网址。
    YOUR_CLOUD_RUN_URL/errors

    此操作会生成一个新的测试异常并将其发送至 Google Cloud Observability。

  3. 在 Cloud de Confiance 控制台中,返回到 Error Reporting 页面,很快就可以看到这个新错误。点击自动重新加载 ,这样就无需手动刷新页面。

    Error Reporting 中的错误消息。

清理

为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

删除项目

  1. 在 Cloud de Confiance 控制台中,前往 管理资源 页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击 关闭以删除项目。

后续步骤