#terraform
Вопрос:
Я работаю над проектом Terraform по созданию, обновлению или удалению AWS sandboxs для каждого нового сотрудника в моей компании. Тем не менее, мы хотели бы иметь фиксированный бюджет для каждой песочницы и, по возможности, не превышать этот бюджет. Я читал о бюджетных действиях AWS, но не уверен, как лучше всего интегрировать их с моим текущим кодом.
main.tf
## this is creating a new project and I would like to set a budget of $50 for this account
resource "aws_organizations_account" "account" {
name = "sandbox"
email = "new-user sandbox@company.com"
role_name = "myOrganizationRole"
}
Ответ №1:
Вам необходимо создать ресурсы aws_budgets_budget и aws_budgets_budget_action в новой учетной записи. Чтобы создать ресурсы в новой учетной записи, вам необходимо создать поставщика для этой учетной записи, взяв на себя роль администратора, которая была создана:
provider "aws" {
alias = "sandbox"
region = "us-east-1"
...
// Specify your credentials source, same as you use for the provider you used for the aws_organizations_account resource
...
assume_role {
role_arn = "arn:aws:iam::${aws_organizations_account.account.id}:role/${aws_organizations_account.account.role_name}"
}
}
И теперь вы можете использовать этого поставщика для создания бюджетных ресурсов в новой учетной записи песочницы (обратите внимание на provider
входные параметры).:
resource "aws_budgets_budget" "example" {
provider = aws.sandbox
name = "example"
budget_type = "USAGE"
limit_amount = "10.0"
limit_unit = "dollars"
time_period_start = "2006-01-02_15:04"
time_unit = "MONTHLY"
}
resource "aws_budgets_budget_action" "example" {
provider = aws.sandbox
budget_name = aws_budgets_budget.example.name
...
}
Комментарии:
1. Они не обязательно должны быть в новой учетной записи, они могут быть в основной учетной записи, используя
LinkedAccount
фильтр, чтобы ограничить их новой учетной записью.2. Хорошая мысль. И это, вероятно, лучший подход для организации с несколькими учетными записями: либо иметь специальную учетную запись для управления бюджетами во всей организации, либо устанавливать бюджеты в специальной учетной записи для каждого подразделения Организации.
3. Спасибо за ваш ответ. Я только что понял, что легко создавать новые AWS с помощью Terraform, но невозможно удалить их (по крайней мере, с помощью Terraform).:
Deleting this Terraform resource will only remove an AWS account from an organization. Terraform will not close the account. The member account must be prepared to be a standalone account beforehand. See the AWS Organizations documentation for more information.