I’ve got a simple ASP.NET Core 2 web application setup hosted in AWS. My environment is built of 3 servers (build, web, and db). I want to minimize all AWS costs so I keep the servers off most of the time. Whenever turned on they get random public IP addresses from the AWS pool. I’ve got a really simple build and deployment process which apart from the usual elements also has the following step:

Send an email with either success or failure messages and the current public IP addresses of my servers

This is really important here as I would like to know where my stuff is without logging into AWS Console. Emails do work but Slack gives a more real-time experience without all the clunkiness emails come with. To get it done I have followed the below steps:

• set up a new Slack channel #deployments
• added the Incoming WebHooks integration and set it up to use the channel
• stored my web hook URL in build config
• my script is written in Powershell so I post to my web hook like this
function Send-SlackMessage()
{
Param(
[string]$Text, [string]$WebHookUri
)

$Payload = @{ 'channel' = '#deployments'; 'username' = 'deployment-bot'; 'text' =$Text;
'icon_emoji' = ':ghost:';
} | ConvertTo-Json

Invoke-WebRequest -Method POST -Uri $WebHookUri -Body @{'payload'=$Payload} > \$null
}


And that’s it. Simple as that. No more emails.