Есть ли способ обойти ограничение 16 КБ EC2 user_data без какого-либо пользовательского AMI? Я безуспешно пробовал приведенные ниже примеры в Terraform. instance-user-data.ps1.tmpl — это сценарий powershell размером около 20 КБ.
Ниже скрипт, использующий base64кодировать, жалуется на превышение 16 КБ
resource "aws_instance" "instance" {
...
user_data_base64 = "${base64encode(templatefile("${path.module}/instance-user-data.ps1.tmpl", {
admin_username = local.admin_username
admin_password = random_password.admin_password.result
}))}"
}
Пробовал Gzip с кодировкой Base64, но скрипт вообще не устанавливает никаких пользовательских данных.
resource "aws_instance" "instance" {
...
user_data_base64 = "${base64gzip(templatefile("${path.module}/instance-user-data.ps1.tmpl", {
admin_username = local.admin_username
admin_password = random_password.admin_password.result
}))}"
}
Чтобы обойти это, я бы отправил ваши скрипты/файлы на S3, что можно сделать с помощью ресурса Terraform aws_s3_object, и просто заставил ваш скрипт user_data загрузить реальный скрипт запуска с S3 и запустить его.