En este documento, se describe cómo configurar la flexibilidad de instancias cuando creas máquinas virtuales (VMs) de forma masiva. La flexibilidad de instancias te permite especificar varios tipos de máquinas, clasificarlos por preferencia y anular la plataforma de CPU mínima y la configuración de disco para cada selección, de modo que Compute Engine pueda aprovisionar VMs en función de la capacidad y la disponibilidad de cuota en una región.
Para obtener más información sobre la flexibilidad de instancias para las VMs creadas de forma masiva, consulta Acerca de la flexibilidad de instancias para las VMs creadas de forma masiva.
Antes de comenzar
- En el caso de las VMs y cualquier recurso relacionado que quieras crear, asegúrate de tener suficiente cuota.
- Si quieres crear VMs Spot de forma masiva, consulta la disponibilidad de los recursos antes de crear las VMs. Verificar la disponibilidad de los recursos ayuda a reducir las probabilidades de que encuentres errores de disponibilidad de recursos cuando crees VMs. Para obtener instrucciones, consulta Cómo ver la disponibilidad de recursos de las VMs Spot.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación verifica tu identidad para acceder a los servicios y las APIs de Cloud de Confiance by S3NS . Para ejecutar
código o muestras desde un entorno de desarrollo local, puedes autenticarte en
Compute Engine seleccionando una de las siguientes opciones:
Selecciona la pestaña que corresponda a la forma en que planeas usar las muestras de esta página:
gcloud
-
Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada. Después de acceder, inicializa Google Cloud CLI con el siguiente comando:
gcloud init
-
- Configura una región y una zona predeterminadas.
REST
Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.
Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada.
Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Cloud de Confiance .
Roles obligatorios
Para obtener los permisos que necesitas para crear VMs de forma masiva,
pídele al administrador que te otorgue el rol de IAM
Administrador de instancias de Compute (v1) (roles/compute.instanceAdmin.v1) en el proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para crear VMs de forma masiva. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para crear VMs de forma masiva:
-
compute.instances.createen el proyecto -
Si deseas usar una imagen personalizada para crear la VM, sigue estos pasos:
compute.images.useReadOnlyen la imagen -
Para usar una instantánea a fin de crear la VM, haz lo siguiente:
compute.snapshots.useReadOnlyen la instantánea -
Si quieres usar una plantilla de instancias para crear la VM, sigue estos pasos:
compute.instanceTemplates.useReadOnlyen la plantilla de instancias -
A fin de especificar una subred para tu VM:
compute.subnetworks.useen el proyecto o en la subred elegida -
Si deseas especificar una dirección IP estática para la VM:
compute.addresses.useen el proyecto -
Para asignar una dirección IP externa a la VM cuando se usa una red de VPC,
compute.subnetworks.useExternalIpen el proyecto o en la subred elegida. -
Para asignar una red heredada a la VM, ejecuta
compute.networks.useen el proyecto. -
Para asignar una dirección IP externa a la VM cuando se usa una red heredada, ejecuta
compute.networks.useExternalIpen el proyecto -
Para configurar los metadatos de la instancia de VM para la VM,
compute.instances.setMetadataen el proyecto. -
Para configurar etiquetas en la VM, haz lo siguiente:
compute.instances.setTagsen la VM -
Para configurar etiquetas en la VM, haz lo siguiente:
compute.instances.setLabelsen la VM -
A fin de configurar una cuenta de servicio para que la VM use:
compute.instances.setServiceAccounten la VM -
Crear un disco nuevo para la VM:
compute.disks.createen el proyecto -
Para conectar un disco existente en modo de solo lectura o de lectura y escritura, usa
compute.disks.useen el disco. -
Para conectar un disco existente en modo de solo lectura, haz lo siguiente:
compute.disks.useReadOnlyen el disco
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Crea VMs con varios tipos de máquinas de igual preferencia
Si tu carga de trabajo puede operar en varios tipos de máquinas diferentes, puedes especificar una lista de todos los tipos de máquinas compatibles en una sola selección de instancias. En los siguientes ejemplos, se muestra cómo puedes especificar varios tipos de máquinas con la misma preferencia.
gcloud
Para crear VMs de forma masiva con una sola selección de instancias, usa el comando gcloud compute instances bulk create con la marca --instance-selection-machine-types.
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--instance-selection-machine-types=MACHINE_TYPE_1,MACHINE_TYPE_2
Reemplaza lo siguiente:
COUNT: Es la cantidad de VMs que se crearán.NAME_PATTERN: Es el patrón de nombres para las VMs.MACHINE_TYPE_1,MACHINE_TYPE_2: Son los tipos de máquinas que se usarán para las VMs.REGION: la región en la que se crearán las VMs
Ejemplo
gcloud compute instances bulk create \
--name-pattern=test-bulk-# \
--region=us-central1 \
--count=10 \
--instance-selection-machine-types=c3-standard-8,n2-standard-8,c2-standard-8
REST
En la API de Compute Engine, realiza una solicitud POST al
método regionInstances.bulkInsert.
En el cuerpo de la solicitud, incluye instanceFlexibilityPolicy con una entrada instanceSelections que enumere los tipos de máquina.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"selection-1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
]
}
}
}
}
Reemplaza lo siguiente:
COUNT: Es la cantidad de VMs que se crearán.NAME_PATTERN: Es el patrón de nombres para las VMs.MACHINE_TYPE_1,MACHINE_TYPE_2: Son los tipos de máquinas que se usarán para las VMs.IMAGE_PROJECT: Es el proyecto que contiene la imagen.IMAGE: Es el nombre de la imagen o de la familia de imágenes que se usará.PROJECT_ID: Es el ID del proyecto.REGION: Es la región en la que se crearán las VMs.
Ejemplo
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
"count": 10,
"namePattern": "test-bulk-#",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-12"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"selection-1": {
"machineTypes": [
"c3-standard-8",
"n2-standard-8",
"c2-standard-8"
]
}
}
}
}
Crea VMs con varios tipos de máquinas clasificadas según la preferencia
Si deseas que Compute Engine elija los tipos de máquinas en un orden específico, puedes configurar varias selecciones de instancias. Cada selección de instancias incluye una lista de tipos de máquinas y una clasificación, que es un número entero que define la preferencia por los tipos de máquinas. Un rango más bajo indica una mayor preferencia. Compute Engine intenta crear VMs con tipos de máquinas que tengan una preferencia más alta (clasificación más baja). Si esos tipos de máquinas no están disponibles, Compute Engine usa tipos de máquinas con una preferencia más baja (clasificación más alta).
En los siguientes ejemplos, se muestra cómo especificar varias selecciones de instancias con clasificaciones.
gcloud
Para crear VMs de forma masiva con varias selecciones de instancias, usa el comando gcloud compute instances bulk create y especifica la marca --instance-selection varias veces.
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--instance-selection "name=INSTANCE_SELECTION_1,rank=0,machine-type=MACHINE_TYPE_1,machine-type=MACHINE_TYPE_2" \
--instance-selection "name=INSTANCE_SELECTION_2,rank=1,machine-type=MACHINE_TYPE_3,machine-type=MACHINE_TYPE_4"
Reemplaza lo siguiente:
COUNT: Es la cantidad de VMs que se crearán.NAME_PATTERN: Es el patrón de nombres para las VMs.INSTANCE_SELECTION_1: Es el nombre de la primera selección de instancia.INSTANCE_SELECTION_2: Es el nombre de la segunda selección de instancias.MACHINE_TYPE_1,MACHINE_TYPE_2: los tipos de máquina para la primera selección de instanciasMACHINE_TYPE_3,MACHINE_TYPE_4: Los tipos de máquina para la segunda selección de instanciasREGION: Es la región en la que se crearán las VMs.
Ejemplo
gcloud compute instances bulk create \
--name-pattern=test-bulk-# \
--region=us-central1 \
--count=10 \
--instance-selection "name=most-preferred,rank=0,machine-type=c3-standard-16,machine-type=n2-standard-16,machine-type=c2-standard-16" \
--instance-selection "name=least-preferred,rank=1,machine-type=c3-standard-8,machine-type=n2-standard-8,machine-type=c2-standard-8"
REST
En la API de Compute Engine, realiza una solicitud POST al
método regionInstances.bulkInsert.
En el cuerpo de la solicitud, incluye instanceFlexibilityPolicy y especifica
varias entradas en instanceSelections, cada una con una lista de tipos de máquinas
y un rank.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"INSTANCE_SELECTION_1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
],
"rank": 1
},
"INSTANCE_SELECTION_2": {
"machineTypes": [
"MACHINE_TYPE_3",
"MACHINE_TYPE_4"
],
"rank": 2
}
}
}
}
Reemplaza lo siguiente:
COUNT: la cantidad de VMs que se crearánNAME_PATTERN: Es el patrón de nombres para las VMs.INSTANCE_SELECTION_1: Es el nombre de la primera selección de instancias.INSTANCE_SELECTION_2: Es el nombre de la segunda selección de instancias.MACHINE_TYPE_1,MACHINE_TYPE_2: los tipos de máquina para la primera selección de instanciasMACHINE_TYPE_3,MACHINE_TYPE_4: los tipos de máquina para la segunda selección de instanciasIMAGE_PROJECT: Es el proyecto que contiene la imagen.IMAGE: Es el nombre de la imagen o de la familia de imágenes que se usará.PROJECT_ID: Es el ID del proyecto.REGION: Es la región en la que se crearán las VMs.
Ejemplo
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
"count": 10,
"namePattern": "test-bulk-#",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-12"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"most-preferred": {
"machineTypes": [
"c3-standard-16",
"c2-standard-16"
],
"rank": 1
},
"least-preferred": {
"machineTypes": [
"n2-standard-16",
"c3-standard-8",
"n2-standard-8",
"c2-standard-8"
],
"rank": 2
}
}
}
}
Crea VMs con varios tipos de máquinas, una plataforma de CPU mínima y anulaciones de disco
Además de especificar los tipos y los rangos de máquinas, puedes anular la plataforma de CPU mínima y anular o agregar definiciones de disco en instanceProperties para cada selección de instancia. Por ejemplo, si instanceProperties especifica un Persistent Disk y seleccionas una serie de máquinas N4, debes anular el disco de arranque con un tipo de Google Cloud Hyperdisk compatible.
Para obtener más información sobre los tipos de discos compatibles y cómo Compute Engine aplica las anulaciones, consulta los siguientes recursos:
- Compatibilidad de series de máquinas con discos persistentes
- Compatibilidad de series de máquinas con Hyperdisk
- Anulaciones de propiedades de instancias en selecciones de instancias
Para crear VMs de forma masiva con varios tipos de máquinas, una plataforma de CPU mínima y anulaciones de disco, selecciona una de las siguientes opciones:
gcloud
Para crear VMs de forma masiva con varios tipos de máquinas, una plataforma de CPU mínima y anulaciones de disco, usa el comando gcloud compute instances bulk create con la marca --instance-flexibility-policy. Para anular el disco de arranque predeterminado de instanceProperties, incluye también la marca --boot-disk-device-name y especifica el mismo deviceName en la selección de instancias:
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--boot-disk-device-name=BOOT_DISK_DEVICE_NAME \
--instance-flexibility-policy='{"instanceSelections":
{"INSTANCE_SELECTION_1":{"rank":RANK_1,"machineTypes":["MACHINE_TYPE_1","MACHINE_TYPE_2"],"minCpuPlatform":"MIN_CPU_PLATFORM_1","disks":[{"deviceName":"BOOT_DISK_DEVICE_NAME_1","boot":true,"initializeParams":{"diskType":"DISK_TYPE_1","diskSizeGb":DISK_SIZE_1,"sourceImage":"projects/IMAGE_PROJECT_1/global/images/IMAGE_1"}}]},
"INSTANCE_SELECTION_2":{"rank":RANK_2,"machineTypes":["MACHINE_TYPE_3"],"minCpuPlatform":"MIN_CPU_PLATFORM_2","disks":[{"deviceName":"BOOT_DISK_DEVICE_NAME_2","boot":true,"initializeParams":{"diskType":"DISK_TYPE_2","diskSizeGb":DISK_SIZE_2,"sourceImage":"projects/IMAGE_PROJECT_2/global/images/IMAGE_2"}}]}}}'
Como alternativa, para configurar la política de flexibilidad de instancias con un archivo YAML
o JSON, usa la
marca --flags-file en lugar de la
marca --instance-flexibility-policy:
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--boot-disk-device-name=BOOT_DISK_DEVICE_NAME \
--flags-file=FILE_NAME.yaml
Reemplaza lo siguiente:
COUNT: Es la cantidad de VMs que se crearán.NAME_PATTERN: Es el patrón de nombres para las VMs.REGION: Es la región en la que se crearán las VMs.BOOT_DISK_DEVICE_NAME: Es el nombre del dispositivo para el disco de arranque predeterminado eninstanceProperties.INSTANCE_SELECTION_1,INSTANCE_SELECTION_2: Son los nombres de las selecciones de instancias.RANK_1,RANK_2: Son números opcionales que representan tu orden de preferencia para cada selección de instancia. Un valor más bajo indica una preferencia más alta.MACHINE_TYPE_1,MACHINE_TYPE_2: Los tipos de máquina para la primera selección de instanciasMACHINE_TYPE_3: el tipo de máquina para la segunda selección de instanciaMIN_CPU_PLATFORM_1,MIN_CPU_PLATFORM_2: Son las plataformas de CPU mínimas opcionales para las VMs en cada selección de instancias.BOOT_DISK_DEVICE_NAME_1,BOOT_DISK_DEVICE_NAME_2: Son los nombres de los dispositivos para los discos de arranque en cada selección de instancias. Para anular el disco de arranque predeterminado, especifica el mismo nombre queBOOT_DISK_DEVICE_NAME.DISK_TYPE_1,DISK_TYPE_2: Son los tipos de disco para las anulaciones de disco, comopd-ssdohyperdisk-balanced.DISK_SIZE_1,DISK_SIZE_2: Son los tamaños de los discos para las anulaciones de discos.IMAGE_PROJECT_1yIMAGE_PROJECT_2: Son los proyectos que contienen las imágenes para las anulaciones de disco.IMAGE_1yIMAGE_2: Son los nombres de las imágenes o las familias de imágenes para las anulaciones de disco.FILE_NAME.yaml: Es el nombre del archivo YAML o JSON que contiene la configuración de--instance-flexibility-policy.
Ejemplo
En el siguiente ejemplo, se crean 10 VMs con dos selecciones de instancias que especifican una plataforma de CPU mínima, anulan el disco de arranque predeterminado y adjuntan discos adicionales:
gcloud compute instances bulk create \
--name-pattern=test-bulk-# \
--region=us-central1 \
--count=10 \
--boot-disk-device-name=boot-disk \
--instance-flexibility-policy='{"instanceSelections":
{"selection-1":{"machineTypes":["n2-standard-8","c2-standard-8"],"minCpuPlatform":"Intel Cascade Lake","disks":[{"type":"PERSISTENT","deviceName":"boot-disk","boot":true,"initializeParams":{"diskType":"pd-ssd","diskSizeGb":50,"sourceImage":"projects/debian-cloud/global/images/family/debian-12"}},{"type":"SCRATCH","initializeParams":{"diskType":"local-ssd"}}]},
"selection-2":{"machineTypes":["c4a-standard-8"],"disks":[{"type":"PERSISTENT","deviceName":"boot-disk","boot":true,"initializeParams":{"diskType":"hyperdisk-balanced","diskSizeGb":50,"sourceImage":"projects/debian-cloud/global/images/family/debian-12-arm64"}},{"type":"PERSISTENT","deviceName":"data-disk","initializeParams":{"diskType":"hyperdisk-balanced","diskSizeGb":128}}]}}}'
Como alternativa, si usas la marca --flags-file, puedes especificar la misma política de flexibilidad de instancias en un archivo YAML:
--instance-flexibility-policy:
instanceSelections:
selection-1:
machineTypes:
- n2-standard-8
- c2-standard-8
minCpuPlatform: Intel Cascade Lake
disks:
- type: PERSISTENT
deviceName: boot-disk
boot: true
initializeParams:
diskType: pd-ssd
diskSizeGb: 50
sourceImage: projects/debian-cloud/global/images/family/debian-12
- type: SCRATCH
initializeParams:
diskType: local-ssd
selection-2:
machineTypes:
- c4a-standard-8
disks:
- type: PERSISTENT
deviceName: boot-disk
boot: true
initializeParams:
diskType: hyperdisk-balanced
diskSizeGb: 50
sourceImage: projects/debian-cloud/global/images/family/debian-12-arm64
- type: PERSISTENT
deviceName: data-disk
initializeParams:
diskType: hyperdisk-balanced
diskSizeGb: 128
REST
En la API de Compute Engine, realiza una solicitud POST al método regionInstances.bulkInsert.
En cada entrada instanceSelections de instanceFlexibilityPolicy, incluye el campo minCpuPlatform para anular instanceProperties.minCpuPlatform y el campo disks para anular o agregar a instanceProperties.disks:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"deviceName": "boot-disk",
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"INSTANCE_SELECTION_1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
],
"minCpuPlatform": "MIN_CPU_PLATFORM_1",
"disks": [
{
"type": "PERSISTENT",
"deviceName": "boot-disk",
"initializeParams": {
"diskType": "pd-ssd",
"diskSizeGb": 50,
"sourceImage": "projects/IMAGE_PROJECT_1/global/images/IMAGE_1"
},
"boot": true
},
{
"type": "SCRATCH",
"initializeParams": {
"diskType": "local-ssd"
}
}
]
},
"INSTANCE_SELECTION_2": {
"machineTypes": [
"MACHINE_TYPE_3"
],
"minCpuPlatform": "MIN_CPU_PLATFORM_2",
"disks": [
{
"type": "PERSISTENT",
"deviceName": "boot-disk",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 50,
"sourceImage": "projects/IMAGE_PROJECT_2/global/images/IMAGE_2"
},
"boot": true
},
{
"type": "PERSISTENT",
"deviceName": "data-disk",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 128,
"sourceImage": "projects/IMAGE_PROJECT_3/global/images/IMAGE_3"
}
}
]
}
}
}
}
Reemplaza lo siguiente:
COUNT: Es la cantidad de VMs que se crearán.NAME_PATTERN: el patrón de nombres para las VMsINSTANCE_SELECTION_1: Es el nombre de la primera selección de instancias.INSTANCE_SELECTION_2: Es el nombre de la segunda selección de instancias.MACHINE_TYPE_1,MACHINE_TYPE_2: Los tipos de máquina para la primera selección de instanciasMACHINE_TYPE_3: el tipo de máquina para la segunda selección de instanciaMIN_CPU_PLATFORM_1,MIN_CPU_PLATFORM_2: Plataformas de CPU mínimas opcionales para las VMs en cada selección de instanciasIMAGE_PROJECT: Es el proyecto que contiene la imagen de arranque predeterminada eninstanceProperties.IMAGE: Es el nombre de la imagen de arranque o la familia de imágenes predeterminada eninstanceProperties.IMAGE_PROJECT_1,IMAGE_PROJECT_2,IMAGE_PROJECT_3: Son los proyectos que contienen las imágenes para las anulaciones de disco.IMAGE_1,IMAGE_2,IMAGE_3: Son los nombres de las imágenes para las anulaciones del disco.PROJECT_ID: Es el ID del proyecto.REGION: Es la región en la que se crearán las VMs.
Ejemplo
En el siguiente ejemplo, se crean 10 VMs con dos selecciones de instancias que especifican una plataforma de CPU mínima, anulan el disco de arranque predeterminado y conectan discos adicionales:
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
"count": 10,
"namePattern": "test-bulk-#",
"instanceProperties": {
"disks": [
{
"boot": true,
"deviceName": "boot-disk",
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"selection-1": {
"machineTypes": [
"n2-standard-8",
"c2-standard-8"
],
"minCpuPlatform": "Intel Cascade Lake",
"disks": [
{
"type": "PERSISTENT",
"deviceName": "boot-disk",
"initializeParams": {
"diskType": "pd-ssd",
"diskSizeGb": 50,
"sourceImage": "projects/debian-cloud/global/images/family/debian-12"
},
"boot": true
},
{
"type": "SCRATCH",
"initializeParams": {
"diskType": "local-ssd"
}
}
]
},
"selection-2": {
"machineTypes": [
"c4a-standard-8"
],
"disks": [
{
"type": "PERSISTENT",
"deviceName": "boot-disk",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 50,
"sourceImage": "projects/debian-cloud/global/images/family/debian-12-arm64"
},
"boot": true
},
{
"type": "PERSISTENT",
"deviceName": "data-disk",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 128
}
}
]
}
}
}
}