Estoy tratando de configurar las credenciales de RDS Aurora como variables de entorno para una tarea de ECS. Inicialmente, lo paso como texto sin formato en environments . Sé que la forma correcta de hacerlo es usar secrets , pero ApplicationLoadBalancedTaskImageOptions espera un Secret y rds.DatabaseCluster devuelve otro tipo. ¿Cuál es la forma correcta de administrar las credenciales en este caso?
task_image_options=ecs_patterns.ApplicationLoadBalancedTaskImageOptions( image=ecs.ContainerImage.from_registry("sonarqube:8.2-community"), container_port=9000, # FIXME: by documentation this is the right way to pass creds, however this fail, the database secret is not the same type than the expected # secrets={ # "sonar.jdbc.password": ecs.Secret.from_secrets_manager(self.db.secret) # }, environment={ 'sonar.jdbc.url': url, "sonar.jdbc.username": username, "sonar.jdbc.password": self.db.secret.secret_value_from_json("password").to_string() #plaintext, FIXME } )¡Qué dejavú!
Publiqué un artículo sobre este tema hace dos días:
Aquí puede detectar claramente las diferencias entre el uso de secretos y variables de entorno.
Si desea pasarlo como un secreto, primero debe almacenar el valor en AWS SecretsManager o AWS Parameter Store. Luego, pasa el ARN del secreto, desde uno de esos dos servicios, como el valor en la definición de la tarea de ECS y ECS extraerá automáticamente el valor real de SecretsManager o el almacén de parámetros cuando crea una instancia del contenedor. Esto está documentado aquí .
Si desea consumir valor del almacén de secretos, entonces debería ser secrets , no una variable de entorno.
Reemplace la variable de entorno con secrets como a continuación
"secrets": [ { "name": "MY_KEY", "valueFrom": "arn:aws:secretsmanager:us-west-2:12345656:secret:demo-0Nlyli" } ]Simplemente coloque el ARN y ECS inyectará el valor durante el tiempo de ejecución.
Para establecer la variable de entorno que necesita
"environment": [ { "name": "KEY", "value": "VALUE" } ]entonces en tu caso
"environment": [ { "name": "sonar.jdbc.url", "value": "some-url" } ]