sync_ali_ip/alipay/update_ali_ip.go

98 lines
2.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package alipay
import (
"encoding/json"
"errors"
"fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
ecs20140526 "github.com/alibabacloud-go/ecs-20140526/v4/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
"github.com/google/uuid"
"strings"
)
var (
_client *ecs20140526.Client
RegionId = "cn-hangzhou"
AccessKeyId = "LTAI5tS5pSkUwm6VURuaetxs"
AccessKeySecret = "iQFIO4MFa7tZ7HbHs0OXOaMDvMozM5"
)
func CreateClient() (_result *ecs20140526.Client, _err error) {
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
// 建议使用更安全的 STS 方式更多鉴权访问方式请参见https://help.aliyun.com/document_detail/378661.html。
config := &openapi.Config{
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
AccessKeyId: tea.String(AccessKeyId),
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
AccessKeySecret: tea.String(AccessKeySecret),
}
// Endpoint 请参考 https://api.aliyun.com/product/Ecs
config.Endpoint = tea.String("ecs-cn-hangzhou.aliyuncs.com")
_result = &ecs20140526.Client{}
_result, _err = ecs20140526.NewClient(config)
return _result, _err
}
func UpdateAliIp(groupId, ruleId, ip string) (_err error) {
if _client == nil {
client, e := CreateClient()
if e != nil {
return e
}
_client = client
}
newUUID, _ := uuid.NewUUID()
modifySecurityGroupRuleRequest := &ecs20140526.ModifySecurityGroupRuleRequest{
RegionId: tea.String(RegionId),
ClientToken: tea.String(newUUID.String()),
SecurityGroupId: tea.String(groupId),
SecurityGroupRuleId: tea.String(ruleId),
SourceCidrIp: tea.String(ip),
}
runtime := &util.RuntimeOptions{}
tryErr := func() (_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
// 复制代码运行请自行打印 API 的返回值
_, _err = _client.ModifySecurityGroupRuleWithOptions(modifySecurityGroupRuleRequest, runtime)
if _err != nil {
return _err
}
return nil
}()
if tryErr != nil {
var err = &tea.SDKError{}
var _t *tea.SDKError
if errors.As(tryErr, &_t) {
err = _t
}
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
fmt.Println(tea.StringValue(err.Message))
// 诊断地址
var data interface{}
d := json.NewDecoder(strings.NewReader(tea.StringValue(err.Data)))
e := d.Decode(&data)
if e != nil {
return e
}
if m, ok := data.(map[string]interface{}); ok {
recommend, _ := m["Recommend"]
fmt.Println(recommend)
}
_, _err = util.AssertAsString(err.Message)
if _err != nil {
return _err
}
}
return _err
}