Closed2

[terraform]IAMロールをアタッチしたEC2上で実行する場合に認証情報を無効にする方法

myabaoumyabaou

IAMroleをアタッチしたEC2上でterraformを実行運用しているかた
いらっしゃらないですか。

実行する認証情報は

provider "aws" {
  profile = "sso_profile_test"
  alias   = "sso_profile_test"
  region  = var.region
  default_tags {
    tags = {
      Environment    = var.env
      Owner          = var.owner
      Terraform      = "True"
    }
  }
}

module "iam_mfa_sso_profile_test" {

  providers = {
    aws = aws.sso_profile_test
  }
  source  = "../../modules/iam_mfa"
  env     = var.env
  project = var.project

}

と定義しており、
指定したprofileの認証でmoduleを実行するイメージになります。

ローカル(クライアント端末 MacOS)では正常に稼働するのですが、
IAMロールをアタッチ済のEC2上で実行しようとすると
IAMロールの認証情報が優先されるため、
権限がないエラーになってしまいます。

表題の通り、terraform実行時IAMロールの
認証情報を無効にする方法、
もしくはproviderの認証情報を最優先にする方法等
ご存知のかたがいらっしゃれば教示いただきたく。

myabaoumyabaou

原因としては
S3バックエンドにアクセスするための
プロファイル情報が抜け漏れてしまっていることでした。。

terraform {
  required_version = ">= 1.0.10"
  backend "s3" {
    profile = "sso_profile_s3"
    bucket  = "sso_profile_test-terraform-state"
    region  = "ap-northeast-1"
    key     = "environments/mfa_iam/terraform.tfstate"
    encrypt = true
  }
}

sso_profile_s3の定義のみが
~/.aws/credensialsに定義されており、
その差異によってローカルでは成功
リモート先では失敗しておりました。
改めて/.aws/configに定義しなおしたところ
正常に通りました。

このスクラップは2021/11/29にクローズされました