Начало работы с модулями Azure для Node.jsGet started with the Azure modules for Node.js

Это руководство поможет вам установить модули Azure для Node.js, выполнить аутентификацию в Azure с помощью субъекта-службы и запустить пример кода, который создает ресурсы в подписке Azure и подключается к облачным службам Azure.This guide walks you through installing Azure Node.js modules, authenticating to Azure with a service principal, and running sample code that creates resources in your Azure subscription and connects to Azure cloud services.

Предварительные требованияPrerequisites

Запуск Azure Cloud ShellLaunch Azure Cloud Shell

Azure Cloud Shell — это бесплатная оболочка bash, которую можно запускать непосредственно на портале Azure.The Azure Cloud Shell is a free bash shell that you can run directly within the Azure Portal. Она включает предварительно установленный интерфейс Azure CLI и настроена для использования с вашей учетной записью.It has the Azure CLI preinstalled and configured to use with your account. Нажмите кнопку меню Cloud Shell в правом верхнем углу портала Azure.Click the Cloud Shell button on the menu in the upper-right of the Azure portal.

Cloud ShellCloud Shell

Кнопка запускает интерактивную оболочку, с помощью которой можно выполнять действия, описанные в этом разделе:The button launches an interactive shell that you can use to run all of the steps in this topic:

Снимок экрана с окном Azure Cloud Shell на порталеScreenshot showing the Cloud Shell window in the portal

Подготовка средыPrepare your environment

Создайте проект в пустом каталоге и установите следующие модули npm:Create a new project in an empty directory and install the following npm modules:

cd azure-node-quickstart
npm init -y
npm install --save azure ms-rest-azure azure-arm-compute azure-arm-network azure-storage azure-arm-storage

Настройка проверки подлинностиSet up authentication

Чтобы выполнить пример кода из этого руководства, предоставьте приложению Node.js в вашей подписке Azure разрешения на чтение и создание.Your Node.js applications need read and create permissions in your Azure subscription to run the sample code in this guide. Создайте субъект-службу и настройте приложение для выполнения со связанными учетными данными.Create a service principal and configure your application to run with its credentials. Субъект-служба это неинтерактивная учетная запись, связанная с вашим идентификатором. Этой учетной записи предоставляются только те разрешения, которые нужны для запуска приложения.Service principals are a non-interactive account associated with your identity to which you grant only the privileges your app needs to run.

Создайте субъект-службу с помощью Azure CLI 2.0 и запишите выходные данные.Create a service principal using the Azure CLI 2.0 and capture the output. Вместо MY_SECURE_PASSWORD нужно указать в аргументе пароля безопасный пароль.You'll need to provide a secure password in the password argument instead of MY_SECURE_PASSWORD.

az ad sp create-for-rbac --name AzureNodeTest --password MY_SECURE_PASSWORD
{
  "appId": "a487e0c1-82af-47d9-9a0b-af184eb87646d",
  "displayName": "AzureNodeTest",
  "name": "http://AzureNodeTest",
  "password": password,
  "tenant": ""
}

Экспортируйте значения appId, password и tenant в качестве переменных среды:Export the values for appId, password and tenant as environment variables:

export AZURE_ID a487e0c1-82af-47d9-9a0b-af184eb87646d
export AZURE_PASS password
export AZURE_TENANT XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

Выберите идентификатор подписки с помощью команды az account show:Get the ID for your subscription with az account show

az account show
{
   "environmentName": "AzureCloud",
   "id": "306943934-0323-4ae4d-a42b-f6613d1664ac",
   "isDefault": true
}

Экспортируйте идентификатор подписки как переменную среды:Export the subscription ID as an environment variable

export AZURE_SUB 306943934-0323-4ae4d-a42b-f6613d1664ac

Создание виртуальной машины LinuxCreate a Linux virtual machine

Создайте файл createVM.js в текущем каталоге с помощью следующего кода.Create a new file createVM.js in the current directory with the following code. Замените значение adminPass надежным паролем.Update the value of adminPass with a good password.

'use strict';

const MsRest = require('ms-rest-azure');
const ComputeManagementClient = require('azure-arm-compute');
const NetworkManagementClient = require('azure-arm-network');

