func resourceAwsGlacierVaultNotificationUpdate(glacierconn *glacier.Glacier, d *schema.ResourceData) error { if v, ok := d.GetOk("notification"); ok { settings := v.([]interface{}) if len(settings) > 1 { return fmt.Errorf("Only a single Notification Block is allowed for Glacier Vault") } else if len(settings) == 1 { s := settings[0].(map[string]interface{}) var events []*string for _, id := range s["events"].(*schema.Set).List() { events = append(events, aws.String(id.(string))) } _, err := glacierconn.SetVaultNotifications(&glacier.SetVaultNotificationsInput{ VaultName: aws.String(d.Id()), VaultNotificationConfig: &glacier.VaultNotificationConfig{ SNSTopic: aws.String(s["sns_topic"].(string)), Events: events, }, }) if err != nil { return fmt.Errorf("Error Updating Glacier Vault Notifications: %s", err.Error()) } } } else { _, err := glacierconn.DeleteVaultNotifications(&glacier.DeleteVaultNotificationsInput{ VaultName: aws.String(d.Id()), }) if err != nil { return fmt.Errorf("Error Removing Glacier Vault Notifications: %s", err.Error()) } } return nil }