이 글의 내용은 API를 통해 직접 갱신 쿼리 및 갱신 관리를 수행하는 방법에 대한 내용입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
ECS 인스턴스 갱신
이 기사에서는 주로 다음과 같은 주요 기능을 다룹니다.
만료 시간에 따라 클라우드 서버 쿼리
인스턴스 갱신
클라우드 서버 자동 갱신 시간 쿼리
클라우드 설정 서버 자동 갱신 시기
연간, 월간 클라우드 서버는 라이프사이클이 매우 중요합니다. 클라우드 서버 자원을 제때 갱신하지 못하면 서버가 잠기거나 심지어 해제될 수 있어 비즈니스 연속성에 영향을 미칠 수 있습니다. API를 사용하면 자원의 만료 시간을 적시에 이해하고 확인하고 갱신 및 재충전 기능을 완료할 수 있습니다.
이 문서에서는 다음 API에 주의해야 합니다.
인스턴스 목록 쿼리
인스턴스 갱신
지정된 범위 내에서 만료된 클라우드 서버를 쿼리
인스턴스 목록을 쿼리하는 API입니다. 특정 시간 범위 내에 만료되는 인스턴스 정보를 조회할 수 있습니다. 필터 매개변수 ExpiredStartTime 및 ExpiredEndTime(시간 매개변수는 ISO8601 표준에 따라 표현되며 UTC 시간을 사용해야 합니다. 형식은 yyyy-MM-ddTHH:mmZ입니다.)을 설정하면 해당 인스턴스 목록을 쉽게 쿼리할 수 있습니다. 이 기간 내에 만료됩니다. 보안 그룹별로 필터링해야 하는 경우 보안 그룹 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)
클라우드 서버 갱신
갱신 인스턴스는 연간 및 월간 서버 유형만 지원하며 종량제 서버를 지원하지 않습니다. 또한 사용자는 계정 잔액 결제 또는 신용 결제를 지원해야 합니다. API를 실행할 때 동기식 공제 및 주문 생성이 수행됩니다. 따라서 API를 실행할 때 자동 공제를 지원할 만큼 계정에 충분한 자금이 있는지 확인해야 합니다.
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)
갱신 인스턴스는 자동으로 차감됩니다. 갱신이 완료된 후 InstanceId를 기준으로 인스턴스의 리소스 만료 시간을 쿼리할 수 있습니다. API는 비동기 작업이므로 쿼리 리소스 만료 시간이 변경되는 데 10초가 걸릴 수 있습니다.
클라우드 서버 자동 갱신 활성화
리소스 만료 유지 관리 비용을 줄이기 위해 Alibaba Cloud는 연간 및 월간 ECS 인스턴스에 대한 자동 갱신 기능도 출시했습니다. 자동 갱신 및 차감 일자는 서버 만료 전 9일 08시입니다. 전날 자동 차감이 실패하면 차감이 완료되거나 9일 후 리소스 잠금이 만료될 때까지 다음 날 정기적으로 계속 실행됩니다. 계정 잔액이나 신용 한도가 충분한지 확인하기만 하면 됩니다.
자동 갱신 설정 조회
OpenAPI를 통해 자동 갱신을 조회하고 설정할 수 있습니다. 이 API는 연간 및 월간 구독 인스턴스만 지원하며, 종량제 인스턴스를 실행할 때 오류가 보고됩니다. 인스턴스의 자동 갱신 상태를 쿼리하면 한 번에 최대 100개의 연간 및 월간 구독 인스턴스를 쿼리할 수 있습니다. 여러 인스턴스 ID는 쉼표로 연결됩니다.
DescribeInstanceAutoRenewAttribut의 입력 매개변수는 인스턴스 ID입니다.
InstanceId: 최대 100개의 연간 및 월별 인스턴스 쿼리를 지원합니다. 여러 인스턴스 ID가 쉼표로 연결됩니다.
python # 인스턴스가 갱신되었는지 확인 def explain_auto_renew(instance_ids, Expect_auto_renew=True): explain_request = DescriptionInstanceAutoRenewAttributeRequest() explain_request.set_InstanceId(instance_ids) response_detail = _send_request(request=describe_request) failed_instance_ids = '' response_detail이 None이 아닌 경우: 속성 = response_detail.get('InstanceRenewAttributes').get('InstanceRenewAttribute') if 속성: 속성의 항목: auto_renew_status = item.get('AutoRenewEnabled') if auto_renew_status != Expect_auto_renew: failed_instance_ids += item.get('InstanceId) ') + ',' explain_auto_renew('i-1111,i-2222')
반환되는 내용은 다음과 같습니다.
{"InstanceRenewAttributes":{"InstanceRenewAttribute": [{"Duration":0,"InstanceId":"i-1111","AutoRenewEnabled":false}, {"Duration":0,"InstanceId":"i-2222","AutoRenewEnabled":false}]}, "RequestId":"71FBB7A5-C793-4A0D-B17E-D6B426EA746A"}
자동 갱신이 설정된 경우 반환되는 AutoRenewEnabled 속성은 true이고, 그렇지 않으면 false를 반환합니다.
클라우드 서버 자동 갱신 설정 및 취소
자동 갱신 설정을 위한 세 가지 입력 매개변수가 있습니다.
InstanceId: 최대 100개의 연간 및 월별 인스턴스 쿼리를 지원합니다. 여러 인스턴스 ID가 쉼표로 연결됩니다.
기간: 1, 2, 3, 6, 12를 지원하며 단위는 월입니다.
자동 갱신: true/false, true는 자동 갱신을 켜는 것을 의미하고, false는 자동 갱신을 취소한다는 것을 의미합니다.
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)
执行成功返回 Response 如下:
python {"RequestId":"7DAC9984-AAB4-43EF-8FC7-7D74C57BE46D"}
续费成功后,您可以再执行一次查询。如果续费成功将返回续费时长以及是否开启自动续费。
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 # 续费一个实例一个月 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!") # 查询在指定的时间范围内是否有需要续费的实例。 describe_need_renew_instance() # 续费一个实例, 直接执行扣费 renew_instance('i-1111') # 查询实例自动续费的状态 # describe_instance_auto_renew_setting('i-1111,i-2222') # 设置实例自动续费 # setting_instance_auto_renew('i-1111,i-2222')
위 내용은 API를 통해 직접 갱신 조회 및 갱신 관리를 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Linux 운영을 마스터하는 이유는 광범위한 응용 프로그램 시나리오와 강력한 기능 때문입니다. 1) Linux는 개발자, 시스템 관리자 및 기술 애호가에게 적합하며 서버 관리, 임베디드 시스템 및 컨테이너화 기술에 사용됩니다. 2) Learning Linux는 파일 시스템 구조, 쉘 사용, 사용자 권한 관리 및 프로세스 관리로 시작할 수 있습니다. 3) Linux 명령 줄은 핵심 도구로 LS, MKDIR, CD 등과 같은 쉘을 통해 명령을 실행하고 리디렉션 및 파이프 라인 작업을 지원합니다. 4) 고급 사용법에는 TAR 명령 및 조건부 판단을 사용한 백업 스크립트와 같은 자동 스크립트 작성이 포함됩니다. 5) 일반적인 오류에는 Echo, Set-X 및 $?를 통해 디버깅 할 수있는 권한, 경로 및 구문 문제가 포함됩니다. 6) 성능 최적화 제안

