我正在寻找一种以编程方式扩展/缩小Azure应用服务实例的方法。这个问题之前已经被问过(例如在下面的链接中)几个月前,当时无法回答问题,所以我只是想知道某些事情是否已经改变和/或现在有一些新功能可用。
Is possible to programmatically scale Azure instances?
请注意,我们希望在“Azure应用服务”上执行此操作,而不是旧式“Azure云服务”。
我们希望以编程方式进行扩展的原因是我们可以使用自定义指标来控制它。我们没有找到将自定义指标发布到Azure的方法,然后Azure可以使用它来执行自动扩展。
我们确实发现Azure自动调度规则可以接受Azure存储队列长度,因此理论上我们可以通过向队列添加/删除消息来控制队列长度,但这只是一种黑客行为,而且只有在队列是在经典的Azure门户网站中创建的,而不是新的Azure门户网站。
答案 0 :(得分:6)
是否可以通过编程方式扩展Azure应用服务
是的,我们可以使用REST API或SDK。 我使用fiddler测试REST API,详细信息请参考快照,了解如何获得授权,请参阅document。
标题信息:
身体信息:
如果可以使用C#代码,请尝试使用
Microsoft.Azure.Management.WebSites扩展Azure应用服务。有关SDK的更多详细信息,请参阅packages.config文件。
如何注册Azure AD App以及如何获取应用程序ID,secretKey和tenantId请参阅document。以下是演示代码。
<body>
<div class="A-absolute-Wrapper">
<div class="B"></div>
<div class="C"></div>
</div>
</body>
packages.config文件:
import React, {PropTypes} from 'react';
import {GoogleMapLoader, GoogleMap, Marker} from 'react-google-maps';
import _ from 'lodash';
class MapContainer extends React.Component {
render() {
return (
<section className="searchInput-MapScreen">
<GoogleMapLoader
containerElement={
<div
style={{
height: `100%`
}}
/>
}
googleMapElement={
<GoogleMap
defaultZoom={10}
//defaultCenter={{ lat: latitude, lng: longitude }}
>
{_.map(this.props.areas, (a, i) => {
let lat = parseFloat(a.lat.replace('"','').replace('"',''));
let lon = parseFloat(a.lon.replace('"','').replace('"',''));
console.log(lat)
console.log(lon)
return (
<Marker key={i}
position={{ lat : lat, lng : lon }}
defaultAnimation={2}
/>
)
})}
</GoogleMap>
}
/>
</section>
)
}
}
MapContainer.propTypes = {
areas: PropTypes.array
}
export default MapContainer
检查门户网站的结果。
注意:如果Azure服务计划已更新,它将应用于服务计划中的所有WebApp。