Configuración de un entorno de desarrollo de Python local para Azure
Al crear aplicaciones en la nube, los desarrolladores habitualmente prefieren probar el código en sus estaciones de trabajo locales antes de implementar el código en un entorno de nube como Azure. El desarrollo local proporciona las siguientes ventajas: es más rápido y hay una mayor variedad de herramientas de depuración.
En este artículo se proporcionan instrucciones de configuración para crear y validar un entorno de desarrollo local adecuado para Python en Azure:
- Instale los componentes necesarios, a saber, una cuenta de Azure, Python y la CLI de Azure.
- Configure la autenticación para cuando use las bibliotecas de Azure para aprovisionar, administrar y acceder a los recursos de Azure.
- Revise el proceso de uso de entornos virtuales de Python para cada proyecto.
Una vez que haya configurado la estación de trabajo, solo necesitará agregar una configuración mínima para completar varios inicios rápidos y tutoriales que se encuentran en otro lugar de este centro para desarrolladores y en la documentación de Azure.
Esta configuración para el desarrollo local es una cuestión independiente del aprovisionamiento de los recursos que conforman el entorno en la nube de la aplicación en Azure. En el proceso de desarrollo, el código se ejecuta en el entorno de desarrollo local que puede acceder a esos recursos en la nube, pero el código aún no se ha implementado en un servicio de hospedaje adecuado en la nube. Este paso de implementación se incluye más adelante, como se describe en el artículo Flujo de desarrollo de Azure.
Instalar componentes
Componentes necesarios
| Nombre/instalador | Descripción |
|---|---|
| Cuenta de Azure con una suscripción activa | Las cuentas y suscripciones son gratuitas e incluyen muchos servicios de uso gratuito. |
| Python 2.7 o 3.6 y superiores | El entorno de ejecución del lenguaje Python, que puede estar en un entorno de Conda. Es recomendable usar la versión más reciente de Python 3.x, salvo que tenga requisitos de versión específicos. |
| Interfaz de la línea de comandos (CLI) de Azure | Proporciona un conjunto completo de comandos de la CLI para aprovisionar y administrar recursos de Azure. Los desarrolladores de Python normalmente usan la CLI de Azure junto con scripts de Python personalizados que usan las bibliotecas de administración de Azure. |
Notas:
- Instale los paquetes de biblioteca individuales de Azure proyecto a proyecto en función de sus necesidades. Se recomienda usar entornos virtuales de Python para cada proyecto. No hay ningún instalador del "SDK" independiente para Python.
- Aunque Azure PowerShell suele ser equivalente a la CLI de Azure, cuando se trabaje con Python es aconsejable usar la CLI de Azure.
Componentes recomendados
| Nombre/instalador | Descripción |
|---|---|
| Visual Studio Code | Aunque puede trabajar con cualquier editor o entorno de desarrollo integrado adecuados, el entorno de desarrollo integrado ligero gratuito de Microsoft es muy popular entre los desarrolladores de Python. Para obtener una introducción al mismo, consulte Python en VS Code. |
| Extensión de Python para VS Code | Agrega compatibilidad de Python con VS Code. |
| Extensión de Azure para VS Code | Agrega compatibilidad a varios servicios de Azure con VS Code. También se puede instalar compatibilidad con servicios específicos de forma individual. |
| git | Herramientas de línea de comandos para el control de código fuente. Si lo prefiere, puede usar otras herramientas de control de código fuente. |
Componentes opcionales
| Nombre/instalador | Descripción |
|---|---|
| Extensión de Docker para VS Code | Agrega compatibilidad a Docker con VS Code, lo que resulta útil si trabaja con los contenedores con regularidad. |
Comprobación de componentes
- Abra un terminal o un símbolo del sistema.
- Compruebe la versión de Python mediante la ejecución del comando
python --version. - Compruebe la versión de la CLI de Azure mediante la ejecución de
az --version. - Compruebe la instalación de VS Code:
- Ejecute
code .para abrir VS Code en la carpeta actual. - En VS Code, seleccione el comando Ver extensiones para abrir la vista de extensiones y, a continuación, compruebe que ve "Python" y "Cuenta de Azure" en la lista (entre otras extensiones de "Azure" y "Docker" si también instaló esa extensión).
- Ejecute
Inicio de sesión en Azure desde la CLI
En un terminal o en un símbolo del sistema, inicie sesión en su suscripción de Azure:
az login
az es el comando raíz de la CLI de Azure. Lo que sigue a az es uno o varios comandos específicos, como login. Consulte la referencia del comando az login.
La CLI de Azure normalmente mantiene el inicio de sesión entre sesiones, pero es recomendable ejecutar az login cada vez que se abre un terminal nuevo o un símbolo del sistema.
Configurar la autenticación
Como se describe en Autenticación de aplicaciones, cada desarrollador necesita una entidad de servicio para usar la identidad de la aplicación al probar el código de la aplicación localmente.
En las siguientes secciones se describe cómo crear una entidad de servicio y las variables de entorno que proporcionan las propiedades de la entidad de servicio a las bibliotecas de Azure.
Cada uno de los desarrolladores de su organización deben realizar estos pasos individualmente.
Creación de una entidad de servicio y las variables de entorno para el desarrollo
Abra un terminal o un símbolo del sistema en el que haya iniciado sesión en la CLI de Azure (
az login).Cree la entidad de servicio:
az ad sp create-for-rbac --name localtest-sp-rbacPara más información sobre el comando y sus argumentos, consulte Qué hace el comando create-for-rbac.
Si está en una organización, es posible que no tenga permiso en la suscripción para ejecutar este comando. En ese caso, póngase en contacto con los propietarios de la suscripción para que creen la entidad de servicio.
Use los comandos siguientes para crear las variables de entorno necesarias para las bibliotecas de Azure. (El objeto
DefaultAzureCredentialde la biblioteca azure-identity busca estas variables).set AZURE_SUBSCRIPTION_ID="aa11bb33-cc77-dd88-ee99-0918273645aa" set AZURE_TENANT_ID=00112233-7777-8888-9999-aabbccddeeff set AZURE_CLIENT_ID=12345678-1111-2222-3333-1234567890ab set AZURE_CLIENT_SECRET=oUBB11zz~JJJJ_~yyyyyyVVumumumumb_bReemplace los valores que se muestran en estos comandos por los de su entidad de servicio específica.
Para recuperar el identificador de la suscripción, ejecute el comando
az account showy busque la propiedadiden la salida.Para mayor comodidad, cree un archivo de script de la línea de comandos (como setenv.sh en macOS/Linux o setenv.cmd en Windows) que contenga estos mismos comandos. A continuación, puede ejecutar el script para establecer las variables cada vez que abra un terminal o un símbolo del sistema para las pruebas locales. De nuevo, no agregue el archivo de script al control de código fuente de forma que solo permanezca dentro de su cuenta de usuario.
Proteja el identificador y el secreto de cliente (y todos los archivos que los almacenen) para que permanezcan siempre en una cuenta de usuario específica de una estación de trabajo. No guarde estas propiedades en el control de código fuente ni las comparta con otros desarrolladores. Si fuera necesario, puede eliminar la entidad de servicio y crear otra.
Para obtener una capa adicional de seguridad, puede crear una directiva para eliminar y volver a crear entidades de servicio de forma periódica, con lo que se invalidan los identificadores y secretos anteriores.
Además, lo ideal es que una entidad de servicio de desarrollo solo esté autorizada para recursos que no son de producción, o bien que se cree en una suscripción de Azure que se use solo con fines de desarrollo. La aplicación de producción usaría una suscripción y recursos de producción independientes que solo están autorizados para la aplicación en la nube implementada.
Para modificar o eliminar entidades de servicio más adelante, consulte el artículo sobre cómo administrar entidades de servicio.
Importante
Para el código de producción (en lugar de un desarrollo local), utilice identidades administradas siempre que sea posible en lugar de una entidad de servicio específica.
Qué hace el comando create-for-rbac
El comando az ad sp create-for-rbac crea una entidad de servicio para la "autenticación basada en roles" (RBAC). (Para más información sobre entidades de servicio, consulte Cómo autenticar y autorizar aplicaciones de Python en Azure).
adsignifica Azure Active Directory;spsignifica "entidad de servicio" ycreate-for-rbacsignifica "crear para el control de acceso basado en rol", la principal forma de autorización de Azure. Consulte la referencia del comando az ad sp create-for-rbac.El argumento
--namedebe ser único en la organización y normalmente usa el nombre del desarrollador que utiliza la entidad de servicio. Si se omite este argumento, la CLI de Azure utiliza un nombre genérico con el formatoazure-cli-<timestamp>. Si lo desea, puede cambiar el nombre de la entidad de servicio en Azure Portal.El
az ad sp create-for-rbaccomando no asigna ningún rol a la entidad de servicio. Esto supone un riesgo si la entidad de seguridad está en peligro, por lo que se recomienda asignar los roles exactos en el ámbito exacto que requiere la entidad de servicio. Consulte ¿Qué es el control de acceso basado en rol (RBAC) de Azure? y Pasos para agregar una asignación de roles. Los diferentes inicios rápidos y tutoriales también proporcionan información acerca de cómo autorizar a una entidad de servicio para los recursos específicos implicados.El comando genera una salida JSON similar a los valores siguientes. Los valores
appId,tenantypasswordserán todos distintos:{ "appId": "12345678-1111-2222-3333-1234567890ab", "displayName": "localtest-sp-rbac", "name": http://localtest-sp-rbac " ", "password": "abcdef00-4444-5555-6666-1234567890ab", "tenant": "00112233-7777-8888-9999-aabbccddeeff" }En esta salida,
tenantes el identificador de inquilino,appIdes el identificador de cliente ypasswordes el secreto de cliente.Advertencia
Proteja todas las credenciales incluidas en la salida de
az ad sp create-for-rbac, como la contraseña, el secreto de cliente o el certificado. No almacene las credenciales en el código ni en ningún archivo que se confirme en el control de código fuente.Importante
La salida de este comando es el único lugar en que se ve la contraseña de cliente. No se puede recuperar la contraseña más tarde. Sin embargo, si es necesario, se puede agregar una nueva contraseña sin invalidar la entidad de servicio ni las contraseñas existentes.
Uso de entornos virtuales de Python
En todos los proyectos se recomienda crear y activar un entorno virtual mediante los pasos siguientes:
Abra un terminal o un símbolo del sistema.
Cree una carpeta para el proyecto.
Cree el entorno virtual:
# py -3 uses the global python interpreter. You can also use python -m venv .venv. py -3 -m venv .venvEste comando ejecuta el módulo
venvde Python y crea un entorno virtual en una carpeta denominada.venv.Active el entorno virtual:
Un entorno virtual es una carpeta de un proyecto que aísla una copia de un intérprete de Python concreto. Una vez que se activa ese entorno (algo que Visual Studio Code hace automáticamente), al ejecutar pip install se instala una biblioteca únicamente en ese entorno. Al ejecutar el código de Python, este se ejecuta en el contexto exacto del entorno con versiones específicas de cada biblioteca. Y al ejecutar pip freeze, obtendrá la lista exacta de esas bibliotecas (En muchos de los ejemplos de esta documentación, se crea unrequirements.txt para las bibliotecas que necesita y, a continuación, se usa . Normalmente, se necesita un archivo de requisitos al implementar código en Azure).
Si no usa un entorno virtual, Python se ejecuta en su entorno global. Aunque el uso del entorno global es rápido y práctico, tiende a sobredimensionarse con el tiempo con todas las bibliotecas que se instalan para cualquier proyecto o experimento. Además, si actualiza una biblioteca para un proyecto, podría interrumpir otros proyectos que dependan de distintas versiones de esa biblioteca. Y dado que el entorno se comparte entre varios proyectos, no puede usar pip freeze para recuperar una lista de las dependencias de un proyecto.
El entorno global es el lugar en el que desea instalar los paquetes de herramientas que desea usar en varios proyectos. Por ejemplo, puede ejecutar pip install gunicorn en el entorno global para que el servidor web gunicorn esté disponible en todas partes.
Uso del control de código fuente
Se recomienda adquirir el hábito de crear un repositorio de control de código fuente cada vez que se inicia un proyecto. Si Git está instalado, solo debe ejecutar el siguiente comando:
git init
A partir de ese momento puede ejecutar comandos como git add y git commit para confirmar los cambios. Al confirmar los cambios con regularidad, crea un historial de confirmación con el que puede revertir a cualquier estado anterior.
Para realizar una copia de seguridad en línea del proyecto, también se recomienda cargar el repositorio en GitHub o Azure DevOps. Si ha inicializado primero un repositorio local, use git remote add para conectar el repositorio local a GitHub o Azure DevOps.
La documentación de Git se encuentra en git-scm.com/docs y en Internet.
Visual Studio Code incluye varias características de Git integradas. Para más información, consulte Uso del control de versiones en VS Code.
También puede usar cualquier otra herramienta de control de código fuente que desee; Git es simplemente una de las más usadas y compatibles.
Paso siguiente
Ahora que tiene el entorno de desarrollo local, eche un vistazo a los patrones de uso comunes de las bibliotecas de Azure: