Error map

Provider produced inconsistent result after apply Terraform: Error: Provider produced inconsistent result after apply — When applying changes to aws_x.y, provider produced an unexpected new value: Root resource was present, but now absent

Terraform · layer 6, Platform & cloud

Open the full error page →

Centre: this error. First ring: errors it is linked with (10). Outer ring: what those are linked with. Colours show the layer of a request each error belongs to. Click any dot to re-centre the map on it; hover to follow its connections. The centre dot opens the error page.

Provider produced inconsistent result after apply — Terraform: Error: Provider produced inconsistent result after apply — When applying changes to aws_x.y, provider produced an unexpected new value: Root resource was present, but now absent (Terraform)Provider pr…field is immutable — The Deployment is invalid: spec.selector: Invalid value: field is immutable (Kubernetes)field is immutableAlreadyExists — Error from server (AlreadyExists): ... already exists (Kubernetes)AlreadyExistsProvider produced invalid plan / inconsistent final plan — Terraform: Error: Provider produced invalid plan — provider produced an invalid plan for aws_x.y, but we are tolerating it because it is using the legacy plugin SDK (Terraform)Provider produced i…Resource is tainted and must be replaced — Terraform: # aws_instance.web is tainted, so must be replaced — -/+ destroy and then create replacement (Terraform)Resource is tainted…Invalid AWS Region — Terraform: Error: Invalid AWS Region: us-east-3 / Error: configuring Terraform AWS Provider: validating provider credentials: operation error STS: GetCallerIdentity (Terraform)Invalid AWS RegionError creating resource: already exists (needs import) — Terraform: Error: creating S3 Bucket (my-bucket): BucketAlreadyOwnedByYou / EntityAlreadyExists: Role with name x already exists (Terraform)Error creating reso…timeout while waiting for state to become 'available' — Terraform: Error: waiting for RDS DB Instance create: timeout while waiting for state to become 'available' (last state: 'creating', timeout: 40m0s) (Terraform)timeout while waiti…Error running command: exit status 1 (local-exec/remote-exec) — Terraform: Error: local-exec provisioner error — Error running command './deploy.sh': exit status 1. Output: ... (Terraform)Error running comma…Error reading resource: not found (deleted outside Terraform) — Terraform: Error: reading EC2 Instance (i-0abc): couldn't find resource / 404 ResourceNotFound during refresh (Terraform)Error reading resou…No valid credential sources found (AWS provider) — Terraform: Error: No valid credential sources found — failed to refresh cached credentials, no EC2 IMDS role found / Error: configuring Terraform AWS Provider: no valid credential sources (Terraform)No valid credential…ROLLBACK_COMPLETE — Stack is in ROLLBACK_COMPLETE state and can not be updated (AWS)ROLLBACK_COMPLETEUPDATE_ROLLBACK_FAILED — CloudFormation stack in UPDATE_ROLLBACK_FAILED (AWS)UPDATE_ROLLBACK_FAI…Environment health has transitioned to Severe — Elastic Beanstalk: Environment health has transitioned from Ok to Severe (AWS)Environment health …kubectl connection refused — kubectl: The connection to the server localhost:8080 was refused — did you specify the right host or port? (Kubernetes)kubectl connection …ALREADY_EXISTS — API Error: Resource already exists (ALREADY_EXISTS / resource_already_exists / 409) (API)ALREADY_EXISTSForbidden — Error from server (Forbidden): pods is forbidden: User "x" cannot list resource "pods" in API group "" in the namespace (Kubernetes)ForbiddenInvalid for_each argument (keys cannot be determined until apply) — Terraform: Error: Invalid for_each argument — The "for_each" map includes keys derived from resource attributes that cannot be determined until apply (Terraform)Invalid for_each ar…Invalid count argument (value unknown until apply) — Terraform: Error: Invalid count argument — The "count" value depends on resource attributes that cannot be determined until apply (Terraform)Invalid count argum…Saved plan is stale — Terraform: Error: Saved plan is stale — The given plan file can no longer be applied because the state was changed by another operation after the plan was created (Terraform)Saved plan is staleBackend configuration changed (migrate or reconfigure) — Terraform: Error: Backend configuration changed — A change in the backend configuration has been detected, which may require migrating existing state (Terraform)Backend configurati…Cannot import non-existent remote object — Terraform: Error: Cannot import non-existent remote object — While attempting to import an existing object to "aws_s3_bucket.logs", the provider detected that no object exists with the given id (Terraform)Cannot import non-e…Instance cannot be destroyed (lifecycle.prevent_destroy) — Terraform: Error: Instance cannot be destroyed — Resource aws_db_instance.prod has lifecycle.prevent_destroy set, but the plan calls for this resource to be destroyed (Terraform)Instance cannot be …PermanentRedirect — S3 PermanentRedirect: The bucket you are attempting to access must be addressed using the specified endpoint (AWS)PermanentRedirectInvalidKeyPair.NotFound — InvalidKeyPair.NotFound: The key pair 'x' does not exist (AWS)InvalidKeyPair.NotF…InvalidAMIID.NotFound — InvalidAMIID.NotFound: The image id '[ami-xxxx]' does not exist (AWS)InvalidAMIID.NotFou…unknown field — strict decoding error: unknown field "spec.template.spec.containers[0].ports[0].protocl" (Kubernetes)unknown fieldTask timed out — AWS Lambda: Task timed out after X seconds (AWS)Task timed outEndpoint request timed out — API Gateway: {"message": "Endpoint request timed out"} (504 after 29 seconds) (AWS)Endpoint request ti…exceeded the maximum execution time — GitHub Actions: The job running on runner GitHub Actions 12 has exceeded the maximum execution time of 360 minutes (CI/CD)exceeded the maximu…UnauthorizedOperation / AccessDenied during Terraform apply — Terraform: Error: creating EC2 Instance: UnauthorizedOperation: You are not authorized to perform this operation. User: arn:aws:iam::123:user/ci is not authorized to perform: ec2:RunInstances (Terraform)UnauthorizedOperati…Error acquiring the state lock — Terraform: Error: Error acquiring the state lock — ConditionalCheckFailedException / state blob is already locked (Terraform)Error acquiring the…Error building ARM Config: obtain subscription from Azure CLI — Terraform: Error: building AzureRM Client: obtaining subscription ID / Please run 'az login' to setup account (Terraform)Error building ARM …Invalid target address / No matching objects found (state commands) — Terraform: Error: Invalid target address — No matching objects found. To view the available instances, use "terraform state list" (Terraform)Invalid target addr…ExpiredToken — AWS: ExpiredToken — The security token included in the request is expired (AWS)ExpiredTokenNoCredentialsError — AWS: Unable to locate credentials / Could not load credentials from any providers (AWS)NoCredentialsErrorSignatureDoesNotMatch — AWS: SignatureDoesNotMatch / InvalidClientTokenId — the request signature we calculated does not match (AWS)SignatureDoesNotMat…

Directly related (10)

field is immutableKubernetes

The Deployment is invalid: spec.selector: Invalid value: field is immutable

You tried to change a field Kubernetes doesn’t allow to change after creation — Deployment selectors, Job templates, Service clus…

AlreadyExistsKubernetes

Error from server (AlreadyExists): ... already exists

kubectl create tried to make an object whose name is already taken in that namespace.

Provider produced invalid plan / inconsistent final planTerraform

Terraform: Error: Provider produced invalid plan — provider produced an invalid plan for aws_x.y, but we are tolerating it because it is using the legacy plugin SDK

The provider changed planned values between plan and apply (a provider bug), so Terraform aborts.

Resource is tainted and must be replacedTerraform

Terraform: # aws_instance.web is tainted, so must be replaced — -/+ destroy and then create replacement

A previous apply failed during creation, so Terraform marked the resource tainted and will recreate it.

Invalid AWS RegionTerraform

Terraform: Error: Invalid AWS Region: us-east-3 / Error: configuring Terraform AWS Provider: validating provider credentials: operation error STS: GetCallerIdentity

The `region` is invalid/unavailable, or the provider can't reach AWS endpoints to validate credentials.

Error creating resource: already exists (needs import)Terraform

Terraform: Error: creating S3 Bucket (my-bucket): BucketAlreadyOwnedByYou / EntityAlreadyExists: Role with name x already exists

