成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何直接通過API進(jìn)行續(xù)費(fèi)查詢和續(xù)費(fèi)管理-創(chuàng)新互聯(lián)

這篇文章主要介紹了如何直接通過 API 進(jìn)行續(xù)費(fèi)查詢和續(xù)費(fèi)管理,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

我們提供的服務(wù)有:做網(wǎng)站、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、蔚縣ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的蔚縣網(wǎng)站制作公司

ECS 實(shí)例續(xù)費(fèi)

本文主要涉及如下關(guān)鍵功能:

按照過期時(shí)間查詢?cè)品?wù)器

續(xù)費(fèi)實(shí)例

查詢?cè)品?wù)器自動(dòng)續(xù)費(fèi)時(shí)間

設(shè)置云服務(wù)器自動(dòng)續(xù)費(fèi)時(shí)間

對(duì)于包年包月的云服務(wù)器,生命周期非常重要。如果云服務(wù)器資源不能按時(shí)續(xù)費(fèi),將可能導(dǎo)致服務(wù)器被鎖定甚至被釋放,從而影響業(yè)務(wù)持續(xù)性。API 幫助您及時(shí)了解和檢查資源的到期時(shí)間,并完成續(xù)費(fèi)充值功能。

本篇需關(guān)注如下 API:

查詢實(shí)例列表

續(xù)費(fèi)實(shí)例

查詢指定范圍內(nèi)到期的云服務(wù)器

查詢實(shí)例列表的 API,通過過濾參數(shù),您可以查詢一定時(shí)間范圍內(nèi)到期的實(shí)例信息。通過設(shè)置過濾參數(shù) ExpiredStartTime 和 ExpiredEndTime(時(shí)間參數(shù) 按照 ISO8601 標(biāo)準(zhǔn)表示,并需要使用 UTC 時(shí)間。 格式為:yyyy-MM-ddTHH:mmZ。) ,可以方便地查詢?cè)摃r(shí)間范圍內(nèi)到期的實(shí)例列表。如果需要通過安全組進(jìn)行過濾,只需加上安全組 ID 即可。

INSTANCE_EXPIRED_START_TIME_IN_UTC_STRING = '2017-01-22T00:00Z'
INSTANCE_EXPIRE_END_TIME_IN_UTC_STRING = '2017-01-28T00:00Z'
def describe_need_renew_instance(page_size=100, page_number=1, instance_id=None,
                                 check_need_renew=True, security_group_id=None):
    request = DescribeInstancesRequest()
    if check_need_renew is True:
        request.set_Filter3Key("ExpiredStartTime")
        request.set_Filter3Value(INSTANCE_EXPIRED_START_TIME_IN_UTC_STRING)
        request.set_Filter4Key("ExpiredEndTime")
        request.set_Filter4Value(INSTANCE_EXPIRE_END_TIME_IN_UTC_STRING)
    if instance_id is not None:
        request.set_InstanceIds(json.dumps([instance_id]))
    if security_group_id:
        request.set_SecurityGroupId(security_group_id)
    request.set_PageNumber(page_number)
    request.set_PageSize(page_size)
    return _send_request(request)

續(xù)費(fèi)云服務(wù)器

續(xù)費(fèi)實(shí)例只支持包年包月的服務(wù)器類型,不支持按量付費(fèi)的服務(wù)器,同時(shí)要求用戶必須支持賬號(hào)的余額支付或信用支付。執(zhí)行 API 的時(shí)候?qū)?zhí)行同步的扣費(fèi)和訂單生成。因此,執(zhí)行 API 的時(shí)候必須保證您的賬號(hào)有足夠的資金支持自動(dòng)扣費(fèi)。

def _renew_instance_action(instance_id, period='1'):
    request = RenewInstanceRequest()
    request.set_Period(period)
    request.set_InstanceId(instance_id)
    response = _send_request(request)
    logging.info('renew %s ready, output is %s ', instance_id, response)

續(xù)費(fèi)實(shí)例將會(huì)自動(dòng)完成扣費(fèi)。在完成續(xù)費(fèi)后,您可以根據(jù)InstanceId查詢實(shí)例的資源到期時(shí)間。由于 API 為異步任務(wù),查詢資源到期時(shí)間可能需要延遲 10 秒才會(huì)變化。

開啟云服務(wù)器自動(dòng)續(xù)費(fèi)

為了減少您的資源到期維護(hù)成本,針對(duì)包年包月的 ECS 實(shí)例,阿里云還推出了自動(dòng)續(xù)費(fèi)功能。 自動(dòng)續(xù)費(fèi)扣款日為服務(wù)器到期前第 9 天的 08:00:00。如果前一日?qǐng)?zhí)行自動(dòng)扣費(fèi)失敗,將會(huì)繼續(xù)下一日定時(shí)執(zhí)行,直到完成扣費(fèi)或者 9 天后到期資源鎖定。您只需要保證自己的賬號(hào)余額或者信用額度充足即可。

查詢自動(dòng)續(xù)費(fèi)設(shè)置

