In cloud computing, resource subscription is an important procedure which enables customers to elastically subscribe to IT resources based on their service requirements. Resource subscription can be divided into two categories, namely long-term reservation and on-demand subscription. Although customers need to pay the upfront fee for a long-term reservation contract, the usage charge of reserved resources is generally much cheaper than that of the on-demand subscription. To provide a better Internet service by using cloud resource, service operators will expect to make a trade-off between the amount of long-term reserved resources and that of on-demand subscribed resources. Therefore, how to properly make resource provision plans is a challenging issue. In this paper, we present a two-phase algorithm for service operators to minimize their service provision cost. In the first phase, we propose a mathematical formulae to compute the optimal amount of long-term reserved resources. In the second phase, we use the Kalman filter to predict resource demand and adaptively change the subscribed on-demand resources such that provision cost could be minimized. We evaluated our solution by using real-world data. Our numerical results indicated that the proposed mechanisms are able to significantly reduce the provision cost.