go 连接阿里云ram
connect.go
package ram import ( openapi "github.com/alibabacloud-go/darabonba-openapi/client" ram20150501 "github.com/alibabacloud-go/ram-20150501/client" "github.com/alibabacloud-go/tea/tea" "src/goProject1/config" ) var ( addr string AccessKey_ID string AccessKey_Secret string client *ram20150501.Client ) func init() { addr = "ram.aliyuncs.com" AccessKey_ID = config.ENV["alibaba_mq"]["AccessKey_ID"] AccessKey_Secret = config.ENV["alibaba_mq"]["AccessKey_Secret"] client, _ = CreateClient(tea.String(AccessKey_ID), tea.String(AccessKey_Secret)) //_, _ = applyToken() } func CreateClient(accessKeyId *string, accessKeySecret *string) (_result *ram20150501.Client, _err error) { config_ := &openapi.Config{ // 您的AccessKey ID AccessKeyId: accessKeyId, // 您的AccessKey Secret AccessKeySecret: accessKeySecret, } // 访问的域名 config_.Endpoint = tea.String(addr) _result = &ram20150501.Client{} _result, _err = ram20150501.NewClient(config_) return _result, _err }
group.go
package ram import ( ram20150501 "github.com/alibabacloud-go/ram-20150501/client" "github.com/alibabacloud-go/tea/tea" ) func CreateGroup(groupName, comments string) (*ram20150501.CreateGroupResponse, error) { createGroupRequest := &ram20150501.CreateGroupRequest{ GroupName: tea.String(groupName), Comments: tea.String(comments), } // 复制代码运行请自行打印 API 的返回值 return client.CreateGroup(createGroupRequest) } func GetGroup(groupName string) (*ram20150501.GetGroupResponse, error) { getGroupRequest := &ram20150501.GetGroupRequest{ GroupName: tea.String(groupName), } // 复制代码运行请自行打印 API 的返回值 return client.GetGroup(getGroupRequest) } func UpdateGroup(groupName, newGroupName, newComments string) (*ram20150501.UpdateGroupResponse, error) { updateGroupRequest := &ram20150501.UpdateGroupRequest{ GroupName: tea.String(groupName), NewGroupName: tea.String(newGroupName), NewComments: tea.String(newComments), } // 复制代码运行请自行打印 API 的返回值 return client.UpdateGroup(updateGroupRequest) } func ListGroupsWithNone() (*ram20150501.ListGroupsResponse, error) { listGroupsRequest := &ram20150501.ListGroupsRequest{} // 复制代码运行请自行打印 API 的返回值 return client.ListGroups(listGroupsRequest) } func ListGroups(marker string, maxItems int32) (*ram20150501.ListGroupsResponse, error) { listGroupsRequest := &ram20150501.ListGroupsRequest{ Marker: tea.String(marker), MaxItems: tea.Int32(maxItems), } // 复制代码运行请自行打印 API 的返回值 return client.ListGroups(listGroupsRequest) } func AddUserToGroup(userName, groupName string) (*ram20150501.AddUserToGroupResponse, error) { addUserToGroupRequest := &ram20150501.AddUserToGroupRequest{ UserName: tea.String(userName), GroupName: tea.String(groupName), } // 复制代码运行请自行打印 API 的返回值 return client.AddUserToGroup(addUserToGroupRequest) } func RemoveUserFromGroup(userName, groupName string) (*ram20150501.RemoveUserFromGroupResponse, error) { removeUserFromGroupRequest := &ram20150501.RemoveUserFromGroupRequest{ UserName: tea.String(userName), GroupName: tea.String(groupName), } // 复制代码运行请自行打印 API 的返回值 return client.RemoveUserFromGroup(removeUserFromGroupRequest) } func ListGroupsForUser(userName string) (*ram20150501.ListGroupsForUserResponse, error) { listGroupsForUserRequest := &ram20150501.ListGroupsForUserRequest{ UserName: tea.String(userName), } // 复制代码运行请自行打印 API 的返回值 return client.ListGroupsForUser(listGroupsForUserRequest) } func ListUsersForGroup(groupName, marker string, maxItems int32) (*ram20150501.ListUsersForGroupResponse, error) { listUsersForGroupRequest := &ram20150501.ListUsersForGroupRequest{ GroupName: tea.String(groupName), Marker: tea.String(marker), MaxItems: tea.Int32(maxItems), } // 复制代码运行请自行打印 API 的返回值 return client.ListUsersForGroup(listUsersForGroupRequest) } func ListUsersForGroupWithNone(groupName string) (*ram20150501.ListUsersForGroupResponse, error) { listUsersForGroupRequest := &ram20150501.ListUsersForGroupRequest{ GroupName: tea.String(groupName), } // 复制代码运行请自行打印 API 的返回值 return client.ListUsersForGroup(listUsersForGroupRequest) } func DeleteGroup(groupName string) (*ram20150501.DeleteGroupResponse, error) { deleteGroupRequest := &ram20150501.DeleteGroupRequest{ GroupName: tea.String(groupName), } // 复制代码运行请自行打印 API 的返回值 return client.DeleteGroup(deleteGroupRequest) }
role.go
package ram import ( ram20150501 "github.com/alibabacloud-go/ram-20150501/client" "github.com/alibabacloud-go/tea/tea" ) func CreateRole(roleName, description, assumeRolePolicyDocument string, maxSessionDuration int64) (*ram20150501.CreateRoleResponse, error) { createRoleRequest := &ram20150501.CreateRoleRequest{ //指定角色名。 //长度为1~64个字符,可包含英文字母、数字、点号(.)和短横线(-)。 RoleName: tea.String(roleName), //角色描述。 //长度为1~1024个字符。 Description: tea.String(description), //一个策略文本。指定允许扮演该角色的一个或多个主体,这个主体可以是阿里云账号、阿里云服务或身份提供商。 //RAM用户不能扮演可信实体为阿里云服务的RAM角色。 AssumeRolePolicyDocument: tea.String(assumeRolePolicyDocument), //角色最大会话时间。 //取值范围:3600秒~43200秒。默认值:3600秒。 //取值为空时将采用默认值。 MaxSessionDuration: tea.Int64(maxSessionDuration), } // 复制代码运行请自行打印 API 的返回值 return client.CreateRole(createRoleRequest) } func GetRole(roleName string) (*ram20150501.GetRoleResponse, error) { getRoleRequest := &ram20150501.GetRoleRequest{ RoleName: tea.String(roleName), } // 复制代码运行请自行打印 API 的返回值 return client.GetRole(getRoleRequest) } func UpdateRole(roleName, newAssumeRolePolicyDocument string, newMaxSessionDuration int64) (*ram20150501.UpdateRoleResponse, error) { updateRoleRequest := &ram20150501.UpdateRoleRequest{ RoleName: tea.String(roleName), NewAssumeRolePolicyDocument: tea.String(newAssumeRolePolicyDocument), NewMaxSessionDuration: tea.Int64(newMaxSessionDuration), } // 复制代码运行请自行打印 API 的返回值 return client.UpdateRole(updateRoleRequest) } func ListRoles(marker string, maxItems int32) (*ram20150501.ListRolesResponse, error) { listRolesRequest := &ram20150501.ListRolesRequest{ Marker: tea.String(marker), MaxItems: tea.Int32(maxItems), } // 复制代码运行请自行打印 API 的返回值 return client.ListRoles(listRolesRequest) } func ListRolesWithNone() (*ram20150501.ListRolesResponse, error) { listRolesRequest := &ram20150501.ListRolesRequest{} // 复制代码运行请自行打印 API 的返回值 return client.ListRoles(listRolesRequest) } func DeleteRole(roleName string) (*ram20150501.DeleteRoleResponse, error) { deleteRoleRequest := &ram20150501.DeleteRoleRequest{ RoleName: tea.String(roleName), } // 复制代码运行请自行打印 API 的返回值 return client.DeleteRole(deleteRoleRequest) }
user.go
package ram import ( ram20150501 "github.com/alibabacloud-go/ram-20150501/client" "github.com/alibabacloud-go/tea/tea" ) func GetRamUserName(userName, displayName, mobilePhone, email, comments string) string { res, err := GetUserInfo(userName) if err != nil { res2, err := CreateUser(userName, displayName, mobilePhone, email, comments) if err != nil { return "" } return *res2.Body.User.UserName } return *res.Body.User.UserName } func CreateUser(userName, displayName, mobilePhone, email, comments string) (*ram20150501.CreateUserResponse, error) { createUserRequest := &ram20150501.CreateUserRequest{ UserName: tea.String(userName), //RAM用户名称 DisplayName: tea.String(displayName), //RAM用户显示名称 MobilePhone: tea.String(mobilePhone), //RAM用户的手机号 Email: tea.String(email), //RAM用户的邮箱 Comments: tea.String(comments), //备注 } return client.CreateUser(createUserRequest) } func GetUserInfo(userName string) (*ram20150501.GetUserResponse, error) { getUserRequest := &ram20150501.GetUserRequest{ UserName: tea.String(userName), } return client.GetUser(getUserRequest) } func UpdateUser(userName, newUserName, newDisplayName, newMobilePhone, newEmail, newComments string) (*ram20150501.UpdateUserResponse, error) { updateUserRequest := &ram20150501.UpdateUserRequest{ UserName: tea.String(userName), NewUserName: tea.String(newUserName), NewDisplayName: tea.String(newDisplayName), NewMobilePhone: tea.String(newMobilePhone), NewEmail: tea.String(newEmail), NewComments: tea.String(newComments), } return client.UpdateUser(updateUserRequest) } func DeleteUser(userName string) (*ram20150501.DeleteUserResponse, error) { deleteUserRequest := &ram20150501.DeleteUserRequest{ UserName: tea.String(userName), } // 复制代码运行请自行打印 API 的返回值 return client.DeleteUser(deleteUserRequest) } func ListUser(maker string, maxItems int32) (*ram20150501.ListUsersResponse, error) { listUsersRequest := &ram20150501.ListUsersRequest{ Marker: tea.String(maker), //当请求的返回结果被截断时 MaxItems: tea.Int32(maxItems), //返回结果的条数 } // 复制代码运行请自行打印 API 的返回值 return client.ListUsers(listUsersRequest) } func ListUserWithNone() (*ram20150501.ListUsersResponse, error) { listUsersRequest := &ram20150501.ListUsersRequest{} // 复制代码运行请自行打印 API 的返回值 return client.ListUsers(listUsersRequest) } //为一个RAM用户启用Web控制台登录 func SetUserLoginProfile(userName, password string, passwordResetRequired, MFABindRequired bool) (*ram20150501.CreateLoginProfileResponse, error) { createLoginProfileRequest := &ram20150501.CreateLoginProfileRequest{ UserName: tea.String(userName), Password: tea.String(password), PasswordResetRequired: tea.Bool(passwordResetRequired), // 指定用户在登录时是否需要修改密码。默认为:false。 MFABindRequired: tea.Bool(MFABindRequired), //指定用户在下次登录时是否必须绑定多因素认证器。默认为:false } // 复制代码运行请自行打印 API 的返回值 return client.CreateLoginProfile(createLoginProfileRequest) } //查看一个RAM用户的登录配置 func GetUserLoginProfileInfo(userName string) (*ram20150501.GetLoginProfileResponse, error) { getLoginProfileRequest := &ram20150501.GetLoginProfileRequest{ UserName: tea.String(userName), } // 复制代码运行请自行打印 API 的返回值 return client.GetLoginProfile(getLoginProfileRequest) } //关闭RAM用户登录Web控制台功能 func DeleteUserLoginProfile(userName string) (*ram20150501.DeleteLoginProfileResponse, error) { deleteLoginProfileRequest := &ram20150501.DeleteLoginProfileRequest{ UserName: tea.String(userName), } // 复制代码运行请自行打印 API 的返回值 return client.DeleteLoginProfile(deleteLoginProfileRequest) } //修改用户的登录配置 func UpdateUserLoginProfile(userName, password string, passwordResetRequired, MFABindRequired bool) (*ram20150501.UpdateLoginProfileResponse, error) { updateLoginProfileRequest := &ram20150501.UpdateLoginProfileRequest{ UserName: tea.String(userName), Password: tea.String(password), PasswordResetRequired: tea.Bool(passwordResetRequired), MFABindRequired: tea.Bool(MFABindRequired), } // 复制代码运行请自行打印 API 的返回值 return client.UpdateLoginProfile(updateLoginProfileRequest) } //为RAM用户创建访问密钥 func CreateUserLoginSecret(userName string) (*ram20150501.CreateAccessKeyResponse, error) { createAccessKeyRequest := &ram20150501.CreateAccessKeyRequest{ UserName: tea.String(userName), } // 复制代码运行请自行打印 API 的返回值 return client.CreateAccessKey(createAccessKeyRequest) } //更新RAM用户访问密钥的状态 func UpdateUserLoginSecret(userName, userAccessKeyId, status string) (*ram20150501.UpdateAccessKeyResponse, error) { updateAccessKeyRequest := &ram20150501.UpdateAccessKeyRequest{ UserName: tea.String(userName), UserAccessKeyId: tea.String(userAccessKeyId), Status: tea.String(status), } // 复制代码运行请自行打印 API 的返回值 return client.UpdateAccessKey(updateAccessKeyRequest) } //删除RAM用户的访问密钥 func DeleteUserLoginSecret(userName, userAccessKeyId string) (*ram20150501.DeleteAccessKeyResponse, error) { deleteAccessKeyRequest := &ram20150501.DeleteAccessKeyRequest{ UserName: tea.String(userName), UserAccessKeyId: tea.String(userAccessKeyId), } // 复制代码运行请自行打印 API 的返回值 return client.DeleteAccessKey(deleteAccessKeyRequest) } //列出指定用户的访问密钥 func ListUserLoginSecret(userName string) (*ram20150501.ListAccessKeysResponse, error) { listAccessKeysRequest := &ram20150501.ListAccessKeysRequest{ UserName: tea.String(userName), } // 复制代码运行请自行打印 API 的返回值 return client.ListAccessKeys(listAccessKeysRequest) } //创建多因素认证设备 func CreateVirtualMFADevice(virtualMFADeviceName string) (*ram20150501.CreateVirtualMFADeviceResponse, error) { createVirtualMFADeviceRequest := &ram20150501.CreateVirtualMFADeviceRequest{ VirtualMFADeviceName: tea.String(virtualMFADeviceName), } // 复制代码运行请自行打印 API 的返回值 return client.CreateVirtualMFADevice(createVirtualMFADeviceRequest) } //列出多因素认证设备 func ListVirtualMFADevice() (*ram20150501.ListVirtualMFADevicesResponse, error) { return client.ListVirtualMFADevices() } //删除多因素认证设备 func DeleteVirtualMFADevice(serialNumber string) (*ram20150501.DeleteVirtualMFADeviceResponse, error) { deleteVirtualMFADeviceRequest := &ram20150501.DeleteVirtualMFADeviceRequest{ SerialNumber: tea.String(serialNumber), } // 复制代码运行请自行打印 API 的返回值 return client.DeleteVirtualMFADevice(deleteVirtualMFADeviceRequest) } //绑定多因素认证设备 func BindMFADevice(serialNumber, userName, authenticationCode1, authenticationCode2 string) (*ram20150501.BindMFADeviceResponse, error) { bindMFADeviceRequest := &ram20150501.BindMFADeviceRequest{ SerialNumber: tea.String(serialNumber), UserName: tea.String(userName), AuthenticationCode1: tea.String(authenticationCode1), AuthenticationCode2: tea.String(authenticationCode2), } // 复制代码运行请自行打印 API 的返回值 return client.BindMFADevice(bindMFADeviceRequest) } //解绑多因素认证设备 func UnbindMFADevice(userName string) (*ram20150501.UnbindMFADeviceResponse, error) { unbindMFADeviceRequest := &ram20150501.UnbindMFADeviceRequest{ UserName: tea.String(userName), } // 复制代码运行请自行打印 API 的返回值 return client.UnbindMFADevice(unbindMFADeviceRequest) } //获取多因素认证设备信息 func GetUserMFAInfo(userName string) (*ram20150501.GetUserMFAInfoResponse, error) { getUserMFAInfoRequest := &ram20150501.GetUserMFAInfoRequest{ UserName: tea.String(userName), } // 复制代码运行请自行打印 API 的返回值 return client.GetUserMFAInfo(getUserMFAInfoRequest) } //修改RAM用户密码 func ChangePassword(oldPassword, newPassword string) (*ram20150501.ChangePasswordResponse, error) { changePasswordRequest := &ram20150501.ChangePasswordRequest{ OldPassword: tea.String(oldPassword), NewPassword: tea.String(newPassword), } // 复制代码运行请自行打印 API 的返回值 return client.ChangePassword(changePasswordRequest) }