您可以通過 OpenAPI 來查詢和設(shè)置自動(dòng)續(xù)費(fèi)。該 API 僅支持包年包月的實(shí)例,按量付費(fèi)的實(shí)例執(zhí)行將會(huì)報(bào)錯(cuò)。查詢實(shí)例的自動(dòng)續(xù)費(fèi)狀態(tài)支持一次最多查詢 100 個(gè)包年包月的實(shí)例,多個(gè)實(shí)例 ID 以逗號(hào)連接。

DescribeInstanceAutoRenewAttribut 的入?yún)閷?shí)例 ID.

InstanceId:支持最多查詢 100 個(gè)包年包月的實(shí)例,多個(gè)實(shí)例 ID 以逗號(hào)連接。

python # check the instances is renew or not def describe_auto_renew(instance_ids, expected_auto_renew=True): describe_request = DescribeInstanceAutoRenewAttributeRequest() describe_request.set_InstanceId(instance_ids) response_detail = _send_request(request=describe_request) failed_instance_ids = '' if response_detail is not None: attributes = response_detail.get('InstanceRenewAttributes').get('InstanceRenewAttribute') if attributes: for item in attributes: auto_renew_status = item.get('AutoRenewEnabled') if auto_renew_status != expected_auto_renew: failed_instance_ids += item.get('InstanceId') + ',' describe_auto_renew('i-1111,i-2222')

返回內(nèi)容如下:

{"InstanceRenewAttributes":{"InstanceRenewAttribute":
[{"Duration":0,"InstanceId":"i-1111","AutoRenewEnabled":false},
{"Duration":0,"InstanceId":"i-2222","AutoRenewEnabled":false}]},
"RequestId":"71FBB7A5-C793-4A0D-B17E-D6B426EA746A"}

如果設(shè)置自動(dòng)續(xù)費(fèi),則返回的屬性AutoRenewEnabled為 true,否則返回 false。

設(shè)置和取消云服務(wù)器的自動(dòng)續(xù)費(fèi)

設(shè)置自動(dòng)續(xù)費(fèi)有三個(gè)入?yún)ⅲ?/p>

InstanceId: 支持最多查詢100個(gè)包年包月的實(shí)例,多個(gè)實(shí)例 ID 以逗號(hào)連接。

Duration:支持 1、2、3、6、12,單位為月。

AutoRenew:true/false, true為開啟自動(dòng)續(xù)費(fèi),false為取消自動(dòng)續(xù)費(fèi)。

python def setting_instance_auto_renew(instance_ids, auto_renew = True): logging.info('execute enable auto renew ' + instance_ids) request = ModifyInstanceAutoRenewAttributeRequest(); request.set_Duration(1); request.set_AutoRenew(auto_renew); request.set_InstanceId(instance_ids) _send_request(request)

執(zhí)行成功返回 Response 如下:

python {"RequestId":"7DAC9984-AAB4-43EF-8FC7-7D74C57BE46D"}

續(xù)費(fèi)成功后,您可以再執(zhí)行一次查詢。如果續(xù)費(fèi)成功將返回續(xù)費(fèi)時(shí)長以及是否開啟自動(dòng)續(xù)費(fèi)。

python {"InstanceRenewAttributes":{"InstanceRenewAttribute":[{"Duration":1,"InstanceId":"i-1111","AutoRenewEnabled":true},{"Duration":1,"InstanceId":"i-2222","AutoRenewEnabled":true}]},"RequestId":"7F4D14B0-D0D2-48C7-B310-B1DF713D4331"}

完整的代碼如下:

#  coding=utf-8
# if the python sdk is not install using 'sudo pip install aliyun-python-sdk-ecs'
# if the python sdk is install using 'sudo pip install --upgrade aliyun-python-sdk-ecs'
# make sure the sdk version is 2.1.2, you can use command 'pip show aliyun-python-sdk-ecs' to check
import json
import logging
from aliyunsdkcore import client
from aliyunsdkecs.request.v20140526.DescribeInstanceAutoRenewAttributeRequest import \
    DescribeInstanceAutoRenewAttributeRequest
from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest
from aliyunsdkecs.request.v20140526.ModifyInstanceAutoRenewAttributeRequest import \
    ModifyInstanceAutoRenewAttributeRequest
from aliyunsdkecs.request.v20140526.RenewInstanceRequest import RenewInstanceRequest
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S')
clt = client.AcsClient('Your Access Key Id', 'Your Access Key Secrect', 'cn-beijing')
# data format in UTC, only support passed the value for minute, seconds is not support.
INSTANCE_EXPIRED_START_TIME_IN_UTC_STRING = '2017-01-22T00:00Z'
INSTANCE_EXPIRE_END_TIME_IN_UTC_STRING = '2017-01-28T00:00Z'
def renew_job(page_size=100, page_number=1, check_need_renew=True, security_group_id=None):
    response = describe_need_renew_instance(page_size=page_size, page_number=page_number,
                                            check_need_renew=check_need_renew,
                                            security_group_id=security_group_id)
    response_list = response.get('Instances').get('Instance')
    logging.info("%s instances need to renew", str(response.get('TotalCount')))
    if response_list > 0:
        instance_ids = ''
        for item in response_list:
            instance_id = item.get('InstanceId')
            instance_ids += instance_id + ','
            renew_instance(instance_id=instance_id)
        logging.info("%s execute renew action ready", instance_ids)
