首页 > 其他分享 >通过API操作阿里云ECS(开关机)

通过API操作阿里云ECS(开关机)

时间:2022-12-13 14:47:55浏览次数:77  
标签:开关机 err tea API ECS error go main com

场景:定时开关机ECS,节省模式关机

完整代码示例

官方链接:https://next.api.aliyun.com/api-tools/sdk/Ecs?version=2014-05-26&language=go-tea

关机:https://next.api.aliyun.com/api/Ecs/2014-05-26/StopInstance?params={%22InstanceId%22:%22i-rj9i16z4dxexrvs60nvf%22,%22StoppedMode%22:%22StopCharging%22,%22ForceStop%22:false}

 

// This file is auto-generated, don't edit it. Thanks.
package main

import (
"os"
ecs20140526 "github.com/alibabacloud-go/ecs-20140526/v3/client"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
)

/

  • 使用AK&SK初始化账号Client
  • @param accessKeyId
  • @param accessKeySecret
  • @return Client
  • @throws Exception
    /
    func CreateClient (accessKeyId
    string, accessKeySecret *string) (_result *ecs20140526.Client, _err error) {
    config := &openapi.Config{
    // 必填,您的 AccessKey ID
    AccessKeyId: accessKeyId,
    // 必填,您的 AccessKey Secret
    AccessKeySecret: accessKeySecret,
    }
    // 访问的域名
    config.Endpoint = tea.String("ecs-cn-hangzhou.aliyuncs.com")
    _result = &ecs20140526.Client{}
    _result, _err = ecs20140526.NewClient(config)
    return _result, _err
    }

func _main (args []*string) (_err error) {
// 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378661.html
client, _err := CreateClient(tea.String("accessKeyId"), tea.String("accessKeySecret"))
if _err != nil {
return _err
}

modifySecurityGroupRuleRequest := &ecs20140526.ModifySecurityGroupRuleRequest{
RegionId: tea.String("your_value"),
}
tryErr := func()(_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
// 复制代码运行请自行打印 API 的返回值
_, _err = client.ModifySecurityGroupRuleWithOptions(modifySecurityGroupRuleRequest, &util.RuntimeOptions{})
if _err != nil {
return _err
}

</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> nil

}()

if tryErr != nil {
var error = &tea.SDKError{}
if _t, ok := tryErr.(*tea.SDKError); ok {
error = _t
} else {
error.Message = tea.String(tryErr.Error())
}
// 如有需要,请打印 error
_, _err = util.AssertAsString(error.Message)
if _err != nil {
return _err
}
}
return _err
}

func main() {
err := _main(tea.StringSlice(os.Args[1:]))
if err != nil {
panic(err)
}
}

 

 

 

 

 

编译docker镜像

拷贝项目 conf.yaml go.mod go.sum main.go

编译Dockerfile
FROM golang:alpine AS builder

MAINTAINER xueyf
WORKDIR /go/xueyfProject
COPY . /go/xueyfProject
ENV GOPROXY https://goproxy.cn,direct
RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-w -s" main.go

FROM alpine AS runner
WORKDIR /go/kingProject
COPY --from=builder /go/xueyfProject/main .
COPY --from=builder /go/xueyfProject/conf.yaml ./conf.yaml

将时区设置为东八区

RUN echo "https://mirrors.aliyun.com/alpine/v3.8/main/" > /etc/apk/repositories
&& echo "https://mirrors.aliyun.com/alpine/v3.8/community/" >> /etc/apk/repositories
&& apk add --no-cache tzdata
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&& echo Asia/Shanghai > /etc/timezone
&& apk del tzdata
ENTRYPOINT ["./main"]

docker build -t harbor.xueyf.com/infra/aliyun_stop_ecs:v1 .

发布k8s cronjob

创建cm
kubectl create configmap aliyunecs --from-file=conf.yaml -n infra

发布

标签:开关机,err,tea,API,ECS,error,go,main,com
From: https://www.cnblogs.com/xuefy/p/16978701.html

相关文章

  • ECSHOP Foreach循环中定义变量 根据遍历进行判断(小技巧)
               <divclass="main"style="width:590px;height:442px;">            <!--{assignvar="i"value="1"} ......
  • 非maven项目使用阿里云短信服务API
    不说废话,先上代码单发/***单发短信*@paramphone手机号*@paramcode模板code*@return*@throwsClientException*/......
  • vue全局API
    ​​Vue.extend(options)​​参数:​​{Object}options​​用法:使用基础Vue构造器,创建一个“子类”。参数是一个包含组件选项的对象。​​data​​​ 选项是特例,需要注......
  • 对vue的api的研究
    ​​Vue.config​​ 是一个对象,包含Vue的全局配置。可以在启动应用之前修改下列属性:​​silent​​类型:​​boolean​​默认值:​​false​​用法:Vue.config.silent=tru......
  • 给ASP.NET Core WebAPI添加Swagger支持
    ASP.NETCoreWebAPI是开发WebAPI接口的有利武器,且由于拥有.NETCore的基因支持跨平台,是当前.NET中开发接口的有利武器。但一般来说WebAPI接口开发完毕后,在发布前还需要测......
  • 优雅的API接口设计
    前言在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台API接口,或者提供API接口给第三方平台调用。那么问题来了,如果设计一个优雅的API接口,能够满足:安全......
  • HarmonyOS实现登录页面(三)相关api的实现User类和ApiController类(IDEA)
    User类@Data使用@Data注解的主要作用是提高代码的简洁,使用这个注解可以省去代码中大量的get()、set()、toString()等方法;@AllArgsConstructor使用用这个注解修......
  • 【JAVA笔记】Java中的常用工具API简介、Object类的特点、JavaBean类重写Object类中的
    一、Java常用工具API简介   根据步骤查找API文档使用对应功能API网址:https://www.apiref.com/java11-zh/index.html什么是API?二、Object类的特点1.java.lan......
  • nginx https作网关配置webapi路由规则
    为何有这篇文章?因为我有多个小程序,分别调用不同的api站点,服务器只能安装一个https单域名证书。 1、原webapi接口部署完毕,接口地址比如​​http://www.zyiz.net/api/getarti......
  • Docker-Remote-API未授权认证-开启TLS认证
    0x01DockerRemoteAPI认证通过采用TLS/SSL证书来确保用户与API之间连接的安全。0x02建立证书授权中心本次环境使用Centos7.61.确认操作系统是否安装了opensslwhichopen......