diff --git a/builtin/providers/aws/import_aws_db_instance_test.go b/builtin/providers/aws/import_aws_db_instance_test.go index 8079d117b..7af427fd8 100644 --- a/builtin/providers/aws/import_aws_db_instance_test.go +++ b/builtin/providers/aws/import_aws_db_instance_test.go @@ -23,7 +23,10 @@ func TestAccAWSDBInstance_importBasic(t *testing.T) { ImportState: true, ImportStateVerify: true, ImportStateVerifyIgnore: []string{ - "password", "skip_final_snapshot"}, + "password", + "skip_final_snapshot", + "final_snapshot_identifier", + }, }, }, }) diff --git a/builtin/providers/aws/resource_aws_db_instance.go b/builtin/providers/aws/resource_aws_db_instance.go index 8dc6f115b..c7615161b 100644 --- a/builtin/providers/aws/resource_aws_db_instance.go +++ b/builtin/providers/aws/resource_aws_db_instance.go @@ -23,7 +23,7 @@ func resourceAwsDbInstance() *schema.Resource { Update: resourceAwsDbInstanceUpdate, Delete: resourceAwsDbInstanceDelete, Importer: &schema.ResourceImporter{ - State: schema.ImportStatePassthrough, + State: resourceAwsDbInstanceImport, }, Schema: map[string]*schema.Schema{ @@ -757,11 +757,8 @@ func resourceAwsDbInstanceDelete(d *schema.ResourceData, meta interface{}) error opts := rds.DeleteDBInstanceInput{DBInstanceIdentifier: aws.String(d.Id())} - skipFinalSnapshot, exists := d.GetOk("skip_final_snapshot") - if !exists { - skipFinalSnapshot = true - } - opts.SkipFinalSnapshot = aws.Bool(skipFinalSnapshot.(bool)) + skipFinalSnapshot := d.Get("skip_final_snapshot").(bool) + opts.SkipFinalSnapshot = aws.Bool(skipFinalSnapshot) if skipFinalSnapshot == false { if name, present := d.GetOk("final_snapshot_identifier"); present { @@ -1023,6 +1020,15 @@ func resourceAwsDbInstanceRetrieve( return resp.DBInstances[0], nil } +func resourceAwsDbInstanceImport( + d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) { + // Neither skip_final_snapshot nor final_snapshot_identifier can be fetched + // from any API call, so we need to default skip_final_snapshot to true so + // that final_snapshot_identifier is not required + d.Set("skip_final_snapshot", true) + return []*schema.ResourceData{d}, nil +} + func resourceAwsDbInstanceStateRefreshFunc( d *schema.ResourceData, meta interface{}) resource.StateRefreshFunc { return func() (interface{}, string, error) {