def describe_need_renew_instance(page_size=100, page_number=1, instance_id=None,
                                 check_need_renew=True, security_group_id=None):
    request = DescribeInstancesRequest()
    if check_need_renew is True:
        request.set_Filter3Key("ExpiredStartTime")
        request.set_Filter3Value(INSTANCE_EXPIRED_START_TIME_IN_UTC_STRING)
        request.set_Filter4Key("ExpiredEndTime")
        request.set_Filter4Value(INSTANCE_EXPIRE_END_TIME_IN_UTC_STRING)
    if instance_id is not None:
        request.set_InstanceIds(json.dumps([instance_id]))
    if security_group_id:
        request.set_SecurityGroupId(security_group_id)
    request.set_PageNumber(page_number)
    request.set_PageSize(page_size)
    return _send_request(request)
# check the instances is renew or not
def describe_instance_auto_renew_setting(instance_ids, expected_auto_renew=True):
    describe_request = DescribeInstanceAutoRenewAttributeRequest()
    describe_request.set_InstanceId(instance_ids)
    response_detail = _send_request(request=describe_request)
    failed_instance_ids = ''
    if response_detail is not None:
        attributes = response_detail.get('InstanceRenewAttributes').get('InstanceRenewAttribute')
        if attributes:
            for item in attributes:
                auto_renew_status = item.get('AutoRenewEnabled')
                if auto_renew_status != expected_auto_renew:
                    failed_instance_ids += item.get('InstanceId') + ','
    if len(failed_instance_ids) > 0:
        logging.error("instance %s auto renew not match expect %s.", failed_instance_ids,
                      expected_auto_renew)
def setting_instance_auto_renew(instance_ids, auto_renew=True):
    logging.info('execute enable auto renew ' + instance_ids)
    request = ModifyInstanceAutoRenewAttributeRequest();
    request.set_Duration(1);
    request.set_AutoRenew(auto_renew);
    request.set_InstanceId(instance_ids)
    _send_request(request)
    describe_instance_auto_renew_setting(instance_ids, auto_renew)
# if using the instance id can be found means the instance is not renew successfully.
def check_instance_need_renew(instance_id):
    response = describe_need_renew_instance(instance_id=instance_id)
    if response is not None:
        return response.get('TotalCount') == 1
    return False
# 續(xù)費(fèi)一個(gè)實(shí)例一個(gè)月
def renew_instance(instance_id, period='1'):
    need_renew = check_instance_need_renew(instance_id)
    if need_renew:
        _renew_instance_action(instance_id=instance_id, period=period)
        # describe_need_renew_instance(instance_id=instance_id, check_need_renew=False)
def _renew_instance_action(instance_id, period='1'):
    request = RenewInstanceRequest()
    request.set_Period(period)
    request.set_InstanceId(instance_id)
    response = _send_request(request)
    logging.info('renew %s ready, output is %s ', instance_id, response)
def _send_request(request):
    request.set_accept_format('json')
    try:
        response_str = clt.do_action(request)
        logging.info(response_str)
        response_detail = json.loads(response_str)
        return response_detail
    except Exception as e:
        logging.error(e)
if __name__ == '__main__':
    logging.info("Renew ECS Instance by OpenApi!")
    # 查詢?cè)谥付ǖ臅r(shí)間范圍內(nèi)是否有需要續(xù)費(fèi)的實(shí)例。
    describe_need_renew_instance()
    # 續(xù)費(fèi)一個(gè)實(shí)例, 直接執(zhí)行扣費(fèi)
    renew_instance('i-1111')
    # 查詢實(shí)例自動(dòng)續(xù)費(fèi)的狀態(tài)
    # describe_instance_auto_renew_setting('i-1111,i-2222')
    # 設(shè)置實(shí)例自動(dòng)續(xù)費(fèi)
    # setting_instance_auto_renew('i-1111,i-2222')

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享如何直接通過 API 進(jìn)行續(xù)費(fèi)查詢和續(xù)費(fèi)管理內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司,關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司,詳細(xì)的解決方法等著你來學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)頁名稱:如何直接通過API進(jìn)行續(xù)費(fèi)查詢和續(xù)費(fèi)管理-創(chuàng)新互聯(lián)
URL鏈接:http://jinyejixie.com/article2/dispoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、商城網(wǎng)站電子商務(wù)、微信小程序、App開發(fā)、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
泗水县| 钟山县| 青龙| 仁化县| 江津市| 南昌市| 阿尔山市| 陵水| 渝北区| 南通市| 泽库县| 武夷山市| 香河县| 获嘉县| 乳源| 绥中县| 宣城市| 宾川县| 吴堡县| 盘锦市| 广东省| 阿拉尔市| 雷州市| 邮箱| 陈巴尔虎旗| 耿马| 杭锦后旗| 达尔| 紫云| 洛川县| 大关县| 西藏| 阜新| 简阳市| 中牟县| 鹿邑县| 永吉县| 石渠县| 博兴县| 岫岩| 江永县|