Skicka ett e-postmeddelande från Am Automation-runbook
Du kan skicka ett e-postmeddelande från en runbook med SendGrid med hjälp av PowerShell.
Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
Förutsättningar
SendGrid-avsändarverifiering. Antingen domän eller enskild avsändare
Ett Azure Automation-konto med minst en användar tilldelad hanterad identitet. Mer information finns i Aktivera hanterade identiteter.
Az-moduler:
Az.AccountsochAz.KeyVaultimporterades till Automation-kontot. Mer information finns i Importera Az-moduler.Azure Az PowerShell-modulen som är installerad på datorn. Information om hur du installerar eller uppgraderar finns i Installera Azure Az PowerShell-modulen.
Skapa ett Azure Key Vault
Skapa en Azure Key Vault och Key Vault åtkomstprincip som gör att autentiseringsbehörigheten kan hämta och ange nyckelvalvshemligheter i det angivna nyckelvalvet.
Logga in på Azure interaktivt med hjälp Anslut-AzAccount-cmdleten och följ instruktionerna.
# Sign in to your Azure subscription $sub = Get-AzSubscription -ErrorAction SilentlyContinue if(-not($sub)) { Connect-AzAccount } # If you have multiple subscriptions, set the one to use # Select-AzSubscription -SubscriptionId <SUBSCRIPTIONID>Ange ett lämpligt värde för variablerna nedan och kör sedan skriptet.
$resourceGroup = "<Resource group>" $automationAccount = "<Automation account>" $region = "<Region>" $SendGridAPIKey = "<SendGrid API key>" $VaultName = "<A universally unique vault name>" $userAssignedManagedIdentity = "<User-assigned managed identity>"Skapa Key Vault och tilldela behörigheter
# Create the new key vault $newKeyVault = New-AzKeyVault ` -VaultName $VaultName ` -ResourceGroupName $resourceGroup ` -Location $region $resourceId = $newKeyVault.ResourceId # Convert the SendGrid API key into a SecureString $Secret = ConvertTo-SecureString -String $SendGridAPIKey ` -AsPlainText -Force Set-AzKeyVaultSecret -VaultName $VaultName ` -Name 'SendGridAPIKey' ` -SecretValue $Secret # Grant Key Vault access to the Automation account's system-assigned managed identity. $SA_PrincipalId = (Get-AzAutomationAccount ` -ResourceGroupName $resourceGroup ` -Name $automationAccount).Identity.PrincipalId Set-AzKeyVaultAccessPolicy ` -VaultName $vaultName ` -ObjectId $SA_PrincipalId ` -PermissionsToSecrets Set, Get # Grant Key Vault access to the user-assigned managed identity. $UAMI = Get-AzUserAssignedIdentity ` -ResourceGroupName $resourceGroup ` -Name $userAssignedManagedIdentity Set-AzKeyVaultAccessPolicy ` -VaultName $vaultName ` -ObjectId $UAMI.PrincipalId ` -PermissionsToSecrets Set, GetAndra sätt att skapa en Azure Key Vault och lagra en hemlighet finns i Key Vault snabbstarter.
Tilldela behörigheter till hanterade identiteter
Tilldela behörigheter till lämplig hanterad identitet. Runbooken kan använda antingen den system tilldelade hanterade identiteten för Automation-kontot eller en användar tilldelad hanterad identitet. Steg finns för att tilldela behörigheter till varje identitet. Stegen nedan använder PowerShell. Om du föredrar att använda portalen kan du gå till Tilldela Azure-roller med hjälp av Azure Portal.
Använd PowerShell-cmdleten New-AzRoleAssignment för att tilldela en roll till den systemtilldelade hanterade identiteten.
New-AzRoleAssignment ` -ObjectId $SA_PrincipalId ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"Tilldela en roll till en användar tilldelad hanterad identitet.
New-AzRoleAssignment ` -ObjectId $UAMI.PrincipalId` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"För den system tilldelade hanterade identiteten visar
ClientIdoch registrerar du värdet för senare användning.$UAMI.ClientId
Skapa runbooken för att skicka ett e-postmeddelande
När du har skapat en Key Vault och lagrat DIN API-nyckel är det dags att skapa runbooken som hämtar API-nyckeln och SendGrid skickar ett e-postmeddelande. Nu ska vi använda en runbook som använder den system tilldelade hanterade identiteten för att autentisera med Azure för att hämta hemligheten från Azure Key Vault. Vi anropar runbooken Send-GridMailMessage. Du kan ändra PowerShell-skriptet som används för olika scenarier.
Logga in på Azure Portal och gå till ditt Automation-konto.
På din öppna Automation-kontosida går du till Processautomatisering och väljer Runbooks
Välj + Skapa en runbook.
- Ge runbooken namnet
Send-GridMailMessage. - Välj PowerShell i listrutan Typ av runbook.
- Välj Skapa.

- Ge runbooken namnet
Runbooken skapas och sidan Redigera PowerShell-runbook öppnas.

Kopiera följande PowerShell-exempel till sidan Redigera. Se till
VaultNameatt anger det namn som du har valt för Key Vault.Param( [Parameter(Mandatory=$True)] [String] $destEmailAddress, [Parameter(Mandatory=$True)] [String] $fromEmailAddress, [Parameter(Mandatory=$True)] [String] $subject, [Parameter(Mandatory=$True)] [String] $content, [Parameter(Mandatory=$True)] [String] $ResourceGroupName ) # Ensures you do not inherit an AzContext in your runbook Disable-AzContextAutosave -Scope Process # Connect to Azure with system-assigned managed identity $AzureContext = (Connect-AzAccount -Identity).context # set and store context $AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext $VaultName = "<Enter your vault name>" $SENDGRID_API_KEY = Get-AzKeyVaultSecret ` -VaultName $VaultName ` -Name "SendGridAPIKey" ` -AsPlainText -DefaultProfile $AzureContext $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", "Bearer " + $SENDGRID_API_KEY) $headers.Add("Content-Type", "application/json") $body = @{ personalizations = @( @{ to = @( @{ email = $destEmailAddress } ) } ) from = @{ email = $fromEmailAddress } subject = $subject content = @( @{ type = "text/plain" value = $content } ) } $bodyJson = $body | ConvertTo-Json -Depth 4 $response = Invoke-RestMethod -Uri https://api.sendgrid.com/v3/mail/send -Method Post -Headers $headers -Body $bodyJsonOm du vill att runbooken ska köras med den system tilldelade hanterade identiteten lämnar du koden som den är. Om du föredrar att använda en användar tilldelad hanterad identitet gör du följande:
- Från rad 18 tar du bort
$AzureContext = (Connect-AzAccount -Identity).context, - Ersätt den med
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context, och - Ange det klient-ID som du fick tidigare.
- Från rad 18 tar du bort
Välj Spara, Publicera och sedan Ja när du tillfrågas.
Du kan kontrollera att runbooken körs korrekt genom att följa stegen under Testa en runbook eller Starta en runbook.
Om du inte ser testmeddelandet kontrollerar du skräppostmapparna.
Rensa resurser
När runbooken inte längre behövs markerar du den i runbook-listan och väljer Ta bort.
Ta bort Key Vault med hjälp av cmdleten Remove-AzKeyVault.
$VaultName = "<your KeyVault name>" $resourceGroup = "<your ResourceGroup name>" Remove-AzKeyVault -VaultName $VaultName -ResourceGroupName $resourceGroup
Nästa steg
- Information om hur du skickar runbook-jobbdata till Log Analytics-arbetsytan finns i Azure Automation jobbdata till Azure Monitor loggar.
- Om du vill övervaka mått och loggar på basnivå kan du se Använda en avisering för att utlösa en Azure Automation runbook.