簡體   English   中英

使用我的用戶帳戶使用 terraform 在 root 帳戶中創建 sns 和 cloudwatch 資源

[英]Using my user account to create sns and cloudwatch resources in root account using terraform

當成本達到特定閾值時,我正在嘗試使用 cloudwatch 創建 sns 計費警報,我可以手動執行此操作,但我正在嘗試使用 terraform。你好,我是 terraform 的新手,當我使用 terraform 創建它時在用戶帳戶中創建,我嘗試使用根訪問密鑰,但它繼續在我的用戶帳戶中創建它們。 現在,我不確定我是否假設錯了,當我在管理控制台上創建賬單警報時,我使用 root 帳戶進行操作。 這是我的代碼:

provider "aws" {
  shared_config_files      = ["/mnt/c/Users/{user}/.aws/config"]
  shared_credentials_files = ["/mnt/c/Users/{user}/.aws/credentials"]
  profile                  = "root"
  #  region  = "us-east-2"
}
module "sns_topic" {
  source = "/mnt/c/terraform-ansible-automate/sns"

  aws_account_id = var.aws_account_id
  aws_env        = var.aws_env
  email          = var.email
}
module "cloudwatch" {
  source = "/mnt/c/terraform-ansible-automate/cloudwatch"
  #  source = "/cloudwatch"

  monthly_billing_threshold = var.monthly_billing_threshold
  sns_topic_arn             = [module.sns_topic.sns_cost_alert_topic_arn]
  aws_account_id            = var.aws_account_id
  aws_env                   = var.aws_env
}

您能否在運行 terraform 代碼時驗證您在哪個帳戶中進行了身份驗證?

使用以下命令:

## It assumes that you have aws CLI pre-installed.
aws sts get-caller-identity

如果您已經登錄了 root 帳戶(所需帳戶),它應該可以正常工作,但如果您使用的是任何其他帳戶(在您的情況下是用戶帳戶)。

這可能是因為用於 terraform 身份驗證的 IAM 用戶/角色在該帳戶中。 然后你通常有兩個選擇。

  • 從當前登錄/登錄的用戶那里承擔所需帳戶中的角色。 該角色必須在您的登錄用戶之間具有信任關系(策略)。 (您的用戶應該被允許從另一個帳戶承擔該角色)。 所承擔的角色還必須對所需帳戶具有所需的權限(附加策略)才能進行所需的更改。

請查看有關provision-resource-across-aws-accounts 的Hashicorp 文檔

從代碼的角度來看,您可以參考https://github.com/ishuar/stackoverflow-terraform/tree/main/aws/user_with_programmatic_access_assume_role/user_assuming_role_with_policies_attached中如何使用 IAM User to Assume Role with Required Access 的示例。

這不是一個跨賬戶的例子,但它類似只需要調整instance_and_sg_creation的 provider 塊中的 role_arn

  • 使用所需賬戶中已存在且具有所需權限的 IAM 用戶。 在您的 terraform 身份驗證中使用該用戶的秘密並進行更改。 這就像任何正常的 terraform 代碼執行。

我希望這些信息有所幫助。

注意:請添加更多詳細信息和錯誤消息,然后我們可能會幫助您編寫可能對您有用的實用代碼片段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM