E-mail küldése Automation-runbookból
A SendGrid használatával e-mailt küldhet egy runbookból a PowerShell használatával.
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Előfeltételek
SendGrid-feladó ellenőrzése. Tartomány vagy önálló feladó
Azure Automation-fiók, amely legalább egy, felhasználó által hozzárendelt felügyelt identitással rendelkezik. További információ: Felügyelt identitások engedélyezése.
Az modules:
Az.Accounts
andAz.KeyVault
imported into the Automation account. További információ: Az-modulok importálása.A számítógépre telepített Azure Az PowerShell-modul . A telepítéssel vagy frissítéssel kapcsolatban tekintse meg az Azure Az PowerShell-modul telepítését ismertető témakört.
Azure Key Vault létrehozása;
Hozzon létre egy Azure Key Vault- és Key Vault-hozzáférési szabályzatot , amely lehetővé teszi a hitelesítő adatok számára a kulcstartó titkos kulcsainak lekérését és beállítását a megadott kulcstartóban.
Jelentkezzen be interaktívan az Azure-ba a Connect-AzAccount parancsmag használatával, és kövesse az utasításokat.
# 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>
Adjon meg egy megfelelő értéket az alábbi változókhoz, majd hajtsa végre a szkriptet.
$resourceGroup = "<Resource group>" $automationAccount = "<Automation account>" $region = "<Region>" $SendGridAPIKey = "<SendGrid API key>" $VaultName = "<A universally unique vault name>" $userAssignedManagedIdentity = "<User-assigned managed identity>"
Key Vault létrehozása és engedélyek hozzárendelése
# 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, Get
Az Azure Key Vault létrehozásának és a titkos kódok tárolásának egyéb módjaiért tekintse meg a Key Vault rövid útmutatóit.
Engedélyek hozzárendelése felügyelt identitásokhoz
Engedélyek hozzárendelése a megfelelő felügyelt identitáshoz. A runbook használhatja az Automation-fiók rendszer által hozzárendelt felügyelt identitását vagy egy felhasználó által hozzárendelt felügyelt identitást. A lépések meg vannak adva az egyes identitásokhoz való engedélyek hozzárendeléséhez. Az alábbi lépések a PowerShellt használják. Ha inkább a portált szeretné használni, olvassa el az Azure-szerepkörök hozzárendelése az Azure Portal használatával című témakört.
A New-AzRoleAssignment PowerShell-parancsmaggal szerepkört rendelhet a rendszer által hozzárendelt felügyelt identitáshoz.
New-AzRoleAssignment ` -ObjectId $SA_PrincipalId ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"
Szerepkör hozzárendelése felhasználó által hozzárendelt felügyelt identitáshoz.
New-AzRoleAssignment ` -ObjectId $UAMI.PrincipalId` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"
A rendszer által hozzárendelt felügyelt identitás esetében jelenítse meg
ClientId
és rögzítse a későbbi használat értékét.$UAMI.ClientId
Runbook létrehozása e-mail küldéséhez
Miután létrehozott egy Key Vaultot, és tárolta az SendGrid
API-kulcsot, ideje létrehozni azt a runbookot, amely lekéri az API-kulcsot, és e-mailt küld. Használjunk egy runbookot, amely a rendszer által hozzárendelt felügyelt identitást használja az Azure-ral való hitelesítéshez, hogy lekérje a titkos kulcsot az Azure Key Vaultból. Meghívjuk a Send-GridMailMessage runbookot. A különböző forgatókönyvekhez használt PowerShell-szkriptet módosíthatja.
Jelentkezzen be az Azure Portal-ra, és lépjen az Automation-fiókhoz.
A megnyitott Automation-fióklap Folyamatautomatizálás területén válassza a Runbookok lehetőséget
Válassza a + Runbook létrehozása lehetőséget.
- Nevezze el a runbookot
Send-GridMailMessage
. - A Runbook típus legördülő listájában válassza a PowerShellt.
- Válassza a Létrehozás lehetőséget.
- Nevezze el a runbookot
Létrejön a runbook, és megnyílik a PowerShell-runbook szerkesztése oldal.
Másolja a következő PowerShell-példát a Szerkesztés lapra. Győződjön meg arról, hogy a
VaultName
kulcstartóhoz választott nevet adja meg.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 $bodyJson
Ha azt szeretné, hogy a runbook a rendszer által hozzárendelt felügyelt identitással fusson, hagyja meg a kódot. Ha inkább felhasználó által hozzárendelt felügyelt identitást szeretne használni, akkor:
- A 18. sorból távolítsa el
$AzureContext = (Connect-AzAccount -Identity).context
a - Cserélje le a
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
- Adja meg a korábban beszerzett ügyfél-azonosítót.
- A 18. sorból távolítsa el
Ha a rendszer kéri, válassza a Mentés, a Közzététel , majd az Igen lehetőséget.
A runbook sikeres végrehajtásának ellenőrzéséhez kövesse a Runbook tesztelése vagy a Runbook indítása című témakörben leírt lépéseket.
Ha kezdetben nem látja a teszt e-mail-címét, ellenőrizze a Levélszemét mappáit.
Az erőforrások eltávolítása
Ha a runbookra már nincs szükség, jelölje ki a runbookok listájában, és válassza a Törlés lehetőséget.
Törölje a Key Vaultot a Remove-AzKeyVault parancsmaggal.
$VaultName = "<your KeyVault name>" $resourceGroup = "<your ResourceGroup name>" Remove-AzKeyVault -VaultName $VaultName -ResourceGroupName $resourceGroup
Következő lépések
- Runbook-feladatadatok Log Analytics-munkaterületre való küldéséhez lásd : Azure Automation-feladatok adatainak továbbítása az Azure Monitor-naplókba.
- Az alapszintű metrikák és naplók figyeléséhez lásd : Azure Automation-runbook aktiválása riasztással.