Obtención de un valor del Almacén de parámetros de Systems Manager - AWS Cloud Development Kit (AWS CDK) v2

Esta es la segunda versión de la Guía para desarrolladores de AWS CDK. La primera versión del CDK pasó a la etapa de mantenimiento el 1.° de junio de 2022 y no cuenta con soporte desde el 1.° de junio de 2023.

Obtención de un valor del Almacén de parámetros de Systems Manager

AWS Cloud Development Kit (AWS CDK) puede recuperar el valor de los atributos del almacén de parámetros AWS Systems Manager. Durante la síntesis, AWS CDK produce un token que AWS CloudFormation resuelve durante la implementación.

AWS CDK soporta la recuperación de valores simples y seguros. Puede solicitar una versión específica de cualquier tipo de valor. Para valores simples, puede omitir la versión de su solicitud para recuperar la versión más reciente. Para los valores seguros, debe especificar la versión al solicitar el valor del atributo seguro.

nota

En este tema se muestra cómo leer los atributos del almacén de parámetros AWS Systems Manager. También puede leer los secretos de AWS Secrets Manager (consulte Obtenga un valor de AWS Secrets Manager).

Lectura de valores de Systems Manager al momento de la implementación

Para leer los valores del almacén de parámetros de Systems Manager, utilice los métodos valueForStringParameter y valueForSecureStringParameter. Elija un método en función de si el atributo que desea es una cadena simple o un valor de cadena seguro. Estos métodos devuelven tokens, no el valor real. AWS CloudFormation se resuelve el valor durante la implementación. A continuación, se muestra un ejemplo:

TypeScript
import * as ssm from 'aws-cdk-lib/aws-ssm'; // Get latest version or specified version of plain string attribute const latestStringToken = ssm.StringParameter.valueForStringParameter( this, 'my-plain-parameter-name'); // latest version const versionOfStringToken = ssm.StringParameter.valueForStringParameter( this, 'my-plain-parameter-name', 1); // version 1 // Get specified version of secure string attribute const secureStringToken = ssm.StringParameter.valueForSecureStringParameter( this, 'my-secure-parameter-name', 1); // must specify version
JavaScript
const ssm = require('aws-cdk-lib/aws-ssm'); // Get latest version or specified version of plain string attribute const latestStringToken = ssm.StringParameter.valueForStringParameter( this, 'my-plain-parameter-name'); // latest version const versionOfStringToken = ssm.StringParameter.valueForStringParameter( this, 'my-plain-parameter-name', 1); // version 1 // Get specified version of secure string attribute const secureStringToken = ssm.StringParameter.valueForSecureStringParameter( this, 'my-secure-parameter-name', 1); // must specify version
Python
import aws_cdk.aws_ssm as ssm # Get latest version or specified version of plain string attribute latest_string_token = ssm.StringParameter.value_for_string_parameter( self, "my-plain-parameter-name") latest_string_token = ssm.StringParameter.value_for_string_parameter( self, "my-plain-parameter-name", 1) # Get specified version of secure string attribute secure_string_token = ssm.StringParameter.value_for_secure_string_parameter( self, "my-secure-parameter-name", 1) # must specify version
Java
import software.amazon.awscdk.services.ssm.StringParameter; //Get latest version or specified version of plain string attribute String latestStringToken = StringParameter.valueForStringParameter( this, "my-plain-parameter-name"); // latest version String versionOfStringToken = StringParameter.valueForStringParameter( this, "my-plain-parameter-name", 1); // version 1 //Get specified version of secure string attribute String secureStringToken = StringParameter.valueForSecureStringParameter( this, "my-secure-parameter-name", 1); // must specify version
C#
using Amazon.CDK.AWS.SSM; // Get latest version or specified version of plain string attribute var latestStringToken = StringParameter.ValueForStringParameter( this, "my-plain-parameter-name"); // latest version var versionOfStringToken = StringParameter.ValueForStringParameter( this, "my-plain-parameter-name", 1); // version 1 // Get specified version of secure string attribute var secureStringToken = StringParameter.ValueForSecureStringParameter( this, "my-secure-parameter-name", 1); // must specify version

Actualmente, un número limitado de AWS servicios admiten esta característica.

Lectura de valores de Systems Manager al momento de la síntesis

A veces, resulta útil proporcionar un parámetro en el momento de la síntesis. De este modo, la plantilla de AWS CloudFormation siempre utilizará el mismo valor en lugar de resolverlo durante la implementación.

Para leer un valor del almacén de parámetros de Systems Manager al momento de la síntesis, utilice el método valueFromLookup (Python: value_from_lookup). Este método devuelve el valor real del parámetro en forma de valor Valores de contexto y AWS CDK. Si el valor aún no está almacenado en caché en cdk.json o no se ha pasado a través de la línea de comandos, se recupera de la cuenta de AWS actual. Por este motivo, la pila debe sintetizarse con información explícita del entorno de AWS.

A continuación, se muestra un ejemplo:

TypeScript
import * as ssm from 'aws-cdk-lib/aws-ssm'; const stringValue = ssm.StringParameter.valueFromLookup(this, 'my-plain-parameter-name');
JavaScript
const ssm = require('aws-cdk-lib/aws-ssm'); const stringValue = ssm.StringParameter.valueFromLookup(this, 'my-plain-parameter-name');
Python
import aws_cdk.aws_ssm as ssm string_value = ssm.StringParameter.value_from_lookup(self, "my-plain-parameter-name")
Java
import software.amazon.awscdk.services.ssm.StringParameter; String stringValue = StringParameter.valueFromLookup(this, "my-plain-parameter-name");
C#
using Amazon.CDK.AWS.SSM; var stringValue = StringParameter.ValueFromLookup(this, "my-plain-parameter-name");

Solo se pueden recuperar cadenas simples de Systems Manager. Las cadenas seguras no se pueden recuperar. Siempre se devolverá la versión más reciente. No se pueden solicitar versiones específicas.

importante

El valor recuperado acabará en la plantilla sintetizada de AWS CloudFormation. Esto puede suponer un riesgo de seguridad, dependiendo de quién tenga acceso a sus plantillas de AWS CloudFormation y del tipo de valor que tengan. Por lo general, no utilice esta función para contraseñas, claves u otros valores que desee mantener privados.

Escribir valores en Systems Manager

Puede usar la CLI de AWS, la AWS Management Console, o un SDK de AWS para configurar los valores de los parámetros de Systems Manager. Los ejemplos siguientes utilizan el comando ssm put-parameter de la CLI.

aws ssm put-parameter --name "parameter-name" --type "String" --value "parameter-value" aws ssm put-parameter --name "secure-parameter-name" --type "SecureString" --value "secure-parameter-value"

Al actualizar un valor de SSM que ya existe, incluya también la opción --overwrite.

aws ssm put-parameter --overwrite --name "parameter-name" --type "String" --value "parameter-value" aws ssm put-parameter --overwrite --name "secure-parameter-name" --type "SecureString" --value "secure-parameter-value"