如何在运行时重新加载terraform提供程序以使用不同的AWS配置文件

如何在运行时重新加载terraform提供程序以使用不同的AWS配置文件,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,如何在运行时重新加载terraform提供程序以使用不同的AWS配置文件 创建新用户 resource "aws_iam_user" "user_lake_admin" { name = var.lake_admin_user_name path = "/" tags = { tag-key = "data-test" } } 此lake_admin用户是在同一文件中创建的 试图使用 provider "aws" { access_key = aws_iam_ac

如何在运行时重新加载terraform提供程序以使用不同的AWS配置文件

创建新用户

resource "aws_iam_user" "user_lake_admin" {

  name = var.lake_admin_user_name
  path = "/"
  tags = {
    tag-key = "data-test"
  }
}
此lake_admin用户是在同一文件中创建的

试图使用

provider "aws" {
  access_key = aws_iam_access_key.user_lake_admin_AK_SK.id
  secret_key = aws_iam_access_key.user_lake_admin_AK_SK.secret
  region                  = "us-west-2"
  alias                   = "lake-admin-profile"
}
resource "aws_glue_catalog_database" "myDB" {
  name  = "my-db"
  provider = aws.lake-admin-profile
}
据我所知,terraform提供程序首先在所有terraform文件中执行


但是我们有没有办法在terraform执行过程中重新加载提供者的配置?

您不能直接这样做

您可以在一个根模块和状态中应用用户的创建,并在第二个根模块的提供程序中使用其凭据

为了部署基础架构,您最好使用IAM角色,并假设角色提供程序来处理这种情况

通常,您不需要为特定用户创建基础设施。这样做几乎没有什么好处。我想不出哪种情况下,主体创建的基础设施对所创建的基础设施有任何隐含的特定访问权限


您可以使用部署IAM角色或IAM用户部署帐户中的所有内容,然后分配基于资源和IAM策略来执行部署中的限制。

您能否解释为什么要这样做,而不是让创建
lake admin
用户的用户也创建粘合目录?因为即使您管理员权限在AWS中,我们不能添加glue DB,除非我们提供data lake管理员权限。我无法向我的根提供商提供data lake管理权限,因为我使用的是“我是”角色。这对所有用户来说都不一样。
provider "aws" {
  access_key = aws_iam_access_key.user_lake_admin_AK_SK.id
  secret_key = aws_iam_access_key.user_lake_admin_AK_SK.secret
  region                  = "us-west-2"
  alias                   = "lake-admin-profile"
}
resource "aws_glue_catalog_database" "myDB" {
  name  = "my-db"
  provider = aws.lake-admin-profile
}