Una secuencia de comandos de inicio es un archivo que realiza tareas durante el proceso de inicio de una instancia de máquina virtual (VM). Las secuencias de comandos de inicio se pueden aplicar a todas las VMs de un proyecto o a una sola VM. Las secuencias de comandos de inicio especificadas por los metadatos a nivel de VM anulan las secuencias de comandos de inicio especificadas por los metadatos a nivel de proyecto. Además, las secuencias de comandos de inicio solo se ejecutan cuando hay una red disponible. En este documento se describe cómo usar secuencias de comandos de inicio en instancias de máquina virtual Linux. Para obtener información sobre cómo añadir una secuencia de comandos de inicio a nivel de proyecto, consulta gcloud compute project-info add-metadata
.
En el caso de las secuencias de comandos de inicio de Linux, puedes usar un archivo bash o que no sea bash. Para usar un archivo que no sea de Bash, designa el intérprete añadiendo un #!
en la parte superior del archivo. Por ejemplo, para usar una secuencia de comandos de inicio de Python 3, añade #! /usr/bin/python3
en la parte superior del archivo.
Si especificas una secuencia de comandos de inicio mediante uno de los procedimientos de este documento, Compute Engine hará lo siguiente:
Copia la secuencia de comandos de inicio en la VM.
Define los permisos de ejecución en la secuencia de comandos de inicio.
Ejecuta la secuencia de comandos de inicio como usuario
root
cuando se inicia la VM.
Para obtener información sobre las distintas tareas relacionadas con las secuencias de comandos de inicio y cuándo realizar cada una, consulta la descripción general.
Antes de empezar
- Consulta la descripción general de las secuencias de comandos de inicio.
- Consulta información sobre el servidor de metadatos.
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
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
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Claves de metadatos para secuencias de comandos de inicio de Linux
Una secuencia de comandos de inicio se transfiere a una VM desde una ubicación especificada por una clave de metadatos. Una clave de metadatos especifica si la secuencia de comandos de inicio se almacena localmente, en Cloud Storage o se transfiere directamente a la VM. La clave de metadatos que utilices también puede depender del tamaño de la secuencia de comandos de inicio.
En la siguiente tabla se muestran las claves de metadatos que puedes usar en las secuencias de comandos de inicio de Linux y se indica qué clave debes usar en función de la ubicación de almacenamiento y el tamaño de la secuencia de comandos de inicio.
Clave de metadatos Usar para startup-script
Transferir una secuencia de comandos de inicio de Bash o de otro tipo que esté almacenada localmente o que se haya añadido directamente y que tenga un tamaño de hasta 256 KB startup-script-url
Se pasa una secuencia de comandos de inicio de Bash o de otro tipo que está almacenada en Cloud Storage y que tiene un tamaño superior a 256 KB. La cadena que introduzcas aquí se usará tal cual para ejecutar gcloud storage
. Si tustartup-script-url
contiene espacios, no los sustituyas por%20
ni añadas comillas dobles (""
) a la cadenastartup-script-url
.Orden de ejecución de las secuencias de comandos de inicio de Linux
Puedes usar varias secuencias de comandos de inicio. Las secuencias de comandos de inicio almacenadas localmente o añadidas directamente se ejecutan antes que las secuencias de comandos de inicio almacenadas en Cloud Storage. En la siguiente tabla se muestra, en función de la clave de metadatos, el orden de ejecución de las secuencias de comandos de inicio de Linux.
Clave de metadatos Orden de ejecución startup-script
Primero durante cada inicio después del inicio inicial startup-script-url
Segundo durante cada inicio después del inicio inicial Transferir directamente una secuencia de comandos de inicio de Linux
Puedes añadir el contenido de una secuencia de comandos de inicio directamente a una VM cuando la crees. En los siguientes procedimientos se muestra cómo crear una VM con una secuencia de comandos de inicio que instala Apache y crea una página web básica.
Consola
Transferir una secuencia de comandos de inicio de Linux directamente a una máquina virtual nueva
En la Google Cloud consola, ve a la página Crear una instancia.
Para usar un sistema operativo Linux, haz lo siguiente:
En el menú de navegación, haz clic en SO y almacenamiento.
Haz clic en Cambiar.
En el panel Disco de arranque que aparece, selecciona un sistema operativo Linux.
Para añadir directamente una secuencia de comandos de inicio de Linux, haz lo siguiente:
En el menú de navegación, haz clic en Opciones avanzadas.
En la sección Automatización, introduce lo siguiente en el campo Secuencia de comandos de inicio:
#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script added directly.</p></body></html> EOF
Opcional: Especifica otras opciones de configuración. Para obtener más información, consulta Opciones de configuración durante la creación de instancias.
Para crear e iniciar la instancia, haz clic en Crear.
Transferir una secuencia de comandos de inicio de Linux directamente a una VM que ya existe
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en el nombre de la instancia.
Haz clic en Editar.
En Automatización, añade el contenido de tu secuencia de comandos de inicio.
Verificar la secuencia de comandos de inicio
Una vez que se haya iniciado la instancia, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Puede que tengas que esperar aproximadamente 1 minuto para que termine la secuencia de comandos de inicio de muestra.
gcloud
Transferir una secuencia de comandos de inicio de Linux directamente a una máquina virtual nueva
Transfiere el contenido de una secuencia de comandos de inicio directamente a una máquina virtual al crearla mediante el siguiente
gcloud compute instances create
comando.gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --metadata=startup-script='#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script added directly.</p></body></html> EOF'
Sustituye VM_NAME por el nombre de la VM.
Transferir una secuencia de comandos de inicio de Linux directamente a una VM que ya existe
Añade la secuencia de comandos de inicio directamente a una VM que ya tengas con el siguiente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata=startup-script='#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script added directly.</p></body></html> EOF'
Haz los cambios siguientes:
VM_NAME: el nombre de la VM
ZONE: la zona de la VM
Verificar la secuencia de comandos de inicio
Una vez que se haya iniciado la VM, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Puede que tengas que esperar aproximadamente 1 minuto a que termine la secuencia de comandos de inicio de muestra.
REST
Transferir una secuencia de comandos de inicio de Linux directamente a una máquina virtual nueva
Transfiere el contenido de una secuencia de comandos de inicio directamente a una VM al crearla mediante el siguiente
instances.insert
método.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "networkInterfaces": [ { "accessConfigs": [ { "type": "ONE_TO_ONE_NAT" } ] } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt update\napt -y install apache2\ncat <<EOF > /var/www/html/index.html\n<html><body><p>Linux startup script added directly.</p></body></html>\nEOF" } ] }, ... }
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto en el que se encuentra la VM.
ZONE: la zona en la que se creará la VM.
Transferir una secuencia de comandos de inicio de Linux directamente a una VM que ya existe
Obtén el valor de
metadata.fingerprint
de la VM mediante el métodoinstances.get
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto en el que se encuentra la VM.
ZONE: la zona de la VM.
VM_NAME: el nombre de la VM.
Transfiere la secuencia de comandos de inicio mediante el valor
fingerprint
, junto con la clave y el valor de metadatos de la secuencia de comandos de inicio, en una llamada al métodoinstances.setMetadata
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt update\napt -y install apache2\ncat <<EOF > /var/www/html/index.html\n<html><body><p>Linux startup script added directly.</p></body></html>\nEOF" } ], ... }
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto en el que se encuentra la VM.
ZONE: la zona de la VM.
VM_NAME: el nombre de la VM.
FINGERPRINT: el valor
metadata.fingerprint
obtenido mediante el métodoinstances.get
.
Verificar la secuencia de comandos de inicio
Una vez que se haya iniciado la VM, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Puede que tengas que esperar aproximadamente 1 minuto a que termine la secuencia de comandos de inicio de muestra.
Transferir una secuencia de comandos de inicio de Linux desde un archivo local
Puedes almacenar una secuencia de comandos de inicio en un archivo local de tu estación de trabajo y pasar el archivo local como metadatos a una VM cuando la crees. No puedes usar archivos almacenados en máquinas virtuales como secuencias de comandos de inicio.
Antes de transferir una secuencia de comandos de inicio de Linux de un archivo local a una VM, haz lo siguiente:
Crea un archivo local para almacenar la secuencia de comandos de inicio.
Tenga en cuenta la ruta relativa de la interfaz de línea de comandos de gcloud a la secuencia de comandos de inicio.
Añade la siguiente secuencia de comandos de inicio al archivo:
#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script from a local file.</p></body></html> EOF
gcloud
Transferir una secuencia de comandos de inicio de Linux de un archivo local a una máquina virtual nueva
Crea una VM y transfiere el contenido de un archivo local para usarlo como script de inicio con el comando
gcloud compute instances create
con la marca--metadata-from-file
.gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --metadata-from-file=startup-script=FILE_PATH
Haz los cambios siguientes:
VM_NAME: el nombre de la VM
FILE_PATH: la ruta relativa al archivo de secuencia de comandos de inicio
Transferir una secuencia de comandos de inicio de Linux de un archivo local a una VM
Para transferir una secuencia de comandos de inicio a una VM que ya tengas desde un archivo local, usa el siguiente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata-from-file startup-script=FILE_PATH
Haz los cambios siguientes:
VM_NAME: el nombre de la VM
ZONE: la zona de la VM
FILE_PATH: la ruta relativa al archivo de secuencia de comandos de inicio
Verificar la secuencia de comandos de inicio
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Es posible que tengas que esperar aproximadamente 1 minuto a que se complete la secuencia de comandos de inicio de la muestra.
Transferir una secuencia de comandos de inicio de Linux desde Cloud Storage
Puedes almacenar una secuencia de comandos de inicio en Cloud Storage y pasarla a una VM cuando la crees. Después de añadir una secuencia de comandos de inicio a Cloud Storage, tendrás una URL que podrás usar para hacer referencia a la secuencia de comandos de inicio al crear una máquina virtual.
Antes de añadir una secuencia de comandos de inicio desde un segmento de Cloud Storage, haz lo siguiente:
Crea un archivo para almacenar la secuencia de comandos de inicio. En este ejemplo se usa un archivo bash (
.sh
).Añade lo siguiente al archivo bash, que instala Apache y crea una página web sencilla:
#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script from Cloud Storage.</p></body></html> EOF
Implicaciones para la seguridad
De forma predeterminada, los propietarios y editores de proyectos pueden acceder a los archivos de Cloud Storage del mismo proyecto, a menos que haya controles de acceso explícitos que lo impidan.
Si el segmento u objeto de Cloud Storage es menos seguro que los metadatos, existe el riesgo de que se produzca una elevación de privilegios si se modifica la secuencia de comandos de inicio y se reinicia la VM. Esto se debe a que, después de reiniciar la VM, la secuencia de comandos de inicio se ejecuta como
root
y, a continuación, puede usar los permisos de la cuenta de servicio vinculada para acceder a otros recursos.
Limitaciones
Consola
Transferir un script de inicio almacenado en Cloud Storage a una máquina virtual nueva
En la Google Cloud consola, ve a la página Crear una instancia.
Para usar un sistema operativo Linux, haz lo siguiente:
En el menú de navegación, haz clic en SO y almacenamiento.
En la sección Sistema operativo y almacenamiento, haz clic en Cambiar. A continuación, selecciona un sistema operativo Linux.
Para permitir que la instancia acceda al segmento de Cloud Storage que contiene la secuencia de comandos de inicio de Linux, haz lo siguiente:
En el menú de navegación, haz clic en Seguridad.
En la lista Cuenta de servicio, selecciona una cuenta de servicio que tenga el rol de gestión de identidades y accesos Visor de objetos de Storage (
roles/storage.objectViewer
) en el segmento de Cloud Storage.
Para añadir una secuencia de comandos de inicio de Linux especificando un archivo en Cloud Storage, haz lo siguiente:
En el menú de navegación, haz clic en Opciones avanzadas.
En la sección Metadatos, haz clic en
Añadir elemento. Aparecerán los campos Clave y Valor.En el campo Clave, introduce
startup-script-url
.En el campo Value (Valor), introduce la ubicación de Cloud Storage del archivo de secuencia de comandos de inicio con uno de los siguientes formatos:
- URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
URI de gcloud storage:
gs://BUCKET/FILE
Haz los cambios siguientes:
BUCKET: el nombre del segmento que contiene el archivo de secuencia de comandos de inicio
FILE: el nombre del archivo de secuencia de comandos de inicio
- URL autenticada:
Opcional: Especifica otras opciones de configuración. Para obtener más información, consulta Opciones de configuración durante la creación de instancias.
Para crear e iniciar la instancia, haz clic en Crear.
Transferir una secuencia de comandos de inicio almacenada en Cloud Storage a una VM que ya existe
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en el nombre de la instancia.
Haz clic en Editar.
En Metadatos, añade los siguientes valores:
Clave:
startup-script-url
Valor: la ubicación en Cloud Storage del archivo de secuencia de comandos de inicio con uno de los siguientes formatos:
- URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
- URI de gcloud storage:
gs://BUCKET/FILE
- URL autenticada:
Verificar la secuencia de comandos de inicio
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Es posible que tengas que esperar aproximadamente 1 minuto a que finalice la secuencia de comandos de inicio de la muestra.
gcloud
Transferir un script de inicio almacenado en Cloud Storage a una máquina virtual nueva
Para pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una VM al crearla, usa el siguiente
gcloud compute instances create
comando. Para el valor de la marca--scope
, usastorage-ro
para que la VM pueda acceder a Cloud Storage.gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --scopes=storage-ro \ --metadata=startup-script-url=CLOUD_STORAGE_URL
Haz los cambios siguientes:
VM_NAME: el nombre de la VM.
CLOUD_STORAGE_URL: el valor de los metadatos. Define la ubicación del archivo de la secuencia de comandos de inicio en Cloud Storage con uno de los siguientes formatos:
- URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
- URI de gcloud storage:
gs://BUCKET/FILE
- URL autenticada:
Transferir una secuencia de comandos de inicio almacenada en Cloud Storage a una VM que ya existe
Para pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una máquina virtual que ya tengas, usa el siguiente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata startup-script-url=CLOUD_STORAGE_URL
Haz los cambios siguientes:
VM_NAME: el nombre de la VM.
ZONE: la zona de la VM.
CLOUD_STORAGE_URL: el valor de los metadatos. Define la ubicación del archivo de la secuencia de comandos de inicio en Cloud Storage con uno de los siguientes formatos:
- URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
- URI de gcloud storage:
gs://BUCKET/FILE
- URL autenticada:
Verificar la secuencia de comandos de inicio
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Es posible que tengas que esperar aproximadamente 1 minuto a que finalice la secuencia de comandos de inicio de la muestra.
REST
Transferir un script de inicio almacenado en Cloud Storage a una máquina virtual nueva
Para pasar una secuencia de comandos de inicio almacenada en Cloud Storage a una máquina virtual al crearla, usa el siguiente
instances.insert
método. En el camposcopes
, añadehttps://www.googleapis.com/auth/devstorage.read_only
para que la VM pueda acceder a Cloud Storage.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "networkInterfaces": [ { "accessConfigs": [ { "type": "ONE_TO_ONE_NAT" } ] } ], "serviceAccounts": [ { "email": "default", "scopes": [ "https://www.googleapis.com/auth/devstorage.read_only" ] } ], "metadata": { "items": [ { "key": "startup-script-url", "value": "CLOUD_STORAGE_URL" } ] }, ... }
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto.
ZONE: la zona en la que se creará la VM.
CLOUD_STORAGE_URL: el valor de los metadatos. Define la ubicación del archivo de la secuencia de comandos de inicio en Cloud Storage con uno de los siguientes formatos:
- URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
- URI de gcloud storage:
gs://BUCKET/FILE
- URL autenticada:
Transferir una secuencia de comandos de inicio almacenada en Cloud Storage a una VM que ya existe
Obtén el valor de
metadata.fingerprint
de la VM mediante el métodoinstances.get
:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto
ZONE: la zona de la VM
VM_NAME: el nombre de la VM
Transfiere la secuencia de comandos de inicio mediante el valor
fingerprint
, junto con la clave y el valor de metadatos de la secuencia de comandos de inicio, en una llamada al métodoinstances.setMetadata
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "startup-script-url", "value": "CLOUD_STORAGE_URL" } ], ... }
Haz los cambios siguientes:
PROJECT_ID: el ID del proyecto.
ZONE: la zona de la VM.
VM_NAME: el nombre de la VM.
FINGERPRINT: el valor
metadata.fingerprint
obtenido mediante el métodoinstances.get
.CLOUD_STORAGE_URL: el valor de los metadatos. Define la ubicación del archivo de la secuencia de comandos de inicio en Cloud Storage con uno de los siguientes formatos:
- URL autenticada:
https://storage.googleapis.com/BUCKET/FILE
- URI de gcloud storage:
gs://BUCKET/FILE
- URL autenticada:
Verificar la secuencia de comandos de inicio
Consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio ha creado el sitio web. Es posible que tengas que esperar aproximadamente 1 minuto a que finalice la secuencia de comandos de inicio de la muestra.
Acceder a los metadatos desde una secuencia de comandos de inicio de Linux
En una secuencia de comandos de inicio, puedes acceder a los valores de los metadatos. Por ejemplo, puedes usar el mismo script para varias máquinas virtuales y parametrizar cada script individualmente transfiriendo diferentes valores de metadatos a cada máquina virtual.
Para acceder a un valor de metadatos personalizado desde una secuencia de comandos de inicio, haz lo siguiente:
Crea una secuencia de comandos de inicio que consulte el valor de una clave de metadatos. Por ejemplo, la secuencia de comandos de inicio del siguiente archivo bash (
.sh
) consulta el valor de la clave de metadatosfoo
.#! /bin/bash METADATA_VALUE=$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/foo -H "Metadata-Flavor: Google") apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Accessing metadata value of foo: $METADATA_VALUE</p></body></html> EOF
Define el valor de la clave de metadatos
foo
al crear una VM con el siguientegcloud compute instances create
comando. En este ejemplo, la secuencia de comandos de inicio se transfiere a la VM desde un archivo local.gcloud
gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --metadata-from-file=startup-script=FILE_PATH \ --metadata=foo=bar
Haz los cambios siguientes:
VM_NAME: el nombre de la VM
FILE_PATH: la ruta relativa al archivo de secuencia de comandos de inicio
Para obtener más información sobre cómo especificar un par clave-valor de metadatos, consulta Configurar metadatos personalizados.
En tu estación de trabajo local, consulta la IP externa en un navegador web para verificar que la secuencia de comandos de inicio muestra el valor de
foo
. Puede que tengas que esperar aproximadamente 1 minuto a que termine la secuencia de comandos de inicio de muestra.
Volver a ejecutar una secuencia de comandos de inicio de Linux
Para volver a ejecutar una secuencia de comandos de inicio, haz lo siguiente:
Ejecuta el siguiente comando:
sudo google_metadata_script_runner startup
Ver la salida de una secuencia de comandos de inicio de Linux
Para ver la salida de una secuencia de comandos de inicio de Linux, puedes hacer lo siguiente:
Conéctate a la instancia y ejecuta el siguiente comando:
sudo journalctl -u google-startup-scripts.service
Ver la salida a través del puerto serie 1 en la consola Google Cloud y comprobar si hay eventos de
google_metadata_script_runner
.
Siguientes pasos
Consulta cómo usar secuencias de comandos de inicio en máquinas virtuales de Windows.
Consulta cómo solucionar problemas de inicio de máquinas virtuales.
Consulta cómo añadir una secuencia de comandos de apagado.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-12 (UTC).
-