Cloud computing is an emerging paradigm that allows the on-demand delivering of software, hardware, and data as services. It has attracted a lot of attention recently due to the increasing demand for high performance computing and storage. Resource allocation is one of the most important challenges in the cloud computing system, especially when the clients have some Service Level Agreements (SLAs) and the total profit depends on how the system can meet these SLAs. A set of multiple cloud service providers (CSPs) in the cloud, such as Google or Amazon, may support the similar type of application, and therefore, service requests generated from the network edges are free to be dispatched to any CSP in the set. This paper considers the problem of SLA-based resource provisioning and management among different CSPs. Each CSP owns a set of potentially heterogeneous servers supporting a common application type, and each performs resource allocation in these servers for request processing. In the cloud, a central request dispatcher allocates service requests to different servers (belonging to potentially different CSPs) based on the amounts of allocated resources in those servers. Each CSP optimizes its own profit, which is the total revenue obtained from servicing the clients subtracted by the total energy cost. The total revenue depends on the average service request response time as specified in the SLAs. The resource allocation problem among multiple CSPs forms a competitive normal-form game, since the payoff (profit) of each CSP depends not only on its own resource allocation results but also on the actions of the other CSPs. The existence and uniqueness of Nash equilibrium in this game are proved. Each CSP will find its optimal strategy at the Nash equilibrium point using the convex optimization technique. Experimental results demonstrate the effectiveness of the game theoretic resource provisioning framework for the CSPs.