Linux 시스템의 5 개의 기둥은 다음과 같습니다. 1. Kernel, 2. System Library, 3. Shell, 4. 파일 시스템, 5. 시스템 도구. 커널은 하드웨어 리소스를 관리하고 기본 서비스를 제공합니다. 시스템 라이브러리는 애플리케이션에 대한 사전 컴파일 된 기능을 제공합니다. 쉘은 사용자가 시스템과 상호 작용할 수있는 인터페이스입니다. 파일 시스템은 데이터를 구성하고 저장합니다. 시스템 도구는 시스템 관리 및 유지 보수에 사용됩니다.

Linux 시스템에서 시작시 특정 키를 누르거나 "sudosystemctlrescue"와 같은 명령을 사용하여 유지 보수 모드를 입력 할 수 있습니다. 유지 보수 모드는 관리자가 파일 시스템 수리, 비밀번호 재설정, 보안 취약성 패치 등과 같은 간섭없이 시스템 유지 관리 및 문제 해결을 수행 할 수 있습니다.

Linux 초보자는 파일 관리, 사용자 관리 및 네트워크 구성과 같은 기본 작업을 마스터해야합니다. 1) 파일 관리 : mkdir, touch, ls, rm, mv 및 cp 명령을 사용하십시오. 2) 사용자 관리 : userAdd, passwd, userdel 및 usermod 명령을 사용합니다. 3) 네트워크 구성 : ifconfig, echo 및 ufw 명령을 사용하십시오. 이러한 운영은 Linux 시스템 관리의 기초이며, 마스터하면 시스템을 효과적으로 관리 할 수 있습니다.

이 기사는 Linux의 Sudo 권한을 관리하는 방법, 보안 및 보안 모범 사례를 포함하여 Linux의 Sudo 권한을 관리하는 방법을 설명합니다. 주요 초점은 /etc /sudoers를 안전하게 편집하고 액세스를 제한하는 데 중점을 둡니다. 문자 수 : 159

이 기사는 Google Authenticator를 사용하여 Linux에서 SSH에 대한 2 단계 인증 (2FA) 설정, 설치, 구성 및 문제 해결 단계에 대한 가이드를 제공합니다. Enhanced SEC와 같은 2FA의 보안 이점을 강조합니다.

이 기사는 Linux 시스템 성능을 모니터링하기위한 Top, HTOP 및 VMSTAT 사용에 대해 설명하고 효과적인 시스템 관리를위한 고유 한 기능 및 사용자 정의 옵션을 자세히 설명합니다.

기사는 APT, YUM 및 DNF를 사용하여 Linux의 소프트웨어 패키지 관리, 설치, 업데이트 및 제거를 다루는 것에 대해 설명합니다. 다양한 분포에 대한 기능과 적합성을 비교합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.
