本文档介绍如何查看与虚拟机 (VM) 实例关联的许可、将许可附加到虚拟机以及查看许可更新历史记录。如需详细了解 Compute Engine 上的许可,请参阅许可简介。
准备工作
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
在 Google Cloud 控制台中,前往虚拟机实例页面。
点击要检查其许可的虚拟机的名称。系统会打开实例详细信息页面。
在实例详细信息页面底部,点击等效代码。
查看启动磁盘的
licenses
字段。运行以下
gcloud compute instances describe
命令:gcloud compute instances describe VM_NAME
将
VM_NAME
替换为虚拟机名称。查看输出的
disks
部分。licenses
字段会显示与启动磁盘关联的许可。调用以下
instances.get
v1 方法:GET https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME
替换以下内容:
PROJECT
:项目的名称ZONE
:包含虚拟机的可用区VM_NAME
:虚拟机的名称
Compute Engine API 会在
licenses
字段的disks
部分中返回与启动磁盘关联的许可。在 Google Cloud 控制台中,前往虚拟机实例页面。
点击要检查其用户许可的虚拟机的名称。系统会打开实例详细信息页面。
在实例详细信息页面底部,点击等效代码。
查看启动磁盘的
userLicenses
字段。运行以下
gcloud beta compute instances describe
命令:gcloud beta compute instances describe VM_NAME
将
VM_NAME
替换为虚拟机名称。查看输出的
disks
部分。licenses
字段会显示与启动磁盘关联的许可。调用以下
instances.get
Beta 版方法:GET https://compute.googleapis.com/compute/beta/projects/PROJECT/zones/ZONE/instances/VM_NAME
替换以下内容:
PROJECT
:项目的名称ZONE
:包含虚拟机的可用区VM_NAME
:虚拟机的名称
Compute Engine API 会在
licenses
字段的disks
部分中返回与启动磁盘关联的许可。IMAGE_NAME
:要创建的映像的名称。SOURCE_FILE
:要导入的虚拟磁盘的本地文件或 Cloud Storage URI。OS
:要导入的磁盘映像的操作系统。操作系统的许可是根据此标志的值推断出来的;导入时没有明确提供许可信息标志。如需查看受支持值的列表,请参阅--os
标志。IMAGE_NAME
:要创建的映像的名称。SOURCE_IMAGE
:要根据其创建新映像的映像的名称。LICENSES
:以英文逗号分隔的许可字符串列表。例如:"license1"
、"license2"
。IMAGE_NAME
:要创建的映像的名称。SOURCE_IMAGE
:要根据其创建新映像的映像的名称。LICENSES
:以英文逗号分隔的许可字符串列表。例如:"license1"
、"license2"
。USER_LICENSES
:以英文逗号分隔的用户许可字符串列表。例如:"userlicense1"
、"userlicense2"
。使用以下
gcloud compute instances describe
命令列出与虚拟机关联的磁盘:gcloud compute instances describe VM_NAME --format="yaml(disks)"
验证输出是否类似如下所示:
disks: - autoDelete: true boot: true deviceName: BOOT_DISK_NAME diskSizeGb: '20' guestOsFeatures: - type: UEFI_COMPATIBLE index: 0 interface: SCSI kind: compute#attachedDisk licenses: - BOOT_DISK_LICENSE_STRING mode: READ_WRITE source: https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/disks/BOOT_DISK_NAME type: PERSISTENT
在上一步的输出中,找到启动磁盘的名称。对于启动磁盘,
boot
的值为true
,启动磁盘的名称为deviceName
。使用
gcloud beta compute disks update
命令将用户许可附加到启动磁盘:gcloud beta compute disks update BOOT_DISK_NAME \ --update-user-licenses=LICENSE_URIS
替换以下内容:
BOOT_DISK_NAME
:要将许可附加到的启动磁盘的名称LICENSE_URIS
:许可字符串的逗号分隔列表,可替换所有现有用户许可
使用以下
gcloud beta compute disks describe
命令获取有关启动磁盘的信息。gcloud beta compute disks describe BOOT_DISK_NAME
将
BOOT_DISK_NAME
替换为启动磁盘的名称,以检查是否附加了许可。验证输出是否类似如下所示:
creationTimestamp: '2021-05-05T15:26:27.835-07:00' guestOsFeatures: - type: UEFI_COMPATIBLE id: '727854272460268924' interface: SCSI kind: compute#disk labelFingerprint: 42WmSpB8rSM= lastAttachTimestamp: '2021-05-05T15:26:27.836-07:00' licenseCodes: - '1000006' - '6213885950785916969' licenses: - BOOT_DISK_LICENSE_STRING multiWriter: false name: VM_NAME physicalBlockSizeBytes: '4096' selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_NAME/zones/ZONE/disks/DISK_NAME selfLinkWithId: https://www.googleapis.com/compute/beta/projects/PROJECT_NAME/zones/ZONE/disks/727854272460268924 sizeGb: '20' sourceImage: https://www.googleapis.com/compute/beta/projects/IMAGE_PROJECT/global/images/IMAGE sourceImageId: '7397991294075835597' status: READY type: https://www.googleapis.com/compute/beta/projects/PROJECT_NAME/zones/ZONE/diskTypes/pd-standard userLicenses: - LICENSE_URI users: - https://www.googleapis.com/compute/beta/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME zone: https://www.googleapis.com/compute/beta/projects/PROJECT_NAME/zones/ZONE
通过检查上一步中相应许可字符串的
userLicenses
字段的输出,验证用户许可是否已附加到启动磁盘。如果
userLicenses
字段不包含预期的许可字符串,您可能需要清除并更新许可字符串列表。您可以使用gcloud beta compute disks update
命令执行此操作。在 Google Cloud 控制台中,前往 Logs Explorer 页面。
在工具栏中,确保已启用显示查询。
将以下表达式复制到查询编辑器中:
resource.type="gce_disk" logName="projects/PROJECT_NAME/logs/cloudaudit.googleapis.com%2Factivity" severity>=NOTICE protoPayload.request.@type="type.googleapis.com/compute.disks.update" protoPayload.request.userLicenses:*
点击运行查询。
详细了解付费操作系统:
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
查看与虚拟机关联的许可
如需查看与虚拟机关联的许可,请使用 Google Cloud 控制台、gcloud CLI 或 Compute Engine API。
控制台
gcloud
REST
查看与虚拟机关联的用户许可
如需查看与虚拟机关联的用户许可,请使用Google Cloud 控制台、gcloud CLI 或 Compute Engine API。
控制台
gcloud
REST
导入映像时附加许可
如需在导入映像时附加许可,请使用以下
gcloud compute images import
命令。gcloud compute images import IMAGE_NAME \ --source-file=SOURCE_FILE --os=OS
替换以下内容:
如需详细了解如何导入映像,请参阅导入虚拟磁盘。
创建映像时附加许可
如需在创建映像时附加许可,请使用以下
gcloud compute images create
命令。gcloud compute images create IMAGE_NAME \ --source-image=SOURCE_IMAGE \ --licenses=LICENSES
替换以下内容:
如需详细了解如何创建映像,请参阅创建、删除和弃用自定义映像以及创建 Windows 映像。
创建映像时附加许可及用户许可
如需在创建映像时附加许可及用户许可,请使用以下
gcloud beta compute images create
命令。gcloud beta compute images create IMAGE_NAME \ --source-image=SOURCE_IMAGE \ --licenses=LICENSES \ --user-licenses=USER_LICENSES
替换以下内容:
如需详细了解如何创建映像,请参阅创建、删除和弃用自定义映像以及创建 Windows 映像。
附加并验证用户许可
如需附加并验证用户许可,请执行以下操作:
查看许可更新历史记录
按照以下步骤查看项目中虚拟机的许可更新历史记录:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-07-08。
-