Arcus.Scripting.ApiManagement.psm1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 |
<# .Synopsis Backs up an API Management service. .Description The Backup-AzApiManagement cmdlet backs up an instance of an Azure API Management service by getting the account storage key and creating an new storage context. This cmdlet stores the backup as an Azure Storage blob. .Parameter ResourceGroupName The name of the of resource group under which the API Management deployment exists. .Parameter StorageAccountResourceGroupName The name of the resource group under which the Storage Account exists. .Parameter StorageAccountName The name of the Storage account for which this cmdlet gets keys. .Parameter ServiceName The name of the API Management deployment that this cmdlet backs up. .Parameter ContainerName The name of the container of the blob for the backup. If the container does not exist, this cmdlet creates it. .Parameter BlobName The name of the blob for the backup. If the blob does not exist, this cmdlet creates it. This cmdlet generates a default value based on the following pattern: {Name}-{yyyy-MM-dd-HH-mm}.apimbackup .Parameter PassThru Indicates that this cmdlet returns the backed up PsApiManagement object, if the operation succeeds. .Parameter DefaultProfile The credentials, account, tenant, and subscription used for communication with azure. #> function Backup-AzApiManagementService { param( [Parameter(Mandatory = $true)][string] $ResourceGroupName = $(throw "Resource group name is required"), [Parameter(Mandatory = $true)][string] $StorageAccountResourceGroupName = $(throw = "Resource group for storage account is required"), [Parameter(Mandatory = $true)][string] $StorageAccountName = $(throw "Storage account name is required"), [Parameter(Mandatory = $true)][string] $ServiceName = $(throw "API managgement service name is required"), [Parameter(Mandatory = $true)][string] $ContainerName = $(throw "Name of the target blob container is required"), [Parameter(Mandatory = $false)][string] $BlobName = $null, [Parameter(Mandatory = $false)][switch] $PassThru = $false, [Parameter(Mandatory = $false)][Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer] $DefaultProfile = $null ) if ($PassThru) { . $PSScriptRoot\Scripts\Backup-AzApiManagementService.ps1 -ResourceGroupName $ResourceGroupName -StorageAccountResourceGroupName $StorageAccountResourceGroupName -StorageAccountName $StorageAccountName -ServiceName $ServiceName -ContainerName $ContainerName -BlobName $BlobName -PassThru } else { . $PSScriptRoot\Scripts\Backup-AzApiManagementService.ps1 -ResourceGroupName $ResourceGroupName -StorageAccountResourceGroupName $StorageAccountResourceGroupName -StorageAccountName $StorageAccountName -ServiceName $ServiceName -ContainerName $ContainerName -BlobName $BlobName } } Export-ModuleMember -Function Backup-AzApiManagementService <# .Synopsis Create an operation on an API in Azure API Management. .Description Create an operation on an existing API in Azure API Management. .Parameter ResourceGroupName The resource group containing the API Management service. .Parameter ServiceName The name of the API Management service located in Azure. .Parameter ServiceName The name of the Azure API Management instance. .Parameter ApiId The ID to identify the API running in Azure API Management. .Parameter OperationId The ID to identify the to-be-created operation on the API. .Parameter Method The method of the to-be-created operation on the API. .Parameter UrlTemplate The URL-template, or endpoint-URL, of the to-be-created operation on the API. .Parameter OperationName The optional descriptive name to give to the to-be-created operation on the API. .Parameter Description The optional explanation to describe the to-be-created operation on the API. .Parameter PolicyFilePath The path to the file containing the optional policy of the to-be-created operation on the API. #> function Create-AzApiManagementApiOperation { param( [Parameter(Mandatory = $true)][string] $ResourceGroupName = $(throw "Resource group is required"), [Parameter(Mandatory = $true)][string] $ServiceName = $(throw "Service name for API Management service name is required"), [Parameter(Mandatory = $true)][string] $ApiId = $(throw "API ID to identitfy the Azure API Management instance is required"), [Parameter(Mandatory = $true)][string] $OperationId = $(throw "Operation ID is required"), [Parameter(Mandatory = $true)][string] $Method = $(throw "Method is required"), [Parameter(Mandatory = $true)][string] $UrlTemplate = $(throw "URL template is required"), [Parameter(Mandatory = $false)][string] $OperationName = $OperationId, [Parameter(Mandatory = $false)][string] $Description = "", [Parameter(Mandatory = $false)][string] $PolicyFilePath = "" ) . $PSScriptRoot\Scripts\Create-AzApiManagementApiOperation.ps1 -ResourceGroupName $ResourceGroupName -ServiceName $ServiceName -ApiId $ApiId -OperationId $OperationId -Method $Method -UrlTemplate $UrlTemplate -OperationName $OperationName -Description $Description -PolicyFilePath $PolicyFilePath } Export-ModuleMember -Function Create-AzApiManagementApiOperation <# .Synopsis Import a policy to a product in Azure API Management. .Description Import a policy to a product in Azure API Management. .Parameter ResourceGroupName The resource group containing the Azure API Management instance. .Parameter ServiceName The name of the Azure API Management instance located in Azure. .Parameter ProductId The ID to identify the product in Azure API Management. .Parameter PolicyFilePath The path to the file containing the optional policy of the to-be-imported policy on the API. #> function Import-AzApiManagementProductPolicy { param( [Parameter(Mandatory = $true)][string] $ResourceGroupName = $(throw "Resource group is required"), [Parameter(Mandatory = $true)][string] $ServiceName = $(throw = "Service name for API Management service name is required"), [Parameter(Mandatory = $true)][string] $ProductId = $(throw "Product ID is required"), [Parameter(Mandatory = $true)][string] $PolicyFilePath = $(throw "Policy file path is required") ) . $PSScriptRoot\Scripts\Import-AzApiManagementProductPolicy.ps1 -ResourceGroupName $ResourceGroupName -ServiceName $ServiceName -ProductId $ProductId -PolicyFilePath $PolicyFilePath } Export-ModuleMember -Function Import-AzApiManagementProductPolicy <# .Synopsis Remove all defaults from the API Management instance. .Description Remove all default API's and products from an Azure API Management instance ('echo-api' API, 'starter' & 'unlimited' products), including the subscriptions. .Parameter ResourceGroupName The resource group containing the Azure API Management instance. .Parameter ServiceName The name of the Azure API Management instance. #> function Remove-AzApiManagementDefaults { param( [Parameter(Mandatory = $true)][string] $ResourceGroupName = $(throw "Resource group is required"), [Parameter(Mandatory = $true)][string] $ServiceName = $(throw "Service name for API Management service name is required") ) . $PSScriptRoot\Scripts\Remove-AzApiManagementDefaults.ps1 -ResourceGroupName $ResourceGroupName -ServiceName $ServiceName } Export-ModuleMember -Function Remove-AzApiManagementDefaults <# .Synopsis Import a policy to an API in Azure API Management. .Description Import a base-policy to an API hosted in Azure API Management. .Parameter ResourceGroupName The resource group containing the Azure API Management instance. .Parameter ServiceName The name of the Azure API Management service located in Azure. .Parameter ApiId The ID to identify the API running in API Management. .Parameter PolicyFilePath The path to the file containing the optional policy of the to-be-imported policy on the API. #> function Import-AzApiManagementApiPolicy { param( [parameter(Mandatory = $true)][string] $ResourceGroupName = $(throw = "Resource group is required"), [parameter(Mandatory = $true)][string] $ServiceName = $(throw = "Service name for API Management service name is required"), [parameter(Mandatory = $true)][string] $ApiId = $(throw = "API ID to identitfy the Azure API Management instance is required"), [parameter(Mandatory = $true)][string] $PolicyFilePath = $(throw "Policy file path is required") ) . $PSScriptRoot\Scripts\Import-AzApiManagementApiPolicy.ps1 -ResourceGroupName $ResourceGroupName -ServiceName $ServiceName -ApiId $ApiId -PolicyFilePath $PolicyFilePath } Export-ModuleMember -Function Import-AzApiManagementApiPolicy <# .Synopsis Imports a policy to an operation in Azure API Management. .Description Imports a policy from a file to an API operation in Azure API Management. .Parameter ResourceGroupName The resource group containing the Azure API Management instance. .Parameter ServiceName The name of the Azure API Management instance located in Azure. .Parameter ApiId The ID to identify the API running in Azure API Management. .Parameter OperationId The ID to identify the operation for which to import the policy. .Parameter PolicyFilePath The path to the file containing the to-be-imported policy. #> function Import-AzApiManagementOperationPolicy { param( [Parameter(Mandatory = $true)][string] $ResourceGroupName = $(throw "Resource group is required"), [Parameter(Mandatory = $true)][string] $ServiceName = $(throw "API management service name is required"), [Parameter(Mandatory = $true)][string] $ApiId = $(throw "API ID to identitfy the Azure API Management instance is required"), [Parameter(Mandatory = $true)][string] $OperationId = $(throw "Operation ID is required"), [Parameter(Mandatory = $true)][string] $PolicyFilePath = $(throw "Policy file path is required") ) . $PSScriptRoot\Scripts\Import-AzApiManagementOperationPolicy.ps1 -ResourceGroupName $ResourceGroupName -ServiceName $ServiceName -ApiId $ApiId -OperationId $OperationId -PolicyFilePath $PolicyFilePath } Export-ModuleMember -Function Import-AzApiManagementOperationPolicy <# .Synopsis Restores an API Management Service from the specified Azure storage blob. .Description The Restore-AzApiManagement cmdlet restores an API Management Service from the specified backup residing in an Azure Storage blob. .Parameter ResourceGroupName The name of resource group under which API Management exists. .Parameter StorageAccountResourceGroupName The name of the resource group that contains the Storage account. .Parameter StorageAccountName The name of the Storage account for which this cmdlet gets keys. .Parameter ServiceName The name of the API Management instance that will be restored with the backup. .Parameter ContainerName The name of the Azure storage backup source container. .Parameter BlobName The name of the Azure storage backup source blob. .Parameter PassThru Returns an object representing the item with which you are working. By default, this cmdlet does not generate any output. .Parameter DefaultProfile The credentials, account, tenant, and subscription used for communication with azure. #> function Restore-AzApiManagementService { param( [Parameter(Mandatory = $true)][string] $ResourceGroupName = $(throw "Resource group name is required"), [Parameter(Mandatory = $true)][string] $StorageAccountResourceGroupName = $(throw = "Resource group for storage account is required"), [Parameter(Mandatory = $true)][string] $StorageAccountName = $(throw "Name for the Azure storage account is required"), [Parameter(Mandatory = $true)][string] $ServiceName = $(throw "Service name for API Management service name is required"), [Parameter(Mandatory = $true)][string] $ContainerName =$(throw "Name of the source container is required"), [Parameter(Mandatory = $true)][string] $BlobName = $(throw "Name of the Azure storage blob is required"), [Parameter(Mandatory = $false)][switch] $PassThru = $false, [Parameter(Mandatory = $false)][Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer] $DefaultProfile = $null ) if ($PassThru) { . $PSScriptRoot\Scripts\Restore-AzApiManagementService.ps1 -ResourceGroupName $ResourceGroupName -StorageAccountResourceGroupName $StorageAccountResourceGroupName -StorageAccountName $StorageAccountName -ServiceName $ServiceName -ContainerName $ContainerName -BlobName $BlobName -PassThru } else { . $PSScriptRoot\Scripts\Restore-AzApiManagementService.ps1 -ResourceGroupName $ResourceGroupName -StorageAccountResourceGroupName $StorageAccountResourceGroupName -StorageAccountName $StorageAccountName -ServiceName $ServiceName -ContainerName $ContainerName -BlobName $BlobName } } Export-ModuleMember -Function Restore-AzApiManagementService <# .Synopsis Sets the authentication keys in Azure API Management. .Description Sets the authentication header/query parameter on an API in Azure API Management. .Parameter ResourceGroupName The resource group containing the Azure API Management instance. .Parameter ServiceName The name of the Azure API Management instance located in Azure. .Parameter ApiId The ID to identify the API running in Azure API Management. .Parameter KeyHeaderName The name of the header where the subscription key should be set. .Parameter QueryParamName The name of the query parameter where the subscription key should be set. #> function Set-AzApiManagementApiSubscriptionKey { param( [Parameter(Mandatory = $true)][string] $ResourceGroupName = $(throw = "Resource group name is required"), [Parameter(Mandatory = $true)][string] $ServiceName = $(throw = "Azure API Management service name is required"), [Parameter(Mandatory = $true)][string] $ApiId = $("API ID to identitfy the Azure API Management instance is required"), [Parameter(Mandatory = $false)][string] $HeaderName = "x-api-key", [Parameter(Mandatory = $false)][string] $QueryParamName = "apiKey" ) . $PSScriptRoot\Scripts\Set-AzApiManagementApiSubscriptionKey.ps1 -ResourceGroupName $ResourceGroupName -ServiceName $ServiceName -ApiId $ApiId -HeaderName $HeaderName -QueryParamName $QueryParamName } Export-ModuleMember -Function Set-AzApiManagementApiSubscriptionKey <# .Synopsis Uploads a certificate to the Azure API Management certificate store. .Description Uploads a private certificate to the Azure API Management certificate store, allowing authentication against backend services. .Parameter ResourceGroupName The name of the resource group containing the Azure API Management instance. .Parameter ServiceName The name of the Azure API Management instance. .Parameter CertificateFilePath The full file path to the location of the public certificate. .Parameter CertificatePassword The password for the private certificate. #> function Upload-AzApiManagementCertificate { param( [Parameter(Mandatory = $true)][string] $ResourceGroupName = $(throw "Resource group name is required"), [Parameter(Mandatory = $true)][string] $ServiceName = $(throw "API management service name is required"), [Parameter(Mandatory = $true)][string] $CertificateFilePath = $(throw "Full file path to the certificate is required"), [Parameter(Mandatory = $true)][string] $CertificatePassword = $(throw "Password for certificate is required") ) . $PSScriptRoot\Scripts\Upload-AzApiManagementCertificate.ps1 -ResourceGroupName $ResourceGroupName -ServiceName $ServiceName -CertificateFilePath $CertificateFilePath -CertificatePassword $CertificatePassword } Export-ModuleMember -Function Upload-AzApiManagementCertificate <# .Synopsis Uploads a CA certificate to the Azure API management certificate store. .Description Uploads a public CA certificate to the Azure API management Root certificate store, allowing certificate validation in the Azure API Management service policy. .Parameter ResourceGroupName The name of the resource group containing the Azure API Management instance. .Parameter ServiceName The name of the Azure API Management instance. .Parameter CertificateFilePath The full file path to the location of the public CA certificate. .Parameter AsJob Indicates whether or not the public CA certificate uploading process should be run in the background. #> function Upload-AzApiManagementSystemCertificate { param( [Parameter(Mandatory = $true)][string] $ResourceGroupName = $(throw "Resource group is required"), [Parameter(Mandatory = $true)][string] $ServiceName = $(throw "API Management service name is required"), [Parameter(Mandatory = $true)][string] $CertificateFilePath = $(throw "Certificate file-path is required"), [Parameter(Mandatory = $false)][switch] $AsJob = $false ) if ($AsJob) { . $PSScriptRoot\Scripts\Upload-AzApiManagementSystemCertificate.ps1 -ResourceGroupName $ResourceGroupName -ServiceName $ServiceName -CertificateFilePath $CertificateFilePath -AsJob } else { . $PSScriptRoot\Scripts\Upload-AzApiManagementSystemCertificate.ps1 -ResourceGroupName $ResourceGroupName -ServiceName $ServiceName -CertificateFilePath $CertificateFilePath } } |