# Репозиторий с выполненным заданием 2


## Задание 3.1 - Подготовка хранения стейта

Для хранения стейта в S3 потребуется бакет. Его можно создать вручную, а можно с помощью Terraform.

- Рядом с вашей директорией корневого модуля создайте директорию state_bucket и скопируйте в нее versions.tf, providers.tf. Также из variables.tf перенесите переменную `aws_region`.

- Создайте файл main.tf, в который запишите следующее:

```hcl
resource "aws_s3_bucket" "terraform_state" {
  bucket = "super-unique-tfstate-bucket"
  versioning {
    enabled = true
  }
}

resource "aws_dynamodb_table" "terraform_state_lock" {
  name           = "super-unique-tfstate-lock"
  read_capacity  = 1
  write_capacity = 1
  hash_key       = "LockID"
  attribute {
    name = "LockID"
    type = "S"
  }
}
```

- Придумайте уникальные значения для `bucket` в aws_s3_bucket и `name` в aws_dynamodb_table (таковы особенности S3 в AWS)

- Примените инфраструктуру



## Задание 3.2 - Удаленное хранение стейта

Теперь изменим хранение стейта в корневом модуле

- Добавьте в блок `terraform` блок `backend`, заменив `bucket` и `dynamodb_table` на ваши переменные.

```hcl
terraform {
	...
	backend "s3" {
	  bucket         = "super-unique-tfstate-bucket"
	  dynamodb_table = "super-unique-tfstate-lock"
	  key            = "infra.tfstate"
	  region         = "us-east-1"
	  encrypt        = "true"
	}
}
```

- Инициализируйте репозиторий. Если вы не удаляли предыдущую инфраструктуру — вам будет предложено перенести стейт в новый бэкэнд

- Примените инфраструктуру и убедитесь, что изменений нет