MsRest.loginWithServicePrincipalSecret(
    process.env.AZURE_ID, process.env.AZURE_PASS, process.env.AZURE_TENANT, (err, credentials) => {

        let adminPass = YOUR_VALUE_HERE;
        const networkClient = new NetworkManagementClient(credentials, process.env.AZURE_SUB);
        const computeClient = new ComputeManagementClient(credentials, process.env.AZURE_SUB);

        let nicParameters = {
            location: "eastus",
            ipConfigurations: [
                {
                    name: "vmnetinterface",
                    privateIPAllocationMethod: 'Dynamic',
                }
            ]
        };

        const vnetParameters = {
            location: "eastus",
            addressSpace: {
                addressPrefixes: ['10.0.0.0/16']
            },
            dhcpOptions: {
                dnsServers: ['10.1.1.1', '10.1.2.4']
            },
            subnets: [{ name: "mynodesubnet", addressPrefix: '10.0.0.0/24' }],
        };

        let vmParameters = {
            location: "eastus",
            osProfile: {
                computerName: "newLinuxVM",
                adminUsername: "testadmin",
                adminPassword: admin_password
            },
            hardwareProfile: {
                vmSize: 'Basic_A1'
            },
            networkProfile: {
                networkInterfaces: [
                    {
                        primary: true
                    }
                ]
            },
            storageProfile: {
                imageReference: {
                    publisher: 'Canonical',
                    offer: 'UbuntuServer',
                    sku: '16.04-LTS',
                    version: 'latest'
                },
            }
        };

        let publicIPParameters = {
            location: "eastus",
            publicIPAllocationMethod: 'Dynamic'
        };

        networkClient.virtualNetworks.createOrUpdate("myResourceGroup", "mynodevnet", vnetParameters)
            .then(function (vnetwork) {
                networkClient.subnets.get("myResourceGroup", "mynodevnet", "mynodesubnet")
                    .then(function (subnetInfo) {
                        nicParameters.ipConfigurations[0].subnet = subnetInfo;
                        networkClient.publicIPAddresses.createOrUpdate("myResourceGroup", "myLinuxPublicIP", publicIPParameters)
                            .then(function (publicIP) {
                                nicParameters.ipConfigurations[0].publicIPAddress = publicIP;
                                networkClient.networkInterfaces.createOrUpdate("myResourceGroup", "vmnetinterface", nicParameters)
                                    .then(function (vmNetworkInterface) {
                                        vmParameters.networkProfile.networkInterfaces[0].id = vmNetworkInterface.id;
                                        computeClient.virtualMachines.createOrUpdate("myResourceGroup", "newLinuxVM", vmParameters, (err, data) => {
                                            if (err) return console.log(err);
                                            console.log("Created new Linux VM");
                                        });
                                    });
                            });
                    });
            });
    });

Запустите код из командной строки:Run the code from the command line:

node createVM.js

Когда код будет выполнен, получите IP-адрес новой виртуальной машины и выполните вход с использованием SSH и значения adminPass из кода.Once the code completes, get the IP of your new virtual machine and log in with SSH using the value for adminPass from your code.

az vm list-ip-addresses --name newLinuxVM
ssh testadmin@*vm_ip_address*

Запись большого двоичного объекта в службу хранилища AzureWrite a blob to Azure Storage

Создайте файл uploadFile.js в текущем каталоге с помощью следующего кода.Create a new file uploadFile.js in the current directory with the following code.

'use strict'

const MsRest = require('ms-rest-azure');
const storage = require('azure-storage');
const storageManagementClient = require('azure-arm-storage');

MsRest.loginWithServicePrincipalSecret(process.env.AZURE_ID, process.env.AZURE_PASS, process.env.AZURE_TENANT, (err, credentials) => {
    const client = new storageManagementClient(credentials, process.env.AZURE_SUB);

    const createParameters = {
        location: 'eastus',
        sku: {
            name: 'Standard_LRS'
        },
        kind: 'BlobStorage',
        accessTier: 'Hot'
    };

    const blobAccountName = "nodedemo" + Math.random().toString(10).substr(4, 7);

    client.storageAccounts.create("myResourceGroup", blobAccountName, createParameters, (err, result, httpRequest, response) => {
        if (err) console.log(err);

        // get a connection string for the account
        client.storageAccounts.listKeys("myResourceGroup", blobAccountName, (err, result) => {
            if (err) console.log(err);

            // get a storage key and use it to connect to the azure-storage module
            const blobSvc = storage.createBlobService(blobAccountName, result.keys[0].value);
            blobSvc.createContainerIfNotExists('mycontainer', { publicAccessLevel: 'blob' }, function (error, result, response) {
                if (!error) {
                    blobSvc.createBlockBlobFromText('mycontainer', 'myblob', 'Hello Azure!', function (error, result, response) {
                        if (!error) {
                            console.log("File uploaded to " + "https://" + blobAccountName + ".blob.core.windows.net/mycontainer/myblob");
                        }
                    });
                }
            });

        });
    });
});

Выполните команду, затем скопируйте и вставьте URL-адрес из выходных данных в веб-браузер, чтобы отобразить файл в службе хранилища Azure:Run the command and then copy and paste the URL from the output into your web browser to view the file in Azure Storage:

node uploadFile.js

Очистка ресурсовClean up resources

Удалите группу ресурсов, чтобы удалить ресурсы, созданные во время работы с этим руководством.Delete the resource group to remove the resources created in this guide.

az group delete --name myResourceGroup

Дополнительная информацияNext steps

См. другие примеры кода Node.js, которые можно использовать в приложениях.Explore more sample Node.js code you can use in your apps.

Справочные материалыReference

Справочник по всем пакетам.A reference is available for all packages.

Справка и отзывыGet help and give feedback

Задавайте вопросы сообществу на сайте Stack Overflow.Post questions to the community on Stack Overflow. Сообщайте об ошибках и нерешенных проблемах с модулями Azure для Node.js на странице проектов GitHub.Report bugs and open issues against the Azure modules for Node.js on the project GitHub.