Referencia del Almacén de parámetros
Un parámetro es cualquier dato guardado en el Parameter Store, como un bloque de texto, una lista de nombres, un ID de AMI, un ID de comerciante u otro valor de configuración. Puede hacer referencia a estos datos de forma centralizada en los scripts, comandos y documentos de SSM.
Cuando se hace referencia a un parámetro, se debe especificar el nombre del parámetro mediante la siguiente convención.
{{ssm:}}parameter-name
nota
Los parámetros no se pueden referenciar ni anidar en los valores de otros parámetros. No puede incluir {{}} o {{ssm: en el valor de un parámetro.parameter-name}}
Parameter Store permite usar tres tipos de parámetros: String, StringList y SecureString.
Con una excepción, cuando cree o actualice un parámetro, deberá ingresar el valor del parámetro como texto sin formato y Parameter Store no realiza ninguna validación en el texto especificado. Sin embargo, para los parámetros String puede especificar el tipo de datos como aws:ec2:image, y Parameter Store valida que el valor ingresado tenga el formato adecuado para una AMI de Amazon EC2; por ejemplo: ami-12345abcdeEXAMPLE.
Tipo de parámetro: String
De forma predeterminada, el valor de un parámetro String consta de cualquier bloque de texto especificado. Por ejemplo:
-
abc123 -
Example Corp -
<img src="images/bannerImage1.png"/>
Tipo de parámetro: StringList
Los valores de los parámetros StringList contienen una lista de valores separados por comas, como se muestra en el siguiente ejemplo.
Monday,Wednesday,Friday
CSV,TSV,CLF,ELF,JSON
Tipo de parámetro: SecuRestring
Utilice SecureString para los valores de configuración que requieren cifrado, como los puntos de conexión del servicio y los identificadores de cuenta. Para los secretos como las credenciales de bases de datos, las claves de API o los tokens, recomendamos AWS Secrets Manager, que proporciona controles de seguridad específicos, como la rotación automática y la replicación entre regiones.
Solo se cifra el valor del parámetro. El nombre, la descripción y el resto de metadatos del parámetro no se cifran.
El Parameter Store cifra y descifra los valores de los parámetros SecureString mediante una clave de AWS KMS. Puede utilizar la Clave administrada de AWS predeterminada para el Parameter Store o una clave administrada por el cliente. Utilice una clave administrada por el cliente si necesita restringir las entidades principales que pueden descifrar determinados parámetros. Para obtener más información, consulte Cifrado y descifrado de parámetros mediante claves de AWS KMS.
importante
Tenga en cuenta la siguiente información importante.
Si administra credenciales que requieren rotación automática, acceso entre cuentas o registros de auditoría detallados, le recomendamos que utilice AWS Secrets Manager. Secrets Manager está diseñado específicamente para administrar secretos, como credenciales de bases de datos, claves de API y secretos proporcionados por software de terceros compatible. Para obtener más información, consulte ¿Qué es AWS Secrets Manager? en la Guía del usuario de AWS Secrets Manager.
No almacene información confidencial en un parámetro
StringniStringList. Para toda la información confidencial que debe permanecer cifrada, utilice solo el tipo de parámetroSecureString.Solo se cifra el valor de un parámetro
SecureString. Los nombres de parámetros, las descripciones y otras propiedades no se cifran.
Puede usar parámetros SecureString con otros Servicios de AWS. La siguiente función de Lambda recupera un ID de comerciante cifrado del parámetro /myapp/dev/vendor/merchant-id. La función usa el valor sin escribirlo en los registros de la función ni devolverlo en la respuesta.
import json import boto3 ssm = boto3.client("ssm", region_name="us-east-1") def lambda_handler(event, context): response = ssm.get_parameter( Name="/myapp/dev/vendor/merchant-id", WithDecryption=True ) merchant_id = response["Parameter"]["Value"] # Use merchant_id when communicating with the vendor system. # Don't write the value to logs or include it in the response. return { "statusCode": 200, "body": json.dumps("Vendor configuration retrieved.") }
AWS KMSCifrado y precios de
Al crear un parámetro SecureString, Systems Manager utiliza AWS KMS para cifrar el valor del parámetro.
importante
Parameter Store solo es compatible con claves de cifrado de KMS simétricas. No se puede utilizar una clave de cifrado de KMS asimétrica para cifrar los parámetros. Para obtener ayuda para determinar si una clave de KMS es simétrica o asimétrica, consulte Identificación de claves KMS simétricas y asimétricas en la Guía para desarrolladores de AWS Key Management Service.
No se aplican cargos del Parameter Store por crear un parámetro SecureString, pero sí pueden aplicarse cargos por utilizar AWS KMS. Para más información, consulte Precios de AWS Key Management Service
Para obtener más información acerca de las Claves administradas por AWS y de las claves administradas por el cliente, consulte los conceptos de AWS Key Management Service en la Guía para desarrolladores de AWS Key Management Service. Para obtener más información acerca de cómo el Parameter Store utiliza AWS KMS, consulte Cómo el Parameter Store de AWS Systems Manager utiliza AWS KMS.
nota
Para ver la Clave administrada de AWS predeterminada para el Parameter Store, ejecute el siguiente comando.
aws kms describe-key \ --region us-east-1 \ --key-id alias/aws/ssm
Restricciones de los nombres de parámetros
Utilice la información de este tema como ayuda para especificar los valores válidos de los nombres de los parámetros al crear un parámetro.
Esta información complementa los detalles del tema PutParameter de la Referencia de la API de AWS Systems Manager, que también proporciona información sobre los valores de AllowedPattern, Description, KeyId, Overwrite, Type y Value.
Los nombres de los parámetros deben cumplir los requisitos y restricciones siguientes:
-
Diferenciación entre mayúsculas y minúsculas: los nombres de los parámetros distinguen entre mayúsculas y minúsculas.
-
Espacios: los nombres de los parámetros no pueden incluir espacios.
-
Caracteres válidos: los nombres de los parámetros solo pueden incluir los siguientes símbolos y letras:
a-zA-Z0-9_.-Además, el carácter de barra inclinada (/) se utiliza para delinear jerarquías en los nombres de parámetros. Por ejemplo:
/Dev/Production/East/Project-ABC/MyParameter -
Formato de AMI válido: cuando elija
aws:ec2:imagecomo tipo de datos para un parámetroString, el ID que especifica debe validarse para el formato de ID de AMIami-12345abcdeEXAMPLE. -
Totalmente cualificado: cuando crea o hace referencia a un parámetro en una jerarquía, debe incluir un carácter de barra diagonal (/). Cuando hace referencia a un parámetro que forma parte de una jerarquía, especifique toda la ruta de la jerarquía, incluida la barra diagonal inicial (/).
-
Nombres de parámetros completos:
MyParameter1,/MyParameter2,/Dev/Production/East/Project-ABC/MyParameter -
Nombre de parámetro no completo:
MyParameter3/L1
-
-
Longitud: la longitud máxima del nombre de parámetro que especifique es de 1011 caracteres. Esto incluye los caracteres del ARN que preceden al nombre que especifique, como los 45 caracteres en
arn:aws:ssm:us-east-2:111122223333:parameter/. -
Prefijos: un nombre de parámetro no puede tener como prefijo “
aws” ni “ssm” (no se distingue entre mayúsculas y minúsculas). Por ejemplo, se produce un error con una excepción si se intenta crear parámetros con los siguientes nombres:-
awsTestParameter -
SSM-testparameter -
/aws/testparam1
nota
Cuando se especifica un parámetro en un documento, un comando o un script de SSM, se debe incluir
ssmcomo parte de la sintaxis. Por ejemplo, {{ssm:parameter_name}} y {{ ssm:parameter_name}}, como{{ssm:MyParameter}}, y{{ ssm:MyParameter }}. -
-
Unicidad: los nombres de los parámetros deben ser únicos dentro de una Región de AWS. Por ejemplo, Systems Manager trata los siguientes parámetros como parámetros diferentes si existen en la misma región:
-
/Test/TestParam1 -
/TestParam1
Los siguientes ejemplos también son únicos:
-
/Test/TestParam1/Logpath1 -
/Test/TestParam1
Sin embargo, los siguientes ejemplos, si están en la misma región, no son únicos:
-
/TestParam1 -
TestParam1
-
-
Profundidad de la jerarquía: si especifica una jerarquía de parámetros, esta puede tener una profundidad máxima de quince niveles. Puede definir un parámetro en cualquier nivel de la jerarquía. Los dos ejemplos siguientes son válidos estructuralmente:
-
/Level-1/L2/L3/L4/L5/L6/L7/L8/L9/L10/L11/L12/L13/L14/parameter-name -
parameter-name
El intento de crear los siguientes parámetros tendría un error con la excepción
HierarchyLevelLimitExceededException:-
/Level-1/L2/L3/L4/L5/L6/L7/L8/L9/L10/L11/L12/L13/L14/L15/L16/parameter-name
-
importante
Si un usuario tiene acceso a una ruta, puede obtener acceso a todos los niveles de esa ruta. Por ejemplo, si un usuario tiene permiso para obtener acceso a la ruta /a, el usuario también puede obtener acceso a /a/b. Incluso si a un usuario se le ha denegado explícitamente el acceso en AWS Identity and Access Management (IAM) al parámetro /a/b, aun así puede llamar a la operación de la API GetParametersByPath recursivamente para /a y ver /a/b.