function Invoke-GetAllHostsByDesignation { <# .SYNOPSIS This wraps the APIGateway/Lambda for scaling environments. Helper for the MinimizeEnvironment/MaximizeEnvironment functions. .DESCRIPTION Gets all EC2 instances where the alk:designation/alk:lane tag value = parameter Designation. .PARAMETER Fqdn Fully Qualified Domain Name of the API Gateway. Each environment/account has a unique API Gateway endpoint. .PARAMETER Designation Designation name to get instances by. Examples are 'ci1','Red17'. Case sensitive. .PARAMETER ApiGatewayKey Unique key for authenticating to the API Gateway. .EXAMPLE Invoke-GetAllHostsByDesignation -fqdn "vyq7hqcx55.execute-api.us-east-1.amazonaws.com" -designation "Red17" -apiGatewayKey "123456789" returns JSON: [ { "IsExcluded": false, "IsApp": false, "IsMic": false, "IsWeb": true, "IsRunning": true, "IsStopped": false, "InstanceId": "i-0fa21749b4e4b81ea", "Designation": "Red17", "HostName": "web27425", "Environment": "dev", "Service": "orb" } ] .NOTES Dev FQDN : vyq7hqcx55.execute-api.us-east-1.amazonaws.com Staging FQDN : cox3133b67.execute-api.us-east-1.amazonaws.com Qa FQDN : #> [CmdletBinding()] Param ( [Parameter(Mandatory = $true)] [string] $Fqdn, [Parameter(Mandatory = $true)] [string] $Designation, [Parameter(Mandatory = $true)] [string] $ApiGatewayKey ) [System.Net.ServicePointManager]::SecurityProtocol = "Tls12" $jsonBody = '{"Designation":"' + $Designation + '"}' $response = Invoke-RestMethod -Uri "https://$Fqdn/Prod/GetAllHostsByDesignation" -Headers @{"x-api-key"="$ApiGatewayKey"} -Method POST -body $jsonBody -ContentType "application/json" return $response }