버전

  • Terraform Databricks Provider: 0.4.3
  • Terraform AWS Provider: 3.38

현상

  1. Terraform으로 Databricks 환경을 구성할 때 아래와 같은 에러가 발생합니다.
    • Error: MALFORMED_REQUEST: Failed credentials validation checks: Spot Cancellation, Create Placement Group, Delete Tags, Describe Availability Zones, Describe instances, Describe Instance Status, Describe Placement Group, Describe Route Tables, Describe Security Groups, Describe Spot Instances, Describe Spot Price History, Describe Subnets, Describe Volumes, Describe Vpcs, Request Spot Instances
      (400 on /api/2.0/accounts/{UUID}/workspaces)
  2. Terraform으로 Databricks 내의 Log Delivery 세팅을 구성할 때 아래와 같은 에러가 발생합니다.
    • Error: cannot create mws log delivery: Can not assume iamrole:arn:aws:iam::{your_aws_account_id}:role/databricks_log_delivery_iam_role. Please add Databricks Log Delivery Role to your IAM Role's trust relationship as specified in API docs. Using basic auth: host=https://accounts.cloud.databricks.com, username=[MASKED], password=***REDACTED***

원인

Terraform AWS Provider(v3.28에서 발견)의 버그로 인해 Databricks AWS 교차 계정 정책 (cross account policy) 생성 및 IAM role 연결이 Terraform에 대한 AWS 요청 확인보다 더 오래 걸리면서 발생하는 에러입니다. Terraform에서 Workspace를 생성하는 과정에서 아직 정책이 적용되지 않았기 때문에 자격 증명에 대한 유효성 검사가 실패합니다.

Log Delivery 세팅을 구성할 때 필요한 IAM role 구성에서도 마찬가지로 생성 및 연결에 걸리는 시간이 오래 걸리면서 이후의 유효성 검사에 실패한 경우입니다.

해결

아래와 같이 aws_iam_role 리소스 생성 시 timesleep을 추가합니다. (Log Delivery의 경우 Apply를 재수행만 해도 해결 가능할 수 있습니다.)

resource "time_sleep" "wait" {
  depends_on = [
  aws_iam_role.cross_account_role]
  create_duration = "20s"
}

참고