func cloudTrailSetLogging(conn *cloudtrail.CloudTrail, enabled bool, id string) error { if enabled { log.Printf( "[DEBUG] Starting logging on CloudTrail (%s)", id) StartLoggingOpts := &cloudtrail.StartLoggingInput{ Name: aws.String(id), } if _, err := conn.StartLogging(StartLoggingOpts); err != nil { return fmt.Errorf( "Error starting logging on CloudTrail (%s): %s", id, err) } } else { log.Printf( "[DEBUG] Stopping logging on CloudTrail (%s)", id) StopLoggingOpts := &cloudtrail.StopLoggingInput{ Name: aws.String(id), } if _, err := conn.StopLogging(StopLoggingOpts); err != nil { return fmt.Errorf( "Error stopping logging on CloudTrail (%s): %s", id, err) } } return nil }
// setTags is a helper to set the tags for a resource. It expects the // tags field to be named "tags" func setTagsCloudtrail(conn *cloudtrail.CloudTrail, d *schema.ResourceData) error { if d.HasChange("tags") { oraw, nraw := d.GetChange("tags") o := oraw.(map[string]interface{}) n := nraw.(map[string]interface{}) create, remove := diffTagsCloudtrail(tagsFromMapCloudtrail(o), tagsFromMapCloudtrail(n)) // Set tags if len(remove) > 0 { input := cloudtrail.RemoveTagsInput{ ResourceId: aws.String(d.Get("arn").(string)), TagsList: remove, } log.Printf("[DEBUG] Removing CloudTrail tags: %s", input) _, err := conn.RemoveTags(&input) if err != nil { return err } } if len(create) > 0 { input := cloudtrail.AddTagsInput{ ResourceId: aws.String(d.Get("arn").(string)), TagsList: create, } log.Printf("[DEBUG] Adding CloudTrail tags: %s", input) _, err := conn.AddTags(&input) if err != nil { return err } } } return nil }
func cloudTrailGetLoggingStatus(conn *cloudtrail.CloudTrail, id *string) (bool, error) { GetTrailStatusOpts := &cloudtrail.GetTrailStatusInput{ Name: id, } resp, err := conn.GetTrailStatus(GetTrailStatusOpts) if err != nil { return false, fmt.Errorf("Error retrieving logging status of CloudTrail (%s): %s", *id, err) } return *resp.IsLogging, err }