"github.com/volcengine/volcengine-go-sdk/service/cbr"
"github.com/volcengine/volcengine-go-sdk/volcengine"
"github.com/volcengine/volcengine-go-sdk/volcengine/credentials"
"github.com/volcengine/volcengine-go-sdk/volcengine/session"
func deleteRecoveryPoint(client *cbr.CBR, recoveryPointId string) {
deleteRecoveryPointInput := &cbr.DeleteRecoveryPointInput{
RecoveryPointId: &recoveryPointId,
_, err := client.DeleteRecoveryPoint(deleteRecoveryPointInput)
describeRecoveryPointInput := &cbr.DescribeRecoveryPointsInput{
Filters: &cbr.FiltersForDescribeRecoveryPointsInput{
RecoveryPointId: &recoveryPointId,
describeRecoveryPointOutput, err := client.DescribeRecoveryPoints(describeRecoveryPointInput)
if len(describeRecoveryPointOutput.RecoveryPoints) == 0 {
fmt.Printf("Recovery point status:%s\n", *describeRecoveryPointOutput.RecoveryPoints[0].Status)
time.Sleep(5 * time.Second)
fmt.Printf("Recovery point deleted, recovery point id:%s", recoveryPointId)
config *volcengine.Config
ak = os.Getenv("VOLCENGINE_ACCESS_KEY_ID")
sk = os.Getenv("VOLCENGINE_ACCESS_KEY_SECRET")
ecsInstanceId := "your ecs instance id"
ecsInstanceName := "your ecs instance name"
recoveryPointName := "manualbackup_test"
config = volcengine.NewConfig().
WithCredentials(credentials.NewStaticCredentials(ak, sk, "")).
sess, err = session.NewSession(config)
createBackupSourceInput := &cbr.CreateBackupResourceInput{
InstanceId: volcengine.String(ecsInstanceId),
InstanceName: volcengine.String(ecsInstanceName),
ResourceType: volcengine.String("ECS"),
createBackupResourceOutput, err := client.CreateBackupResource(createBackupSourceInput)
resourceId := createBackupResourceOutput.ResourceId
deleteBackupResourceInput := &cbr.DeleteBackupResourceInput{
_, err := client.DeleteBackupResource(deleteBackupResourceInput)
fmt.Printf("Backup resource deleted, resource id:%s", *resourceId)
fmt.Printf("Backup resource created, resource id:%s", *resourceId)
createBackupJobInput := &cbr.CreateBackupJobInput{
RecoveryPointName: volcengine.String(recoveryPointName),
BackupType: volcengine.String("FULL"),
RetentionDay: volcengine.Int32(1),
Metadata: volcengine.String("{\"AutoBackupAllAttachedVolumes\":true}"),
createBackupJobOutput, err := client.CreateBackupJob(createBackupJobInput)
recoveryPointId := createBackupJobOutput.RecoveryPointId
deleteRecoveryPoint(client, *recoveryPointId)
for i := 0; i < 120; i++ {
describeBackupJobInput := &cbr.DescribeRecoveryPointsInput{
Filters: &cbr.FiltersForDescribeRecoveryPointsInput{
RecoveryPointId: recoveryPointId,
describeBackupJobOutput, err := client.DescribeRecoveryPoints(describeBackupJobInput)
if *describeBackupJobOutput.RecoveryPoints[0].Status == "AVAILABLE" {
fmt.Printf("Recovery point status:%s\n", *describeBackupJobOutput.RecoveryPoints[0].Status)
time.Sleep(5 * time.Second)
fmt.Printf("Backup completed, recovery point id:%s", *recoveryPointId)