function Invoke-MaximizeDesignation { <# .SYNOPSIS This wraps the APIGateway/Lambda for scaling environments. Scales the environment up. Turns on all EC2 instances by designation. .DESCRIPTION Sends startup commands to EC2 instances where the alk:designation 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 alk:designation tag to filter which instances to query. Case sensitive. .PARAMETER ApiGatewayKey Unique key for authenticating to the API Gateway. .PARAMETER IsTest Switch to determine if it should actually send the commands to the EC2 instances, or just report back what it will do, without actually sending instance commands. .EXAMPLE Invoke-MaximizeDesignation -fqdn "vyq7hqcx55.execute-api.us-east-1.amazonaws.com" -designation "ci1" -apiGatewayKey "123456789" -isTest $true returns JSON: [ { "IsExcluded": false, "IsApp": false, "IsMic": false, "IsWeb": true, "IsRunning": true, "IsStopped": false, "InstanceId": "i-0fa21749b4e4b81ea", "Designation": "ci1", "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, [Parameter(Mandatory = $true)] [switch] $IsTest ) [System.Net.ServicePointManager]::SecurityProtocol = "Tls12" $jsonBody = '{"Designation":"' + $Designation + '","IsTest":"' + $IsTest + '"}' $response = Invoke-RestMethod -Uri "https://$Fqdn/Prod/MaximizeDesignation" -Headers @{"x-api-key"="$ApiGatewayKey"} -Method POST -body $jsonBody -ContentType "application/json" return $response }