Erste Schritte mit den Azure-Modulen für Node.jsGet started with the Azure modules for Node.js

In diesem Leitfaden werden die folgenden Schritte beschrieben: Installieren der Azure-Node.js-Module, Authentifizieren bei Azure mit einem Dienstprinzipal und Ausführen von Beispielcode, mit dem Ressourcen in Ihrem Azure-Abonnement erstellt werden und eine Verbindung mit Azure-Clouddiensten hergestellt wird.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.

VoraussetzungenPrerequisites

Starten von Azure Cloud ShellLaunch Azure Cloud Shell

Azure Cloud Shell ist eine kostenlose Bash-Shell, die Sie direkt im Azure-Portal ausführen können.The Azure Cloud Shell is a free bash shell that you can run directly within the Azure Portal. Die Azure CLI ist vorinstalliert und für die Verwendung mit Ihrem Konto konfiguriert.It has the Azure CLI preinstalled and configured to use with your account. Klicken Sie auf die Schaltfläche Cloud Shell im Menü oben rechts im Azure-Portal.Click the Cloud Shell button on the menu in the upper-right of the Azure portal.

Cloud ShellCloud Shell

Die Schaltfläche öffnet eine interaktive Shell, die Sie verwenden können, um alle Schritte in diesem Thema auszuführen:The button launches an interactive shell that you can use to run all of the steps in this topic:

Screenshot des Fensters „Cloud Shell“ im PortalScreenshot showing the Cloud Shell window in the portal

Vorbereiten der UmgebungPrepare your environment

Erstellen Sie ein neues Projekt in einem leeren Verzeichnis, und installieren Sie die folgenden npm-Module: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

Einrichten der AuthentifizierungSet up authentication

Die Node.js-Anwendung benötigt Lese- und Schreibberechtigungen in Ihrem Azure-Abonnement, um den Beispielcode in diesem Leitfaden ausführen zu können.Your Node.js applications need read and create permissions in your Azure subscription to run the sample code in this guide. Erstellen Sie einen Dienstprinzipal, und konfigurieren Sie Ihre Anwendung so, dass sie mit dessen Anmeldeinformationen ausgeführt wird.Create a service principal and configure your application to run with its credentials. Dienstprinzipale stellen ein nicht interaktives, Ihrer Identität zugeordnetes Konto dar, dem Sie nur die Berechtigungen erteilen, die zum Ausführen Ihrer App erforderlich sind.Service principals are a non-interactive account associated with your identity to which you grant only the privileges your app needs to run.

Erstellen Sie einen Dienstprinzipal mithilfe der Azure CLI 2.0, und erfassen Sie die Ausgabe.Create a service principal using the Azure CLI 2.0 and capture the output. Geben Sie im Kennwortargument anstelle von MY_SECURE_PASSWORD ein sicheres Kennwort an.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": ""
}

Exportieren Sie die Werte für appId, password und tenant als Umgebungsvariablen: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

Rufen Sie mit az account show die ID für Ihr Abonnement ab.Get the ID for your subscription with az account show

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

Exportieren Sie die Abonnement-ID als Umgebungsvariable.Export the subscription ID as an environment variable

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

Erstellen einer virtuellen Linux-MaschineCreate a Linux virtual machine

Erstellen Sie im aktuellen Verzeichnis eine neue Datei vom Typ createVM.js mit dem folgenden Code.Create a new file createVM.js in the current directory with the following code. Aktualisieren Sie den Wert von adminPass mit einem sicheren Kennwort.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");
                                        });
                                    });
                            });
                    });
            });
    });

Führen Sie den Code über die Befehlszeile aus:Run the code from the command line:

node createVM.js

Rufen Sie nach der Ausführung des Codes die IP des neuen virtuellen Computers ab, und melden Sie sich per SSH mithilfe des Werts für adminPass aus Ihrem Code an.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*

Schreiben eines Blobs in Azure StorageWrite a blob to Azure Storage

Erstellen Sie im aktuellen Verzeichnis eine neue Datei vom Typ uploadFile.js mit dem folgenden Code: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");
                        }
                    });
                }
            });

        });
    });
});

Führen Sie den Befehl aus, kopieren Sie die URL aus der Ausgabe, und fügen Sie sie in Ihrem Webbrowser ein, um die Datei in Azure Storage anzuzeigen: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

Bereinigen von RessourcenClean up resources

Löschen Sie die Ressourcengruppe, um die in diesem Leitfahren erstellten Ressourcen zu entfernen.Delete the resource group to remove the resources created in this guide.

az group delete --name myResourceGroup

Nächste SchritteNext steps

Sehen Sie sich den weiteren Node.js-Beispielcode an, den Sie in Ihren Apps verwenden können.Explore more sample Node.js code you can use in your apps.

VerweisReference

Für alle Pakete steht eine Referenz zur Verfügung.A reference is available for all packages.

Hilfe und FeedbackGet help and give feedback

Stellen Sie in Stack Overflow Fragen an die Community.Post questions to the community on Stack Overflow. Melden Sie Fehler und Probleme im Zusammenhang mit den Azure-Modulen für Node.js auf der projektspezifischen GitHub-Seite.Report bugs and open issues against the Azure modules for Node.js on the project GitHub.