Это будет работать в большинстве случаев использования
Вариант 1: регионы использования
Преимущество состоит в том, что вещи разделяются в консоли и вызовах API. Вам нужно будет обработать несколько глобальных именованных сервисов, таких как IAM и S3, но посмотрите вариант 2 решения. Кроме того, убедитесь, что во всех регионах есть необходимые вам услуги.
Например:
- us-east-1: prod
- us-east-2: qa
- us-west-2: dev
В каждом регионе создайте корзину S3 для хранения ваших файлов состояния. Что-то вроде tfstate-01234567890-us-east-1, tfstate-01234567890-us-east-2, tfstate-01234567890-us-west-1 обеспечит отсутствие конфликтов.
Вариант 2: использовать тег окружения
Даже если вы используете вариант 1, я все же рекомендую также реализовать это. Это позволит вам выполнять такие действия, как развертывание нескольких сред разработки.
Для каждого ресурса добавьте среду к имени и добавьте среду к тегам.
Допустим, вы создали модуль
variable environment {
type = string
}
resource aws_lambda_function image_handler {
function_name = "cool-function-${var.environment}"
tags = {
environment: var.environment
}
...
Тогда вы бы
module dev {
source = "../path/to/above/module"
environment = "prod"
}