The resource exists outside Terraform's state (created manually or by another stack), so create fails.

timeout while waiting for state to become 'available'Terraform

Terraform: Error: waiting for RDS DB Instance create: timeout while waiting for state to become 'available' (last state: 'creating', timeout: 40m0s)

The resource didn't reach the target state before the provider's timeout.

Error running command: exit status 1 (local-exec/remote-exec)Terraform

Terraform: Error: local-exec provisioner error — Error running command './deploy.sh': exit status 1. Output: ...

A `local-exec`/`remote-exec` provisioner command failed, so the resource is marked tainted.

Error reading resource: not found (deleted outside Terraform)Terraform

Terraform: Error: reading EC2 Instance (i-0abc): couldn't find resource / 404 ResourceNotFound during refresh

A resource tracked in state no longer exists in the cloud (deleted manually) or can't be read with current credentials.

No valid credential sources found (AWS provider)Terraform

Terraform: Error: No valid credential sources found — failed to refresh cached credentials, no EC2 IMDS role found / Error: configuring Terraform AWS Provider: no valid credential sources

The AWS provider found no credentials (env vars, shared config, SSO, role, instance profile).

Two steps away (26)

ROLLBACK_COMPLETEAWS

Stack is in ROLLBACK_COMPLETE state and can not be updated

The stack’s first creation failed and rolled back; a stack in ROLLBACK_COMPLETE can only be deleted, not updated.

UPDATE_ROLLBACK_FAILEDAWS

CloudFormation stack in UPDATE_ROLLBACK_FAILED

An update failed, and then the rollback also failed, leaving the stack stuck until you continue the rollback.

Environment health has transitioned to SevereAWS

Elastic Beanstalk: Environment health has transitioned from Ok to Severe

Most instances in the Elastic Beanstalk environment are failing health checks or returning errors.

kubectl connection refusedKubernetes

kubectl: The connection to the server localhost:8080 was refused — did you specify the right host or port?

kubectl has no usable kubeconfig, so it falls back to localhost:8080 — or the cluster API server is unreachable.

ALREADY_EXISTSAPI

API Error: Resource already exists (ALREADY_EXISTS / resource_already_exists / 409)

The create request was refused because an object with the same unique identity — name, email, external ID — already exists.

ForbiddenKubernetes

Error from server (Forbidden): pods is forbidden: User "x" cannot list resource "pods" in API group "" in the namespace

You’re authenticated to the cluster, but RBAC doesn’t give your user or service account that verb on that resource.

Invalid for_each argument (keys cannot be determined until apply)Terraform

Terraform: Error: Invalid for_each argument — The "for_each" map includes keys derived from resource attributes that cannot be determined until apply

`for_each` keys depend on values only known after apply, so Terraform can't plan which instances exist.

Invalid count argument (value unknown until apply)Terraform

Terraform: Error: Invalid count argument — The "count" value depends on resource attributes that cannot be determined until apply

`count` depends on something unknown at plan time, so Terraform can't decide how many instances to create.

Saved plan is staleTerraform

Terraform: Error: Saved plan is stale — The given plan file can no longer be applied because the state was changed by another operation after the plan was created

The state changed between `terraform plan -out` and `terraform apply planfile`.

Backend configuration changed (migrate or reconfigure)Terraform

Terraform: Error: Backend configuration changed — A change in the backend configuration has been detected, which may require migrating existing state

The saved backend settings in `.terraform` differ from the current configuration.

Cannot import non-existent remote objectTerraform

Terraform: Error: Cannot import non-existent remote object — While attempting to import an existing object to "aws_s3_bucket.logs", the provider detected that no object exists with the given id

`terraform import` (or an import block) used an ID that the provider can't find.

Instance cannot be destroyed (lifecycle.prevent_destroy)Terraform

Terraform: Error: Instance cannot be destroyed — Resource aws_db_instance.prod has lifecycle.prevent_destroy set, but the plan calls for this resource to be destroyed

The plan would destroy a resource protected with `lifecycle { prevent_destroy = true }`.

PermanentRedirectAWS

S3 PermanentRedirect: The bucket you are attempting to access must be addressed using the specified endpoint

The request went to the wrong S3 region/endpoint for that bucket.

InvalidKeyPair.NotFoundAWS

InvalidKeyPair.NotFound: The key pair 'x' does not exist

The key pair name you passed doesn’t exist in that region (key pairs are regional).

InvalidAMIID.NotFoundAWS

InvalidAMIID.NotFound: The image id '[ami-xxxx]' does not exist

The AMI ID isn’t available in this region/account — AMI IDs are regional and private AMIs must be shared.

unknown fieldKubernetes

strict decoding error: unknown field "spec.template.spec.containers[0].ports[0].protocl"

The manifest contains a field the API schema doesn’t know — a typo, wrong indentation, or a field from another API version.

Task timed outAWS

AWS Lambda: Task timed out after X seconds

The function ran longer than its configured timeout (default 3 seconds) and Lambda stopped it.

Endpoint request timed outAWS

API Gateway: {"message": "Endpoint request timed out"} (504 after 29 seconds)

The backend (usually Lambda) didn’t respond within API Gateway’s integration timeout (29 seconds by default for REST APIs).

exceeded the maximum execution timeCI/CD

GitHub Actions: The job running on runner GitHub Actions 12 has exceeded the maximum execution time of 360 minutes

A job ran longer than its time limit — your `timeout-minutes`, or the 6-hour (360 minute) platform limit — and was cancelled.

UnauthorizedOperation / AccessDenied during Terraform applyTerraform

Terraform: Error: creating EC2 Instance: UnauthorizedOperation: You are not authorized to perform this operation. User: arn:aws:iam::123:user/ci is not authorized to perform: ec2:RunInstances

The IAM identity used by Terraform lacks a permission needed for that resource.

Error acquiring the state lockTerraform

Terraform: Error: Error acquiring the state lock — ConditionalCheckFailedException / state blob is already locked

Another Terraform run holds the state lock, or a previous run crashed and left the lock behind.

Error building ARM Config: obtain subscription from Azure CLITerraform

Terraform: Error: building AzureRM Client: obtaining subscription ID / Please run 'az login' to setup account

The AzureRM provider can't find Azure credentials or a subscription.

Invalid target address / No matching objects found (state commands)Terraform

Terraform: Error: Invalid target address — No matching objects found. To view the available instances, use "terraform state list"

A state/target command referenced an address that doesn't exist in state.

ExpiredTokenAWS

AWS: ExpiredToken — The security token included in the request is expired

Temporary AWS credentials (STS/SSO/assumed role) have expired.

NoCredentialsErrorAWS

AWS: Unable to locate credentials / Could not load credentials from any providers

The AWS CLI/SDK found no credentials in any place it looks — env vars, profile files, SSO cache or an instance/task role.

SignatureDoesNotMatchAWS

AWS: SignatureDoesNotMatch / InvalidClientTokenId — the request signature we calculated does not match

AWS rejected the request signature — wrong secret key, wrong region, clock skew, or a presigned URL used differently from how it…