我需要编写一个PowerShell脚本,自动创建Azure网站并部署本地文件系统的内容。似乎Azure PowerShell SDK没有提供将文件复制到网站的方法,因此我们希望将FTP用作部署方法。
要获取正确的FTP端点和凭据,我找到的唯一方法是调用Azure Management Rest API:Get a Site’s Publish Profile。
但是,此API作为其他Azure Management API需要证书。我找到了以下教程 Building Real-World Cloud Apps with Windows Azure解释如何获取证书:
$s = Get-AzureSubscription -Current
$thumbprint = $s.Certificate.Thumbprint
不幸的是,当前的SDK $s.Certificate
似乎始终为null,因此该属性不存在。如果我手动设置证书指纹,一切都按预期工作。
您对如何获得正确的订阅证书有所了解吗?或者,您是否可以轻松地将本地文件部署到Azure网站?
答案 0 :(得分:1)
现在您可以使用
访问证书指纹$thumbprint = $s.DefaultAccount
而不是
#$thumbprint = $s.Certificate.Thumbprint
似乎DefaultAccount与证书指纹具有完全相同的值。
这里仅供参考,是我获取特定网站发布资料的完整脚本:
Function get-AzureWebSitePublishXml
{
Param(
[Parameter(Mandatory = $true)]
[String]$WebsiteName
)
# Get the current subscription
$s = Get-AzureSubscription -Current
if (!$s) {throw "Cannot get Windows Azure subscription."}
#$thumbprint = $s.Certificate.Thumbprint #this code doesn't work anymore
$thumbprint = $s.DefaultAccount
if (!$thumbprint) { throw "Cannot get subscription cert thumbprint."}
# Get the certificate of the current subscription from your local cert store
$cert = Get-ChildItem Cert:\CurrentUser\My\$thumbprint
if (!$cert) {throw "Cannot find subscription cert in Cert: drive."}
$website = Get-AzureWebsite -Name $WebsiteName
if (!$website) {throw "Cannot get Windows Azure website: $WebsiteName."}
# Compose the REST API URI from which you will get the publish settings info
$uri = "https://management.core.windows.net:8443/{0}/services/WebSpaces/{1}/sites/{2}/publishxml" -f `
$s.SubscriptionId, $website.WebSpace, $Website.Name
# Get the publish settings info from the REST API
$publishSettings = Invoke-RestMethod -Uri $uri -Certificate $cert -Headers @{"x-ms-version" = "2013-06-01"}
if (!$publishSettings) {throw "Cannot get Windows Azure website publishSettings."}
return $publishSettings
}
注意:这仅在使用Import-AzurePublishSettingsFile连接到azure时有效
任何人都可以确认使用DefaultAccount
属性是否安全?
<强>更新强>
如果您使用Kudu API上传您的网站like this,则不需要任何证书或发布资料。您应该使用Get-AzureWebsite
读取用户名和密码,主机名只是yourwebsitename.scm.azurewebsites.net
(请注意scm段)。我建议使用Kudu,因为它更可靠,更快。