

• El panel de AWS Systems Manager CloudWatch dejará de estar disponible después del 30 de abril de 2026. Los clientes pueden seguir utilizando la consola de Amazon CloudWatch para ver, crear y administrar sus paneles de Amazon CloudWatch, tal y como lo hacen actualmente. Para obtener más información, consulte la [documentación del panel de Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

# Integraciones de productos y servicios a Systems Manager
<a name="integrations"></a>

De forma predeterminada, AWS Systems Manager se integra con Servicios de AWS, así como a otros productos y servicios. La siguiente información puede ayudarlo a configurar Systems Manager para que se integre a los productos y los servicios que utilice. 
+ [Cómo integrar con Servicios de AWS](integrations-aws.md)
+  [Integración a otros productos y servicios](integrations-partners.md)

# Cómo integrar con Servicios de AWS
<a name="integrations-aws"></a>

Mediante el uso de documentos de Systems Manager Command (documentos de SSM) y de manuales de procedimientos de Automation, puede usar AWS Systems Manager para integrarse a los Servicios de AWS. Para obtener más información acerca de estos recursos, consulte [Documentos de AWS Systems Manager](documents.md).

Systems Manager está integrado con los siguientes Servicios de AWS.

## Computación
<a name="integrations-aws-compute"></a>


|  |  | 
| --- |--- |
| Amazon Elastic Compute Cloud (Amazon EC2) |  [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/) proporciona capacidad informática escalable en la Nube de AWS. El uso de Amazon EC2 elimina la necesidad de invertir inicialmente en hardware, de manera que puede desarrollar e implementar aplicaciones en menos tiempo. Puede usar Amazon EC2 para lanzar tantos servidores virtuales como necesite, configurar la seguridad y las redes, y administrar el almacenamiento. Systems Manager le permite realizar varias tareas en las instancias EC2. Por ejemplo, puede lanzar, configurar, administrar y mantener sus instancias EC2, así como conectarse a ellas de forma segura y solucionar sus problemas. También puede utilizar Systems Manager para implementar software, determinar el estado de conformidad y recopilar el inventario de las instancias EC2. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 
| Amazon EC2 Auto Scaling |  [Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/) (escalado automático) lo ayuda a asegurarse de contar con la cantidad correcta de instancias EC2 disponibles para gestionar la carga de su aplicación. Crea colecciones de instancias EC2, denominadas grupo de escalado automático. Systems Manager le permite automatizar los procedimientos comunes, como la aplicación de revisiones a las Amazon Machine Image (AMI) que se utilizan en la plantilla de Auto Scaling para el grupo de escalado automático.  Más información [Actualización de AMIs para grupos de escalado automático](automation-tutorial-update-patch-windows-ami-autoscaling.md)   | 
| Amazon Elastic Container Service (Amazon ECS) |  [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/) es un servicio de administración de contenedores rápido y de alta escalabilidad que le permite ejecutar, detener y administrar contenedores de Docker en un clúster. Systems Manager le permite administrar instancias de contenedor de forma remota e incorporar información confidencial a sus contenedores mediante el almacenamiento en parámetros de Parameter Store, una herramienta de Systems Manager, y, a continuación, hacer referencia a ellos en la definición de contenedor. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 
| AWS Lambda |  [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/) es un servicio informático que permite ejecutar código sin aprovisionar ni administrar servidores. Lambda ejecuta su código solo cuando es necesario y escala de manera automática, desde unas pocas solicitudes por día hasta miles por segundo. Systems Manager le permite utilizar las funciones de Lambda dentro del manual de procedimientos de Automation mediante la acción `aws:invokeLambdaFunction`. Si desea usar parámetros de Parameter Store en funciones AWS Lambda, puede usar la extensión de Lambda para secretos y parámetros de AWS para recuperar los valores de los parámetros y almacenarlos en la caché para usarlos en el futuro.  Más información [Actualice un golden AMI mediante la Automation, AWS Lambda, y Parameter Store](automation-tutorial-update-patch-golden-ami.md)  [Cómo utilizar parámetros Parameter Store en funciones AWS Lambda](ps-integration-lambda-extensions.md)  | 

## Internet de las cosas (IoT)
<a name="integrations-aws-IoT"></a>


|  |  | 
| --- |--- |
| AWS IoT GreengrassDispositivos de núcleo de  |  [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/) es un servicio en la nube y de tiempo de ejecución de borde de IoT de código abierto que lo ayuda a crear, implementar y administrar aplicaciones de IoT en los dispositivos. Systems Manager ofrece compatibilidad nativa para dispositivos de núcleo de AWS IoT Greengrass.   Más información [Administración de dispositivos periféricos con Systems Manager](systems-manager-setting-up-edge-devices.md)   | 
| AWS IoTDispositivos de núcleo de  |  [AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/) proporciona los servicios en la nube que conectan los dispositivos IoT a otros dispositivos y servicios en la nube de AWS. AWS IoT proporciona software para dispositivos que puede ayudarlo a integrar los dispositivos IoT en soluciones basadas en AWS IoT. Si los dispositivos se pueden conectar a AWS IoT, AWS IoT puede conectarlos a los servicios en la nube que proporciona AWS. Systems Manager admite dispositivos de núcleo de AWS IoT siempre que esos dispositivos estén configurados como *nodos administrados* en un entorno [híbrido y multinube](operating-systems-and-machine-types.md#supported-machine-types).   Más información [Administrador de nodos en entornos híbridos y multinube con Systems Manager](systems-manager-hybrid-multicloud.md)   | 

## Almacenamiento
<a name="integrations-aws-productgroup"></a>


|  |  | 
| --- |--- |
| Amazon Simple Storage Service (Amazon S3) |  [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/) es un servicio de almacenamiento para Internet. Está diseñado para facilitar a los desarrolladores la informática a escala de la Web. Amazon S3 tiene una interfaz de servicios web simple que puede utilizar para almacenar y recuperar cualquier cantidad de datos, en cualquier momento y desde cualquier parte de la web.  Systems Manager le permite ejecutar scripts remotos y documentos de SSM que estén almacenados en Amazon S3. Distributor, una herramienta de AWS Systems Manager, utiliza Amazon S3 para almacenar paquetes. También puede enviar a Amazon S3 resultados de Run Command y Session Manager, herramientas de AWS Systems Manager. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 

## Herramientas para desarrolladores
<a name="integrations-aws-developer-tools"></a>


|  |  | 
| --- |--- |
| AWS CodeBuild |  [CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/) es un servicio de compilación completamente administrado en la nube. CodeBuild compila su código fuente, ejecuta pruebas de unidad y produce artefactos listos para implementarse. CodeBuild elimina la necesidad de aprovisionar, administrar y escalar sus propios servidores de compilación. Parameter Store le permite almacenar información confidencial para sus especificaciones y proyectos de compilación. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 
| AWS CDK |  AWS Cloud Development Kit (AWS CDK) es un marco para definir la infraestructura de la nube como código, con lenguajes de programación, e implementarla a través de AWS CloudFormation. Application Manager le permite ver sus componentes de CDK agrupados como aplicaciones, ver la estructura de la aplicación, incluidos los recursos subyacentes, ver las alertas, investigar y solucionar los problemas operativos y realizar un seguimiento de los costes en la consola de Application Manager. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 

## Seguridad, identidad y conformidad
<a name="integrations-aws-security-identify-compliance"></a>


|  |  | 
| --- |--- |
| AWS Identity and Access Management (IAM) |  [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/) es un servicio web que lo ayuda a controlar de forma segura el acceso a los recursos de AWS. Utilice IAM para controlar quién está autenticado (ha iniciado sesión) y autorizado (tiene permisos) para utilizar recursos. Systems Manager le permite controlar el acceso a los servicios mediante IAM. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 
|  AWS Secrets Manager  |  [Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) permite una administración más fácil de los secretos. Los secretos pueden ser credenciales de base de datos, contraseñas, claves de API de terceros e incluso texto arbitrario. Parameter Store le permite recuperar secretos de Secrets Manager cuando utiliza otros Servicios de AWS que ya admiten referencias a los parámetros de Parameter Store.  Más información [Referencia a los secretos de AWS Secrets Manager desde los parámetros de Parameter Store](integration-ps-secretsmanager.md)   | 
| AWS Security Hub CSPM |  [Security Hub CSPM](https://docs.aws.amazon.com//securityhub/latest/userguide/what-is-securityhub.html) le brinda una vista integral de sus alertas de seguridad de alta prioridad y del estado de conformidad en todas las Cuentas de AWS. Security Hub CSPM agrega, organiza y prioriza las alertas de seguridad o los resultados de varios Servicios de AWS.  Cuando se activa la integración entre Security Hub CSPM y Patch Manager, una herramienta de AWS Systems Manager, Security Hub CSPM supervisa el estado de la aplicación de revisiones de sus flotas desde el punto de vista de la seguridad. Los detalles de conformidad de la aplicación de revisiones se exportan automáticamente a Security Hub CSPM. Esto le permite utilizar una vista única para monitorear de forma centralizada el estado de conformidad de la aplicación de revisiones y realizar un seguimiento de otros resultados de seguridad. Puede recibir alertas cuando los nodos de la flota se aparten de la conformidad de la aplicación de revisiones y revisar los resultados de esta conformidad en la consola de Security Hub CSPM.  También puede integrar Security Hub CSPM a Explorer y OpsCenter, herramientas de AWS Systems Manager. La integración a Security Hub le permite recibir resultados de Security Hub en Explorer y OpsCenter. Los resultados de Security Hub CSPM proporcionan información de seguridad que puede utilizar en Explorer y OpsCenter para agregar y tomar medidas en cuanto a sus problemas operativos, de seguridad y de rendimiento en AWS Systems Manager. El uso de Security Hub CSPM conlleva un cargo. Para obtener más información, consulte [Precios de Security Hub CSPM](https://aws.amazon.com/security-hub/pricing/). [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 

## Criptografía y PKI
<a name="integrations-aws-cryptography-pki"></a>


|  |  | 
| --- |--- |
| AWS Key Management Service (AWS KMS) |  [AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/) es un servicio administrado que le permite crear y controlar las claves administradas por el cliente, las claves de cifrado que se utilizan para cifrar los datos. Systems Manager le permite utilizar AWS KMS para crear parámetros `SecureString` y para cifrar los datos de las sesiones de Session Manager. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 

## Administración y gobierno
<a name="integrations-aws-management-governance"></a>


|  |  | 
| --- |--- |
| AWS CloudFormation |  [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/) es un servicio que lo ayuda a modelar y configurar los recursos de Amazon Web Services, de manera que pueda dedicar menos tiempo a la administración de dichos recursos y más tiempo a centrarse en las aplicaciones que se ejecutan en AWS. Parameter Store es una fuente de referencias dinámicas. Las referencias dinámicas proporcionan una forma consistente y sólida de especificar valores externos que estén almacenados y se administren en otros servicios de sus plantillas de pila de CloudFormation.  Más información [Uso de referencias dinámicas para especificar valores de plantillas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html)   | 
| AWS CloudTrail |  [CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/) es un servicio de Servicio de AWS que lo ayuda a autorizar la gobernanza, la conformidad y la auditoría de las operaciones y de los riesgos de su Cuenta de AWS. Las acciones que realiza un usuario, rol o servicio de Servicio de AWS se registran como eventos en CloudTrail. Los eventos incluyen las acciones llevadas a cabo en la Consola de administración de AWS, la AWS Command Line Interface (AWS CLI), los AWS SDK y las API. Systems Manager se integra con CloudTrail, que registra la mayoría de las llamadas a la API de Systems Manager como eventos. Estas incluyen las llamadas a la API procedentes de la consola de Systems Manager y las llamadas dirigidas a las API de Systems Manager.  Más información [Registro de llamadas a la API de AWS Systems Manager con AWS CloudTrail](monitoring-cloudtrail-logs.md)   | 
| Registros de Amazon CloudWatch |  [Registros de Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/) le permite centralizar los registros de todos los sistemas, las aplicaciones y los Servicios de AWS que utilice. Esto le permite consultarlos, buscar códigos de error o patrones específicos, filtrarlos en función de campos específicos o archivarlos de forma segura para análisis futuros. Systems Manager admite el envío de registros de SSM Agent, Run Command y Session Manager a los Registros de CloudWatch. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 
| Amazon EventBridge |  [EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/) entrega una secuencia de eventos de sistema casi en tiempo real que describe los cambios producidos en los recursos de Amazon Web Services. Mediante reglas sencillas que puede configurar rápidamente, puede asignar los eventos y dirigirlos a uno o más flujos o funciones de destino. EventBridge toma conocimiento de los cambios operativos a medida que se producen. EventBridge responde a estos cambios operativos y toma las medidas correctivas necesarias. Estas acciones incluyen el envío de mensajes para responder al entorno, la activación de las funciones y el registro de la información de estado. Systems Manager tiene varios eventos compatibles con EventBridge, lo que le permite realizar acciones en función del contenido de dichos eventos.  Más información [Cómo monitorear eventos de Systems Manager con Amazon EventBridge](monitoring-eventbridge-events.md)  Amazon EventBridge es la forma preferida de administrar sus eventos. CloudWatch Events y EventBridge son el mismo servicio subyacente y la misma API, pero EventBridge ofrece más características. Los cambios que realice en CloudWatch o EventBridge se reflejarán en cada consola. Para obtener más información, consulte la [https://docs.aws.amazon.com/eventbridge/](https://docs.aws.amazon.com/eventbridge/).  | 
| AWS Config |  [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/) proporciona una vista detallada de la configuración de los recursos de AWS de su Cuenta de AWS. Esto incluye cómo se relacionan los recursos entre sí y cómo se han configurado. Esto le permite ver cómo cambian las configuraciones y las relaciones con el paso del tiempo. Systems Manager está integrado a AWS Config, lo que proporciona varias reglas que lo ayudan a obtener visibilidad de sus instancias EC2. Estas reglas lo ayudan a identificar las instancias EC2 administradas por Systems Manager, las configuraciones del sistema operativo, las actualizaciones de nivel del sistema, las aplicaciones instaladas, las configuraciones de red y mucho más. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 
| AWS Trusted Advisor |  [Trusted Advisor](https://aws.amazon.com/premiumsupport/technology/trusted-advisor/) es una herramienta online que proporciona orientación en tiempo real para ayudarlo a aprovisionar sus recursos de acuerdo con las prácticas recomendadas de AWS. Systems Manager aloja a Trusted Advisor, y es posible ver los datos de Trusted Advisor en Explorer. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 
| AWS Organizations |  [Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/) es un servicio de administración de cuentas que le permite agrupar varias Cuentas de AWS en una organización que usted crea y administra de manera centralizada. Organizations incluye capacidades de facturación unificada y administración de cuentas que le permiten satisfacer mejor las necesidades de presupuestos, seguridad y conformidad de su empresa. La integración de [Change Manager](change-manager.md), una herramienta de AWS Systems Manager, a Organizations permite utilizar una cuenta de administrador delegado para administrar solicitudes de cambio, plantillas de cambio y aprobaciones para toda la organización a través de esta única cuenta. La integración de Organizations a [Inventario](systems-manager-inventory.md), una herramienta de AWS Systems Manager, y [Explorer](Explorer.md) le permite agregar los datos de operaciones (OpsData) y de inventario correspondientes a varias Regiones de AWS y Cuentas de AWS. La integración de Quick Setup, una herramienta de AWS Systems Manager, a Organizations automatiza las tareas comunes de configuración de servicios e implementa configuraciones de servicios conforme a las prácticas recomendadas en las unidades organizativas (OU).  | 

## Redes y entrega de contenido
<a name="integrations-aws-networking-content-delivery"></a>


|  |  | 
| --- |--- |
| AWS PrivateLink |  [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html) le permite conectar de forma privada su nube virtual privada (VPC) a los servicios admitidos de Servicios de AWS y a los puntos de conexión de VPC, sin la necesidad de contar con una puerta de enlace de Internet, ni un dispositivo NAT, ni una conexión de VPN ni una conexión de Direct Connect. Systems Manager admite nodos administrados que se conectan a las API de Systems Manager mediante AWS PrivateLink. Esto mejora la posición de seguridad de los nodos administrados porque AWS PrivateLink restringe todo el tráfico de red entre los nodos administrados, Systems Manager y Amazon EC2 a la red de Amazon. Esto significa que no es necesario que los nodos administrados tengan acceso a Internet.  Más información [Mejora de la seguridad de las instancias de EC2 mediante puntos de conexión de VPC para Systems Manager](setup-create-vpc.md)    | 

## Análisis
<a name="integrations-aws-analytics"></a>


|  |  | 
| --- |--- |
| Amazon Athena |  [Athena](https://docs.aws.amazon.com/athena/latest/ug/) es un servicio interactivo de consultas que le permite analizar datos directamente en Amazon Simple Storage Service (Amazon S3) usando SQL estándar. Con unas pocas acciones en la Consola de administración de AWS, puede apuntar Athena a los datos almacenados en Amazon S3 y comenzar a utilizar SQL estándar para ejecutar consultas de una única vez y obtener resultados en cuestión de segundos. Systems Manager Inventory se integra a Athena para ayudarlo a consultar los datos de inventario de varias Regiones de AWS y Cuentas de AWS. La integración de Athena utiliza la sincronización de datos de recursos, de modo que pueda ver los datos de inventario de todos los nodos administrados en la página **Detailed View** (Vista detallada) de la consola de Systems Manager Inventory. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 
| AWS Glue |  [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/) es un servicio completamente administrado de ETL (extracción, transformación y carga) con el que resulta más rentable y sencillo categorizar los datos, limpiarlos, enriquecerlos y moverlos de manera fiable entre distintos almacenes y flujos de datos.  Systems Manager utiliza AWS Glue para rastrear los datos de Inventory en su bucket de S3.  Más información [Consulta de datos de Inventory de varias regiones y cuentas](systems-manager-inventory-query.md)   | 
| Amazon Quick |  [Quick](https://docs.aws.amazon.com/quicksuite/latest/userguide/what-is.html) es un servicio de análisis empresariales que puede utilizar para crear visualizaciones, llevar a cabo análisis únicos y obtener información empresarial a partir de sus datos. Puede detectar automáticamente los orígenes de datos de AWS y también trabajar con sus orígenes de datos. La sincronización de datos de recursos de Systems Manager envía los datos de inventario recopilados de todos los nodos administrados a un solo bucket de S3. Puede utilizar Quick para consultar y analizar los datos agregados. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 

## Integración de aplicaciones
<a name="integrations-aws-application-integration"></a>


|  |  | 
| --- |--- |
| Amazon Simple Notification Service (Amazon SNS) |  [Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/) es un servicio web que coordina y administra la entrega o el envío de mensajes a los puntos de enlace o los clientes suscritos. Systems Manager genera estados para varios servicios que pueden registrarse mediante las notificaciones de Amazon SNS. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-aws.html)  | 

## Consola de administración de AWS
<a name="integrations-aws-management-console"></a>


|  |  | 
| --- |--- |
| Grupos de recursos de AWS |  [Resource Groups](https://docs.aws.amazon.com/ARG/latest/userguide/) organiza sus recursos de AWS. Los grupos de recursos facilitan la administración, monitorización y automatización de tareas en grandes cantidades de recursos al mismo tiempo. Los tipos de recursos de Systems Manager, como los nodos administrados, los documentos de SSM, los periodos de mantenimiento, los parámetros de Parameter Store y las líneas de base de revisiones se pueden agregar a los grupos de recursos.  Más información [Qué son las Grupos de recursos de AWS?](https://docs.aws.amazon.com/ARG/latest/userguide/welcome.html)   | 

**Topics**
+ [Computación](#integrations-aws-compute)
+ [Internet de las cosas (IoT)](#integrations-aws-IoT)
+ [Almacenamiento](#integrations-aws-productgroup)
+ [Herramientas para desarrolladores](#integrations-aws-developer-tools)
+ [Seguridad, identidad y conformidad](#integrations-aws-security-identify-compliance)
+ [Criptografía y PKI](#integrations-aws-cryptography-pki)
+ [Administración y gobierno](#integrations-aws-management-governance)
+ [Redes y entrega de contenido](#integrations-aws-networking-content-delivery)
+ [Análisis](#integrations-aws-analytics)
+ [Integración de aplicaciones](#integrations-aws-application-integration)
+ [Consola de administración de AWS](#integrations-aws-management-console)
+ [Ejecución de scripts desde Amazon S3](integration-s3.md)
+ [Referencia a los secretos de AWS Secrets Manager desde los parámetros de Parameter Store](integration-ps-secretsmanager.md)
+ [Cifrado de AWS KMS para los parámetros SecureString del Parameter Store](secure-string-parameter-kms-encryption.md)
+ [Uso de secretos de AWS Secrets Manager en Amazon Elastic Kubernetes Service](integrate_eks.md)
+ [Cómo utilizar parámetros Parameter Store en funciones AWS Lambda](ps-integration-lambda-extensions.md)

# Ejecución de scripts desde Amazon S3
<a name="integration-s3"></a>

En esta sección, se describe cómo descargar y ejecutar scripts desde Amazon Simple Storage Service (Amazon S3). El siguiente tema incluye información y terminología relacionadas a Amazon S3. Para obtener más información sobre Amazon S3, consulte [¿Qué es Amazon S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html). Puede ejecutar diversos tipos de scripts, incluidos los cuadernos de trabajos de Ansible, Python, Ruby, Shell y PowerShell. 

También puede descargar un directorio en el que se incluyen varios scripts. Cuando ejecuta el script principal en el directorio, AWS Systems Manager también ejecuta los scripts a los que se hace referencia y se incluyen en el directorio. 

Tenga en cuenta los siguientes detalles importantes acerca de la ejecución de scripts desde Amazon S3:
+ Systems Manager no comprueba que el script pueda ejecutarse en un nodo. Antes de descargar y ejecutar el script, verifique que el software necesario esté instalado en el nodo. O bien, puede crear un documento compuesto que instale el software mediante Run Command o State Manager, herramientas de AWS Systems Manager, y, a continuación, descargue y ejecute el script.
+ Compruebe que su usuario, rol o grupo tenga los permisos de AWS Identity and Access Management (IAM) que se necesitan para la lectura del bucket de S3.
+ Asegúrese de que el perfil de instancias de las instancias de Amazon Elastic Compute Cloud (Amazon EC2) tenga los permisos `s3:ListBucket` y `s3:GetObject`. Si el perfil de instancia no tiene estos permisos, el sistema no puede descargar el script del bucket de S3. Para obtener más información, consulte [Uso de perfiles de instancias](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) en la *Guía del usuario de IAM*. 

## Ejecutar scripts de shell desde Amazon S3
<a name="integration-s3-shell"></a>

La siguiente información incluye procedimientos que sirven de ayuda para ejecutar scripts desde Amazon Simple Storage Service (Amazon S3) utilizando la consola de AWS Systems Manager o la AWS Command Line Interface (AWS CLI). Aunque en los ejemplos se utilizan scripts de shell, se pueden sustituir por otros tipos de scripts.

### Ejecutar un script de shell desde Amazon S3 (consola)
<a name="integration-s3-ruby-console"></a>

**Ejecutar un script de shell desde Amazon S3**

1. Abra la consola de AWS Systems Manager en [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. En el panel de navegación, elija **Run Command**.

1. Elija **Run command (Ejecutar comando)**.

1. En la lista **Command document** (Documento de Command), elija **`AWS-RunRemoteScript`**.

1. En **Command parameters** haga lo siguiente:
   + En **Source Type**, seleccione **S3**. 
   + En el cuadro de texto **Source Info** (Información de la fuente), ingrese la información requerida para acceder a la fuente, con el siguiente formato. Reemplace cada *example resource placeholder* con su propia información.
**nota**  
Sustituya https://s3.*aws-api-domain* por la URL de su bucket. Puede copiar la URL de su bucket en Amazon S3 en la pestaña **Objects** (Objetos).

     ```
     {"path":"https://s3.aws-api-domain/path to script"}
     ```

     A continuación se muestra un ejemplo.

     ```
     {"path":"https://amzn-s3-demo-bucket.s3.us-east-2.amazonaws.com/scripts/shell/helloWorld.sh"}
     ```
   + En el campo **Command Line** (Línea de comandos), ingrese los parámetros para la ejecución de scripts. A continuación se muestra un ejemplo.

     ```
     helloWorld.sh argument-1 argument-2
     ```
   + (Opcional) En el campo **Working Directory** (Directorio de trabajo), ingrese el nombre de un directorio del nodo en el que desee descargar y ejecutar el script.
   + (Opcional) En **Execution Timeout**, especifique el número de segundos que esperará el sistema antes de fallar en la ejecución del comando de script. 

1. En la sección **Targets** (Destinos), para elegir los nodos administrados en los que desea ejecutar esta operación, especifique las etiquetas, seleccione las instancias o los dispositivos de borde manualmente o especifique un grupo de recursos.
**sugerencia**  
Si un nodo administrado que espera ver no aparece en la lista, consulte [Solución de problemas de disponibilidad de nodos administrados](fleet-manager-troubleshooting-managed-nodes.md) para obtener consejos de solución de problemas.

1. En **Otros parámetros**:
   + En **Comentario**, ingrese la información acerca de este comando.
   + En **Tiempo de espera (segundos)**, especifique el número de segundos que tiene que esperar el sistema antes de indicar que se ha producido un error en la ejecución del comando general. 

1. En **Rate control** (Control de velocidad):
   + En **Concurrency** (Simultaneidad), especifique un número o un porcentaje de los nodos administrados en los que desea ejecutar el comando al mismo tiempo.
**nota**  
Si seleccionó los destinos mediante la especificación de etiquetas aplicadas a nodos administrados o de grupos de recursos de AWS y no está seguro de cuántos nodos administrados tienen destino, limite el número de destinos que puede ejecutar el documento al mismo tiempo. Para ello, especifique un porcentaje.
   + En **Error threshold** (Umbral de errores), especifique cuándo desea parar la ejecución del comando en los demás nodos administrados después de que haya fallado en un número o un porcentaje de los nodos. Por ejemplo, si especifica tres errores, Systems Manager dejará de enviar el comando cuando se reciba el cuarto error. Los nodos administrados que estén procesando el comando todavía pueden enviar errores.

1. (Opcional) En **Opciones de salida**, para guardar la salida del comando en un archivo, seleccione el cuadro **Write command output to an S3 bucket**. Ingrese los nombres del bucket y del prefijo (carpeta) en los cuadros.
**nota**  
Los permisos de S3 que conceden la capacidad de escribir datos en un bucket de S3 son los del perfil de instancia (para instancias de EC2) o rol de servicio de IAM (máquinas activadas de manera híbrida) asignados a la instancia, no los del usuario de IAM que realiza esta tarea. Para obtener más información, consulte [Configuración de permisos de instancia requeridos para Systems Manager](setup-instance-permissions.md) o [Creación de un rol de servicio de IAM para un entorno híbrido](hybrid-multicloud-service-role.md). Además, si el bucket de S3 especificado se encuentra en una Cuenta de AWS diferente, asegúrese de que el perfil de instancias o el rol de servicio de IAM asociado al nodo administrado tenga los permisos necesarios para escribir en ese bucket.

1. En la sección **Notificaciones de SNS**, seleccione la casilla de verificación **Habilitar notificaciones de SNS** si desea recibir notificaciones sobre el estado de ejecución de los comandos.

   Para obtener más información acerca de la configuración de las notificaciones de Amazon SNS para Run Command, consulte [Cómo monitorear los cambios de estado de Systems Manager mediante las notificaciones de Amazon SNS](monitoring-sns-notifications.md).

1. Seleccione **Ejecutar**.

### Ejecutar un script de shell desde Amazon S3 (línea de comandos)
<a name="integration-s3-shell-cli"></a>

1. Si aún no lo ha hecho, instale y configure la AWS Command Line Interface (AWS CLI).

   Para obtener más información, consulte [Instalación o actualización de la última versión de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Ejecute el siguiente comando. Reemplace cada *example resource placeholder* con su propia información.
**nota**  
Sustituya https://s3.*aws-api-domain*/*script path* por la URL de su bucket. Puede copiar la URL de su bucket en Amazon S3 en la pestaña **Objects** (Objetos).

------
#### [ Linux & macOS ]

   ```
   aws ssm send-command \
       --document-name "AWS-RunRemoteScript" \
       --output-s3-bucket-name "amzn-s3-demo-bucket" \
       --output-s3-key-prefix "key-prefix" \
       --targets "Key=InstanceIds,Values=instance-id" \
       --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/script path\"}"],"commandLine":["script name and arguments"]}'
   ```

------
#### [ Windows ]

   ```
   aws ssm send-command ^
       --document-name "AWS-RunRemoteScript" ^
       --output-s3-bucket-name "amzn-s3-demo-bucket" ^
       --output-s3-key-prefix "key-prefix" ^
       --targets "Key=InstanceIds,Values=instance-id" ^
       --parameters "sourceType"="S3",sourceInfo='{\"path\":\"https://s3.aws-api-domain/script path\"}',"commandLine"="script name and arguments"
   ```

------
#### [ PowerShell ]

   ```
   Send-SSMCommand `
       -DocumentName "AWS-RunRemoteScript" `
       -OutputS3BucketName "amzn-s3-demo-bucket" `
       -OutputS3KeyPrefix "key-prefix" `
       -Target @{Key="InstanceIds";Values=@("instance-id")} `
       -Parameter @{
           sourceType = "S3"; 
           sourceInfo = '{"path": "s3://bucket-name/path/to/script"}'; 
           commandLine = "script name and arguments"
       }
   ```

------

# Referencia a los secretos de AWS Secrets Manager desde los parámetros de Parameter Store
<a name="integration-ps-secretsmanager"></a>

AWS Secrets Manager ayuda a organizar y administrar los datos de configuración importantes, como las credenciales, las contraseñas y las claves de licencia. Parameter Store, una herramienta de AWS Systems Manager, se integra en Secrets Manager, lo que le permite recuperar secretos de Secrets Manager cuando se utilizan otros Servicios de AWS que ya admiten las referencias a los parámetros de Parameter Store. Estos servicios incluyen Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS), AWS Lambda, CloudFormation, AWS CodeBuild, AWS CodeDeploy y otras herramientas de Systems Manager. Si se utiliza Parameter Store para hacer referencia a los secretos de Secrets Manager, se crea un proceso consistente y seguro para llamar y utilizar secretos y datos de referencia en el código y los scripts de configuración. 

Para obtener más información acerca de Secrets Manager, consulte [¿Qué es AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) en la *Guía del usuario de AWS Secrets Manager*.

## Restricciones
<a name="integration-ps-secretsmanager-restrictions"></a>

Tenga en cuenta las siguientes restricciones cuando utilice Parameter Store para hacer referencia a los secretos de Secrets Manager:
+ Solo se pueden recuperar secretos de Secrets Manager utilizando las operaciones [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html) y [GetParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameters.html) de la API. Las operaciones de modificación y de consulta avanzada de la API, como, por ejemplo, [DescribeParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_DescribeParameters.html) y [GetParametersByPath](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParametersByPath.html), no se admiten en Secrets Manager.
+ Puede utilizar la AWS Command Line Interface (AWS CLI), las AWS Tools for Windows PowerShell y los SDK para recuperar un secreto mediante Parameter Store.
+ Los secretos de Secrets Manager en Parameter Store deben tener un prefijo de `/aws/reference/secretsmanager`. A continuación se muestran algunos ejemplos:

  `/aws/reference/secretsmanager/CFCreds1`

  `/aws/reference/secretsmanager/myapp/db/password`
+ Parameter Store respeta las políticas de AWS Identity and Access Management (IAM) adjuntas a los secretos de Secrets Manager. Por ejemplo, si el usuario 1 no tiene acceso al secreto A, el usuario 1 no puede recuperar el secreto A mediante Parameter Store.
+ Los parámetros que hacen referencia a los secretos de Secrets Manager no pueden utilizar las características de historial ni de control de versiones de Parameter Store.
+ Parameter Store respeta las fases de la versión de Secrets Manager. Si se hace referencia a una fase de la versión, se utilizan letras, números, puntos (.), guiones (-) o guiones bajos (\$1). Si se especifica cualquier otro símbolo en la fase de la versión, la referencia producirá un error.

## Cómo hacer referencia a un secreto de Secrets Manager con Parameter Store
<a name="integration-ps-secretsmanager-create"></a>

En el siguiente procedimiento, se describe cómo hacer referencia a un secreto de Secrets Manager utilizando las API de Parameter Store. El procedimiento hace referencia a otros procedimientos de la *Guía del usuario de AWS Secrets Manager*.

**nota**  
Antes de comenzar, compruebe que tiene permiso para hacer referencia a los secretos de Secrets Manager en los parámetros de Parameter Store. Si tiene permisos de administrador en Secrets Manager y Systems Manager, puede hacer referencia o recuperar secretos utilizando las API de Parameter Store. Si hace referencia a un secreto de Secrets Manager en un parámetro de Parameter Store y no tiene permiso para acceder a ese secreto, la referencia producirá un error. Para obtener más información, consulte [Autenticación y control de acceso para AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html) en la *Guía del usuario de AWS Secrets Manager*.

**importante**  
Parameter Store funciona como un servicio de transferencia para las referencias a los secretos de Secrets Manager. Parameter Store no conserva los datos ni los metadatos de los secretos. La referencia es sin estado.

**Para hacer referencia a un secreto Secrets Manager mediante el uso de Parameter Store**

1. Cree un secreto en Secrets Manager. Para obtener más información, consulte [Cree y administre secretos con AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html).

1. Haga referencia a un secreto utilizando la AWS CLI, AWS Tools for Windows PowerShell o el SDK. Cuando haga referencia a un secreto de Secrets Manager, el nombre debe comenzar por la siguiente ruta reservada: `/aws/reference/secretsmanager/`. Cuando se especifica esta ruta, Systems Manager sabe que tiene que recuperar el secreto desde Secrets Manager en lugar de desde Parameter Store. A continuación, se presentan algunos ejemplos de nombres que hacen referencia correctamente a los secretos de Secrets Manager, `CFCreds1` y `DBPass`, mediante Parameter Store.
   + `/aws/reference/secretsmanager/CFCreds1`
   + `/aws/reference/secretsmanager/DBPass`

   A continuación, se muestra un ejemplo de código Java que hace referencia a una clave de acceso y una clave secreta que están almacenadas en Secrets Manager. En este ejemplo de código, se configura un cliente de Amazon DynamoDB. El código recupera los datos de configuración y las credenciales de Parameter Store. Los datos de configuración se almacenan como un parámetro de cadena en Parameter Store y las credenciales se almacenan en Secrets Manager. Aunque los datos de configuración y las credenciales se almacenan en servicios independientes, es posible acceder a ambos conjuntos de datos desde Parameter Store mediante la API `GetParameter`.

   ```
   /**
   * Initialize Systems Manager client with default credentials
   */
   AWSSimpleSystemsManagement ssm = AWSSimpleSystemsManagementClientBuilder.defaultClient();
    
   ...
    
   /**
   * Example method to launch DynamoDB client with credentials different from default
   * @return DynamoDB client
   */
   AmazonDynamoDB getDynamoDbClient() {
       //Getting AWS credentials from Secrets Manager using GetParameter
       BasicAWSCredentials differentAWSCreds = new BasicAWSCredentials(
               getParameter("/aws/reference/secretsmanager/access-key"),
               getParameter("/aws/reference/secretsmanager/secret-key"));
    
       //Initialize the DynamoDB client with different credentials
       final AmazonDynamoDB client = AmazonDynamoDBClient.builder()
               .withCredentials(new AWSStaticCredentialsProvider(differentAWSCreds))
               .withRegion(getParameter("region")) //Getting configuration from Parameter Store
               .build();
       return client;
   }
    
   /**
   * Helper method to retrieve parameter value
   * @param parameterName identifier of the parameter
   * @return decrypted parameter value
   */
   public GetParameterResult getParameter(String parameterName) {
       GetParameterRequest request = new GetParameterRequest();
       request.setName(parameterName);
       request.setWithDecryption(true);
       return ssm.newGetParameterCall().call(request).getParameter().getValue();
   }
   ```

   A continuación, se muestran algunos ejemplos de la AWS CLI. Use el comando `aws secretsmanager list-secrets` para encontrar los nombres de sus secretos.

   **AWS CLI Ejemplo 1 de la : referencia mediante el nombre del secreto**

------
#### [ Linux & macOS ]

   ```
   aws ssm get-parameter \
       --name /aws/reference/secretsmanager/s1-secret \
       --with-decryption
   ```

------
#### [ Windows ]

   ```
   aws ssm get-parameter ^
       --name /aws/reference/secretsmanager/s1-secret ^
       --with-decryption
   ```

------

   El comando devuelve información similar a la siguiente.

   ```
   {
       "Parameter": {
           "Name": "/aws/reference/secretsmanager/s1-secret",
           "Type": "SecureString",
           "Value": "Fl*MEishm!al875",
           "Version": 0,
           "SourceResult": 
                 "{
                      \"CreatedDate\": 1526334434.743,
                      \"Name\": \"s1-secret\",
                      \"VersionId\": \"aaabbbccc-1111-222-333-123456789\",
                      \"SecretString\": \"Fl*MEishm!al875\",
                      \"VersionStages\": [\"AWSCURRENT\"],
                      \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\"
                  }"
           "LastModifiedDate": 2018-05-14T21:47:14.743Z,
           "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-
                  E18LRP",
         }
   }
   ```

   **AWS CLI Ejemplo 2 de la : referencia que incluye el ID de versión**

------
#### [ Linux & macOS ]

   ```
   aws ssm get-parameter \
       --name /aws/reference/secretsmanager/s1-secret:11111-aaa-bbb-ccc-123456789 \
       --with-decryption
   ```

------
#### [ Windows ]

   ```
   aws ssm get-parameter ^
       --name /aws/reference/secretsmanager/s1-secret:11111-aaa-bbb-ccc-123456789 ^
       --with-decryption
   ```

------

   El comando devuelve información similar a la siguiente.

   ```
   {
       "Parameter": {
           "Name": "/aws/reference/secretsmanager/s1-secret",
           "Type": "SecureString",
           "Value": "Fl*MEishm!al875",
           "Version": 0,
           "SourceResult": 
                 "{
                      \"CreatedDate\": 1526334434.743,
                      \"Name\": \"s1-secret\",
                      \"VersionId\": \"11111-aaa-bbb-ccc-123456789\",
                      \"SecretString\": \"Fl*MEishm!al875\",
                      \"VersionStages\": [\"AWSCURRENT\"],
                      \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\"
                  }"
           "Selector": ":11111-aaa-bbb-ccc-123456789"
         }
           "LastModifiedDate": 2018-05-14T21:47:14.743Z,
           "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-
                  E18LRP",
   }
   ```

   **AWS CLI Ejemplo 3 de la : referencia que incluye la fase de la versión**

------
#### [ Linux & macOS ]

   ```
   aws ssm get-parameter \
       --name /aws/reference/secretsmanager/s1-secret:AWSCURRENT \
       --with-decryption
   ```

------
#### [ Windows ]

   ```
   aws ssm get-parameter ^
       --name /aws/reference/secretsmanager/s1-secret:AWSCURRENT ^
       --with-decryption
   ```

------

   El comando devuelve información similar a la siguiente.

   ```
   {
       "Parameter": {
           "Name": "/aws/reference/secretsmanager/s1-secret",
           "Type": "SecureString",
           "Value": "Fl*MEishm!al875",
           "Version": 0,
           "SourceResult": 
                 "{
                      \"CreatedDate\": 1526334434.743,
                      \"Name\": \"s1-secret\",
                      \"VersionId\": \"11111-aaa-bbb-ccc-123456789\",
                      \"SecretString\": \"Fl*MEishm!al875\",
                      \"VersionStages\": [\"AWSCURRENT\"],
                      \"ARN\": \"arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-E18LRP\"
                  }"
           "Selector": ":AWSCURRENT"
         }
         "LastModifiedDate": 2018-05-14T21:47:14.743Z,
         "ARN": "arn:aws:secretsmanager:us-east-2:123456789012:secret:s1-secret-
                   E18LRP",
   }
   ```

# Cifrado de AWS KMS para los parámetros SecureString del Parameter Store de AWS Systems Manager
<a name="secure-string-parameter-kms-encryption"></a>

Con el Parameter Store de AWS Systems Manager, puede crear [parámetros SecureString](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html#what-is-a-parameter), que son parámetros que tienen un nombre de parámetro en texto no cifrado y un valor de parámetro cifrado. El Parameter Store utiliza AWS KMS para cifrar y descifrar los valores de los parámetros `SecureString`.

Con el Parameter Store, puede crear, almacenar y administrar datos como parámetros con valores. Puede crear un parámetro en Parameter Store y utilizarlo en varias aplicaciones y servicios de acuerdo con las políticas y los permisos que diseñe. Cuando necesite cambiar el valor de un parámetro, cambiará una instancia, y no tendrá que administrar una modificación propensa a errores en varios orígenes. Parameter Store admite una estructura jerárquica para los nombres de los parámetros, por lo que puede asignar un parámetro para usos específicos. 

Para administrar información confidencial, puede crear parámetros `SecureString`. El Parameter Store utiliza AWS KMS keys para cifrar los valores de los parámetros `SecureString` cuando estos se crean o se modifican. También utiliza claves KMS para descifrar los valores de los parámetros cuando se obtiene acceso a ellos. Puede utilizar la [Clave administrada de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) que el Parameter Store crea para su cuenta o especificar su propia [clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). 

**importante**  
El Parameter Store solo admite [claves de KMS simétricas](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose-key-spec.html#symmetric-cmks). No se puede utilizar una [clave KMS asimétrica](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) 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 distintos tipos de claves](https://docs.aws.amazon.com/kms/latest/developerguide/identify-key-types.html) en la *Guía para desarrolladores de AWS Key Management Service*.

Parameter Store admite dos niveles de `SecureString` parámetros: *estándar* y *avanzados*. Los parámetros estándar, que no pueden superar los 4096 bytes, se cifran y descifran directamente con la clave KMS que especifique. Para cifrar y descifrar parámetros `SecureString` avanzados, Parameter Store utiliza el cifrado de sobre con el [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/). Puede convertir un parámetro `SecureString` estándar en un parámetro avanzado, pero no puede convertir un parámetro avanzado en uno estándar. Para obtener más información acerca de la diferencia entre los parámetros `SecureString` estándar y avanzados, consulte [Administración de niveles de parámetros](parameter-store-advanced-parameters.md).

**Topics**
+ [Protección de los parámetros SecureString estándar](#kms-encryption-securestring-standard)
+ [Protección de parámetros Secure String avanzados](#kms-encryption-securestring-advanced)
+ [Configurar permisos para cifrar y descifrar valores de parámetros](#parameter-policy-kms-encryption)
+ [Parameter StoreContexto de cifrado de](#parameter-store-kms-encryption-context)
+ [Solución de problemas de las claves de KMS en el Parameter Store](#parameter-store-kms-cmk-troubleshooting)

## Protección de los parámetros SecureString estándar
<a name="kms-encryption-securestring-standard"></a>

Parameter Store no realiza ninguna operación criptográfica. En lugar de ello, utiliza AWS KMS para cifrar y descifrar los valores de los parámetros `SecureString`. Cuando se crea o cambia el valor de un parámetro `SecureString` estándar, el Parameter Store llama a la operación [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) de AWS KMS. Esta operación utiliza directamente una clave KMS de cifrado simétrica para cifrar el valor del parámetro en lugar de utilizar la clave KMS para generar una [clave de datos](https://docs.aws.amazon.com/kms/latest/developerguide/data-keys.html). 

Puede seleccionar la clave de KMS que utiliza el Parameter Store para cifrar el valor del parámetro. Si no especifica una clave de KMS, el Parameter Store utiliza la Clave administrada de AWS que Systems Manager crea automáticamente en su cuenta. Esta clave KMS tiene el alias `aws/ssm`.

Si desea ver la clave KMS `aws/ssm` predeterminada de su cuenta, utilice la operación [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) de la API de AWS KMS. El siguiente ejemplo utiliza el comando `describe-key` de la AWS Command Line Interface (AWS CLI) con el nombre de alias `aws/ssm`.

```
aws kms describe-key \
    --key-id alias/aws/ssm
```

Para crear un parámetro `SecureString` estándar, utilice la operación [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html) de la API de Systems Manager. Omita el parámetro `Tier` o especifique un valor de `Standard`, que es el valor predeterminado. Incluya un parámetro `Type` con el valor `SecureString`. Para especificar una clave KMS, utilice el parámetro `KeyId`. El valor predeterminado es la Clave administrada de AWS de su cuenta, `aws/ssm`. 

A continuación, el Parameter Store llama a la operación `Encrypt` de AWS KMS con la clave de KMS y el valor del parámetro en texto no cifrado. AWS KMS devuelve el valor del parámetro cifrado y el Parameter Store lo almacena junto con el nombre del parámetro.

El siguiente ejemplo utiliza el comando [put-parameter](https://docs.aws.amazon.com/cli/latest/reference/ssm/put-parameter.html) de Systems Manager y su parámetro `--type` en la AWS CLI para crear un parámetro `SecureString`. Como el comando omite los parámetros opcionales `--tier` y `--key-id`, el Parameter Store crea un parámetro `SecureString` estándar y lo cifra con la Clave administrada de AWS.

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString
```

El siguiente ejemplo similar utiliza el parámetro `--key-id` para especificar una [clave KMS administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). En el ejemplo se utiliza un ID de clave KMS para identificar la clave KMS, pero se puede utilizar cualquier identificador de clave KMS válido. Como el comando omite el parámetro `Tier` (`--tier`), Parameter Store crea un parámetro `SecureString` estándar, no uno avanzado.

```
aws ssm put-parameter \
    --name param1 \
    --value "secret" \
    --type SecureString \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
```

Cuando se obtiene un parámetro `SecureString` de Parameter Store, su valor está cifrado. Para obtener un parámetro, utilice la operación [GetParameter ](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html) de la API de Systems Manager.

El siguiente ejemplo utiliza el comando [get-parameter](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html) de Systems Manager en la AWS CLI para obtener el parámetro `MyParameter` del Parameter Store sin descifrar su valor.

```
aws ssm get-parameter --name MyParameter
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg"
    }
}
```

Para descifrar el valor del parámetro antes de devolverlo, establezca el parámetro `WithDecryption` de `GetParameter` en `true`. Al utilizar `WithDecryption`, el Parameter Store llama a la operación [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) de AWS KMS en su nombre para descifrar el valor del parámetro. En consecuencia, la solicitud `GetParameter` devuelve el parámetro con un valor en texto no cifrado, tal y como se muestra en el siguiente ejemplo.

```
aws ssm get-parameter \
    --name MyParameter \
    --with-decryption
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "secret_value"
    }
}
```

En el siguiente flujo de trabajo se muestra cómo el Parameter Store utiliza una clave de KMS para cifrar y descifrar un parámetro `SecureString` estándar.

### Cifrar un parámetro estándar
<a name="kms-encryption-securestring-standard-encrypt"></a>

1. Cuando se utiliza `PutParameter` para crear un parámetro `SecureString`, Parameter Store envía una solicitud `Encrypt` a AWS KMS. Dicha solicitud incluye el valor del parámetro en texto no cifrado, la clave de KMS que ha elegido y el [contexto de cifrado del Parameter Store](#parameter-store-kms-encryption-context). Durante la transmisión a AWS KMS, el valor en texto no cifrado del parámetro `SecureString` está protegido por Transport Layer Security (TLS).

1. AWS KMS cifra el valor del parámetro con la clave KMS y el contexto de cifrado especificados. Devuelve el texto cifrado a Parameter Store, que almacena el nombre del parámetro y su valor cifrado.  
![\[Cifrado del valor de un parámetro SecureString estándar\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/images/service-pstore-standard.png)

### Descifrar un parámetro estándar
<a name="kms-encryption-securestring-standard-decrypt"></a>

1. Cuando se incluye el parámetro `WithDecryption` en una solicitud `GetParameter`, Parameter Store envía una solicitud `Decrypt` a AWS KMS con el valor del parámetro `SecureString` cifrado y el [contexto de cifrado de Parameter Store](#parameter-store-kms-encryption-context).

1. AWS KMS utiliza la misma clave KMS y el contexto de cifrado proporcionado para descifrar el valor cifrado. Devuelve el valor del parámetro en texto no cifrado a Parameter Store. Durante la transmisión, los datos en texto no cifrado están protegidos por TLS.

1. Parameter Store devuelve el valor del parámetro en texto no cifrado en la respuesta de `GetParameter`.

## Protección de parámetros Secure String avanzados
<a name="kms-encryption-securestring-advanced"></a>

Cuando se utiliza `PutParameter` para crear un parámetro `SecureString` avanzado, el Parameter Store usa el [cifrado de sobre](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/how-it-works.html#envelope-encryption) con el AWS Encryption SDK y una AWS KMS key de cifrado simétrica para proteger el valor del parámetro. Cada valor del parámetro avanzado se cifra con una clave de datos única y la clave de datos se cifra con una clave KMS. Puede usar la [Clave administrada de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) de la cuenta (`aws/ssm`) o cualquier clave administrada por el cliente.

El [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/) es una biblioteca cliente de código abierto que le ayuda a cifrar y descifrar datos mediante estándares y prácticas recomendadas del sector. Es compatible con varias plataformas y varios lenguajes de programación, incluida una interfaz de línea de comandos. Puede ver el código fuente y contribuir a su desarrollo en GitHub. 

Para cada valor de un parámetro `SecureString`, Parameter Store llama al AWS Encryption SDK para descifrar el valor del parámetro utilizando una clave de datos única que AWS KMS genera ([GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)). El AWS Encryption SDK devuelve a Parameter Store un [mensaje cifrado](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message) que incluye el valor del parámetro cifrado y una copia cifrada de la clave de datos única. Parameter Store almacena todo el mensaje cifrado en el valor del parámetro `SecureString`. A continuación, cuando se obtiene el valor de un parámetro `SecureString`, Parameter Store utiliza el AWS Encryption SDK para descifrar el valor del parámetro. Esto requiere una llamada a AWS KMS para descifrar la clave de datos cifrada.

Para crear un parámetro `SecureString` avanzado, utilice la operación [PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html) de la API de Systems Manager. Establezca el valor del parámetro `Tier` en `Advanced`. Incluya un parámetro `Type` con el valor `SecureString`. Para especificar una clave KMS, utilice el parámetro `KeyId`. El valor predeterminado es la Clave administrada de AWS de su cuenta, `aws/ssm`. 

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString \
    --tier Advanced
```

El siguiente ejemplo similar utiliza el parámetro `--key-id` para especificar una [clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). El ejemplo utiliza el Nombre de recurso de Amazon (ARN) de la clave KMS, pero puede utilizar cualquier identificador de clave KMS válido. 

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString \
    --tier Advanced \
    --key-id arn:aws:kms:us-east-2:987654321098:key/1234abcd-12ab-34cd-56ef-1234567890ab
```

Cuando se obtiene un parámetro `SecureString` de Parameter Store, su valor es el mensaje cifrado que devuelve el AWS Encryption SDK. Para obtener un parámetro, utilice la operación [GetParameter ](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html) de la API de Systems Manager.

En el siguiente ejemplo se utiliza la operación `GetParameter` de Systems Manager para obtener el parámetro `MyParameter` del Parameter Store sin descifrar su valor.

```
aws ssm get-parameter --name MyParameter
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg"
    }
}
```

Para descifrar el valor del parámetro antes de devolverlo, establezca el parámetro `WithDecryption` de `GetParameter` en `true`. Al utilizar `WithDecryption`, el Parameter Store llama a la operación [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) de AWS KMS en su nombre para descifrar el valor del parámetro. En consecuencia, la solicitud `GetParameter` devuelve el parámetro con un valor en texto no cifrado, tal y como se muestra en el siguiente ejemplo.

```
aws ssm get-parameter \
    --name MyParameter \
    --with-decryption
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "secret_value"
    }
}
```

No se puede convertir un parámetro `SecureString` avanzado en uno estándar, pero puede convertir un parámetro `SecureString` estándar en uno avanzado. Para convertir un parámetro `SecureString` estándar en un parámetro `SecureString` avanzado, utilice la operación `PutParameter` con el parámetro `Overwrite`. El valor de `Type` debe ser `SecureString` y el valor de `Tier` debe ser `Advanced`. El parámetro `KeyId`, que identifica una clave administrada por el cliente, es opcional. Si lo omite, el Parameter Store utiliza la Clave administrada de AWS de la cuenta. Puede especificar cualquier clave KMS para la que la entidad principal tenga permiso, aunque utilice una clave KMS diferente para cifrar el parámetro estándar.

Cuando se utiliza el parámetro `Overwrite`, Parameter Store usa el AWS Encryption SDK para cifrar el valor del parámetro. A continuación, almacena el nuevo mensaje cifrado en Parameter Store.

```
aws ssm put-parameter \
    --name myStdParameter \
    --value "secret_value"  \
    --type SecureString \
    --tier Advanced \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --overwrite
```

El siguiente flujo de trabajo muestra cómo el Parameter Store utiliza una clave de KMS para cifrar y descifrar un parámetro `SecureString` avanzado.

### Cifrar un parámetro avanzado
<a name="kms-encryption-securestring-advanced-encrypt"></a>

1. Cuando se utiliza `PutParameter` para crear un parámetro `SecureString` avanzado, el Parameter Store utiliza el AWS Encryption SDK y AWS KMS para cifrar el valor del parámetro. El Parameter Store llama al AWS Encryption SDK con el valor del parámetro, la clave de KMS que ha especificado y el [contexto de cifrado del Parameter Store](#parameter-store-kms-encryption-context).

1. El AWS Encryption SDK envía una solicitud [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) a AWS KMS con el identificador de la clave de KMS que ha especificado y el contexto de cifrado del Parameter Store. AWS KMS devuelve dos copias de la clave de datos única: una en texto no cifrado y otra cifrada con la clave de KMS. (El contexto de cifrado se utiliza al cifrar la clave de datos).

1. El AWS Encryption SDK usa la clave de datos en texto no cifrado para cifrar el valor del parámetro. Devuelve un [mensaje cifrado](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message) que incluye el valor del parámetro cifrado, la clave de datos cifrada y otros datos, incluido el contexto de cifrado de Parameter Store.

1. Parameter Store almacena el mensaje cifrado como el valor del parámetro.  
![\[Cifrado del valor de un parámetro SecureString avanzado\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/images/service-pstore-advanced.png)

### Descifrar un parámetro avanzado
<a name="kms-encryption-securestring-advanced-decrypt"></a>

1. Puede incluir el parámetro `WithDecryption` en una solicitud `GetParameter` para obtener un parámetro `SecureString` avanzado. Cuando lo haga, Parameter Store pasará el [mensaje cifrado](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message) del valor del parámetro a un método de descifrado del AWS Encryption SDK.

1. El AWS Encryption SDK llama a la operación [Decrypt (descifrado)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) de AWS KMS. Pasa la clave de datos cifrada y el contexto de cifrado de Parameter Store del mensaje cifrado.

1. AWS KMS utiliza la clave de KMS y el contexto de cifrado del Parameter Store para descifrar la clave de datos cifrada. A continuación, devuelve la clave de datos en texto no cifrado (descifrada) al AWS Encryption SDK.

1. El AWS Encryption SDK utiliza la clave de datos en texto no cifrado para descifrar el valor del parámetro. Devuelve el valor del parámetro en texto no cifrado a Parameter Store. 

1. Parameter Store verifica el contexto de cifrado y devuelve el valor del parámetro en texto no cifrado en la respuesta de `GetParameter`.

## Configurar permisos para cifrar y descifrar valores de parámetros
<a name="parameter-policy-kms-encryption"></a>

Para cifrar el valor de un parámetro `SecureString` estándar, el usuario necesita el permiso `kms:Encrypt`. Para cifrar el valor de un parámetro `SecureString` avanzado, el usuario necesita el permiso `kms:GenerateDataKey`. Para descifrar cualquier tipo de valor de un parámetro `SecureString`, el usuario necesita el permiso `kms:Decrypt`. 

Puede utilizar las políticas de AWS Identity and Access Management (IAM) para conceder o denegar permisos a un usuario para llamar a las operaciones `PutParameter` y `GetParameter` de Systems Manager.

Además, si utiliza claves administradas por el cliente para cifrar valores de parámetros `SecureString`, puede utilizar políticas de IAM y de claves para administrar los permisos de cifrado y descifrado. Sin embargo, no puede establecer políticas de control de acceso para la clave KMS `aws/ssm` predeterminada. Para obtener más información acerca del control del acceso a las clave administradas por el cliente, consulte [KMS key access and permissions](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html) en la *Guía para desarrolladores de AWS Key Management Service*.

En el siguiente ejemplo se muestra una política de IAM diseñada para parámetros `SecureString` estándar. Permite que el usuario llame a la operación `PutParameter` de Systems Manager en todos los parámetros de la ruta `FinancialParameters`. La política también permite al usuario llamar a la operación `Encrypt` de AWS KMS en una clave administrada por el cliente de ejemplo.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/FinancialParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

En el siguiente ejemplo se muestra una política de IAM diseñada para parámetros `SecureString` avanzados. Permite que el usuario llame a la operación `PutParameter` de Systems Manager en todos los parámetros de la ruta `ReservedParameters`. La política también permite al usuario llamar a la operación `GenerateDataKey` de AWS KMS en una clave administrada por el cliente de ejemplo.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/ReservedParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
        }
    ]
}
```

------

El último ejemplo también muestra una política de IAM que se puede utilizar para parámetros `SecureString` estándar o avanzados. Permite al usuario llamar a las operaciones `GetParameter` de Systems Manager (y a las operaciones relacionadas) en todos los parámetros de la ruta `ITParameters`. La política también permite al usuario llamar a la operación `Decrypt` de AWS KMS en una clave administrada por el cliente de ejemplo.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/ITParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

## Parameter StoreContexto de cifrado de
<a name="parameter-store-kms-encryption-context"></a>

Un *contexto de cifrado* es un conjunto de pares de clave-valor que contienen datos no secretos arbitrarios. Cuando se incluye un contexto de cifrado en una solicitud para cifrar datos, AWS KMS vincula criptográficamente el contexto de cifrado a los datos cifrados. Para descifrar los datos, es necesario pasar el mismo contexto de cifrado. 

También se puede utilizar el contexto de cifrado para identificar una operación criptográfica en los registros y los registros de auditoría. El contexto de cifrado aparece en texto no cifrado en los registros, como los registros de [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html). 

El AWS Encryption SDK también tiene un contexto de cifrado, aunque se administra de forma distinta. Parameter Store proporciona el contexto de cifrado al método de cifrado. El AWS Encryption SDK vincula criptográficamente el contexto de cifrado a los datos cifrados. También incluye el contexto de cifrado en texto no cifrado en el encabezado del mensaje cifrado que devuelve. Sin embargo, a diferencia de AWS KMS, los métodos de descifrado de AWS Encryption SDK no toman un contexto de cifrado como entrada. En lugar de ello, cuando se descifran los datos, el AWS Encryption SDK obtiene el contexto de cifrado del mensaje cifrado. Parameter Store verifica que el contexto de cifrado incluye el valor que espera antes de devolverle el valor del parámetro en texto no cifrado. 

Parameter Store utiliza el siguiente contexto de cifrado en sus operaciones criptográficas:
+ Clave: : `PARAMETER_ARN`
+ Valor: el nombre de recurso de Amazon (ARN) del parámetro que se va a cifrar. 

El formato del contexto de cifrado es el siguiente:

```
"PARAMETER_ARN":"arn:aws:ssm:region-id:account-id:parameter/parameter-name"
```

Por ejemplo, el Parameter Store incluye este contexto de cifrado en las llamadas para cifrar y descifrar el parámetro `MyParameter` en una región y Cuenta de AWS de ejemplo.

```
"PARAMETER_ARN":"arn:aws:ssm:us-east-2:111122223333:parameter/MyParameter"
```

Si el parámetro está en una ruta jerárquica de Parameter Store, la ruta y el nombre se incluyen en el contexto de cifrado. Por ejemplo, este contexto de cifrado se utiliza al cifrar y descifrar el parámetro `MyParameter` en la ruta `/ReadableParameters` en una Cuenta de AWS y región de ejemplo.

```
"PARAMETER_ARN":"arn:aws:ssm:us-east-2:111122223333:parameter/ReadableParameters/MyParameter"
```

Puede descifrar el valor de un parámetro `SecureString` cifrado llamando a la operación `Decrypt` de AWS KMS con el contexto de cifrado correcto y el valor del parámetro cifrado devuelto por la operación `GetParameter` de Systems Manager. No obstante, le animamos a que utilice la operación Parameter Store con el parámetro `GetParameter` para cifrar valores de parámetros de `WithDecryption`. 

También puede incluir el contexto de cifrado en una política de IAM. Por ejemplo, puede permitir a un usuario que descifre únicamente el valor de un parámetro o un conjunto de valores de parámetros determinados.

La siguiente declaración de política de IAM de ejemplo permite al usuario obtener el valor del parámetro `MyParameter` y descifrar su valor mediante la clave KMS especificada. Sin embargo, los permisos solo se aplican cuando el contexto de cifrado coincide con la cadena especificada. Estos permisos no se aplican a ningún otro parámetro ni clave KMS, y la llamada a `GetParameter` da un error si el contexto de cifrado no coincide con la cadena.

Antes de utilizar una declaración de política como esta, sustituya los *ARN de ejemplo* por valores válidos.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/MyParameter"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:PARAMETER_ARN":"arn:aws:ssm:us-east-1:111122223333:parameter/MyParameter"
                }
            }
        }
    ]
}
```

------

## Solución de problemas de las claves de KMS en el Parameter Store
<a name="parameter-store-kms-cmk-troubleshooting"></a>

Para realizar operaciones en un parámetro `SecureString`, el Parameter Store debe poder utilizar la clave de AWS KMS especificada para la operación que se pretende realizar. La mayoría de los errores del Parameter Store relacionados con las claves de KMS los provocan los siguientes problemas:
+ Las credenciales que utiliza una aplicación no tienen permisos para realizar la acción especificada en la clave de KMs. 

  Para solucionar este error, ejecute la aplicación con otras credenciales o revise la IAM o la política de claves que impide realizar la operación. Para obtener ayuda con las políticas de claves y de IAM de AWS KMS, consulte [KMS key access and permissions](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html) en la *Guía para desarrolladores de AWS Key Management Service*.
+ No se encuentra la clave KMS. 

  Normalmente, esto ocurre cuando se utiliza un identificador incorrecto para la clave KMS. [Localice los identificadores correctos](https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html) para la clave KMS e intente ejecutar de nuevo el comando. 
+ La clave KMS no está habilitada. Cuando esto ocurre, Parameter Store devuelve una excepción InvalidKeyId con un mensaje de error detallado de AWS KMS. Si el estado de la clave KMS es `Disabled`, [habilítela](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html). Si está `Pending Import`, complete el [procedimiento de importación](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html). Si el estado de la clave es `Pending Deletion`, [cancele la eliminación de la clave](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys-scheduling-key-deletion.html) o use una clave KMS distinta.

  Para encontrar el[estado de clave](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) de una clave KMS, use la operación [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html). 

# Uso de parámetros del Parameter Store en Amazon Elastic Kubernetes Service
<a name="integrate_eks"></a>

Para mostrar parámetros de Parameter Store, una herramienta de AWS Systems Manager, como archivos montados en pods de Amazon EKS, puede usar el Proveedor de secretos y configuración (ASCP) de AWS para el controlador CSI de Kubernetes Secrets Store. El ASCP funciona con Amazon Elastic Kubernetes Service 1.17\$1 que ejecute un grupo de nodos de Amazon EC2. No se admiten grupos de nodos de AWS Fargate. 

Con el ASCP, puede almacenar y administrar los parámetros en Parameter Store y recuperarlos a través de las cargas de trabajo que se ejecutan en Amazon EKS. Si el parámetro contiene varios pares clave-valor en formato JSON, puede elegir cuáles montar en Amazon EKS. El ASCP utiliza sintaxis JMESPath para consultar los pares clave-valor en el secreto. El ASCP también funciona con secretos de AWS Secrets Manager.

El ASCP ofrece dos métodos de autenticación con Amazon EKS. El primer enfoque utiliza los roles de IAM para cuentas de servicio (IRSA). El segundo enfoque utiliza Pod Identities. Cada enfoque tiene sus beneficios y sus casos de uso.

## ASCP con roles de IAM para cuentas de servicio (IRSA)
<a name="csi_driver_overview"></a>

El ASCP con roles de IAM para IRSA le permite montar parámetros de Parameter Store como archivos en los pods de Amazon EKS. Este enfoque es adecuado en los siguientes casos:
+ cuando debe montar los parámetros como archivos en los pods,
+ si está utilizando la versión 1.17 o una posterior de Amazon EKS con grupos de nodos de Amazon EC2,
+ si desea recuperar pares clave-valor específicos de parámetros con formato JSON.

Para obtener más información, consulte [Cómo utilizar de CSI del Proveedor de secretos y configuración (ASCP) de AWS con roles de IAM para cuentas de servicio (IRSA)](integrating_ascp_irsa.md).

## ASCP con Pod Identity
<a name="pod_identity_overview"></a>

El método del ASCP con Pod Identity mejora la seguridad y simplifica la configuración para acceder a los parámetros en Parameter Store. Este enfoque resulta beneficioso en los siguientes casos:
+ cuando necesita una administración de permisos más detallada a nivel de pod,
+ si está utilizando la versión 1.24 o una posterior de Amazon EKS,
+ si desea mejorar el rendimiento y la escalabilidad.

Para obtener más información, consulte [Cómo utilizar CSI del Proveedor de secretos y configuración (ASCP) de AWS con Pod Identity para Amazon EKS](ascp-pod-identity-integration.md).

## Elección del enfoque correcto
<a name="comparison"></a>

Tenga en cuenta los siguientes factores al decidir entre el ASCP con IRSA y el ASCP con Pod Identity:
+ La versión de Amazon EKS: Pod Identity requiere Amazon EKS 1.24\$1, mientras que el controlador CSI funciona con Amazon EKS 1.17\$1.
+ Requisitos de seguridad: Pod Identity ofrece un control más detallado a nivel de pod.
+ Rendimiento: por lo general, Pod Identity funciona mejor en entornos de gran escala.
+ Complejidad: Pod Identity simplifica la configuración al eliminar la necesidad de tener cuentas de servicio independientes.

Elija el método que mejor se adapte a sus requisitos específicos y al entorno de Amazon EKS.

# Cómo instalar ASCP para Amazon EKS
<a name="ascp-eks-installation"></a>

En esta sección, se explica cómo instalar el Proveedor de secretos y configuración (ASCP) de AWS para Amazon EKS. Con el ASCP, puede montar parámetros de Parameter Store y secretos de AWS Secrets Manager como archivos en los pods de Amazon EKS.

## Requisitos previos
<a name="prerequisites"></a>
+ Un clúster de Amazon EKS
  + Versión 1.24 o posterior de Pod Identity
  + Versión 1.17 o posterior de IRSA
+ La AWS CLI debe estar instalada y configurada
+ Kubectl debe estar instalado y configurado para su clúster de Amazon EKS
+ Helm (versión 3.0 o posterior)

## Cómo instalar y configurar el ASCP
<a name="integrating_csi_driver_install"></a>

El ASCP está disponible en GitHub en el repositorio [secres-store-csi-proveedor-aws](https://github.com/aws/secrets-store-csi-driver-provider-aws). El repositorio también contiene archivos YAML de ejemplo para crear y montar un secreto cambiando el valor `objectType` de `secretsmanager` a `ssmparameter`. 

Durante la instalación, puede configurar el ASCP para que utilice un punto de conexión FIPS. Para obtener una lista de los puntos de conexión de Systems Manager, consulte [Puntos de conexión de servicios de Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html#ssm_region) en la *Referencia general de Amazon Web Services*.

**Cómo instalar el ASCP mediante Helm**

1. Para asegurarse de que el repositorio apunte al gráfico más reciente, utilice `helm repo update.`.

1. Agregue el gráfico de controladores CSI de Secrets Store. 

   ```
   helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
   ```

1. Instale el gráfico. Para configurar la limitación, agregue el siguiente indicador: .: `--set-json 'k8sThrottlingParams={"qps": "number of queries per second", "burst": "number of queries per second"}'`

   ```
   helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
   ```

1. Agregue el gráfico del ASCP.

   ```
   helm repo add aws-secrets-manager https://aws.github.io/secrets-store-csi-driver-provider-aws
   ```

1. Instale el gráfico. Para utilizar un punto de conexión FIPS, agregue el siguiente indicador: `--set useFipsEndpoint=true`.

   ```
   helm install -n kube-system secrets-provider-aws aws-secrets-manager/secrets-store-csi-driver-provider-aws
   ```

**Cómo instalarlo mediante el YAML del repositorio**
+ Use los siguientes comandos.

  ```
  helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
  helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
  kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/deployment/aws-provider-installer.yaml
  ```

## Cómo verificar las instalaciones
<a name="verify-ascp-installations"></a>

Para verificar las instalaciones del clúster de EKS, el controlador CSI de Secrets Store y el complemento ASCP, siga estos pasos:

1. Verifique el clúster de EKS:

   ```
   eksctl get cluster --name clusterName
   ```

   Este comando debería devolver información sobre el clúster.

1. Verifique la instalación del controlador CSI de Secrets Store:

   ```
   kubectl get pods -n kube-system -l app=secrets-store-csi-driver
   ```

   Debería ver los pods en ejecución con nombres como `csi-secrets-store-secrets-store-csi-driver-xxx`.

1. Verifique la instalación del complemento ASCP:

------
#### [ YAML installation ]

   ```
   $ kubectl get pods -n kube-system -l app=csi-secrets-store-provider-aws
   ```

   Ejemplo de código de salida:

   ```
   NAME                                     READY   STATUS    RESTARTS   AGE
   csi-secrets-store-provider-aws-12345      1/1     Running   0          2m
   ```

------
#### [ Helm installation ]

   ```
   $  kubectl get pods -n kube-system -l app=secrets-store-csi-driver-provider-aws
   ```

   Ejemplo de código de salida:

   ```
   NAME                                              READY   STATUS    RESTARTS   AGE
   secrets-provider-aws-secrets-store-csi-driver-provider-67890       1/1     Running   0          2m
   ```

------

   Debería ver los pods con el estado `Running`.

Después de ejecutar estos comandos, si todo está configurado correctamente, debería ver que todos los componentes se están ejecutando sin errores. Si encuentra algún problema, es posible que deba consultar los registros de los pods que contienen dicho problema para solucionarlo.

## Solución de problemas
<a name="troubleshooting"></a>

1. Para verificar los registros del proveedor del ASCP, ejecute:

   ```
   kubectl logs -n kube-system -l app=csi-secrets-store-provider-aws
   ```

1. Verifique el estado de todos los pods en el espacio de nombres `kube-system`.

   Sustituya el *texto del marcador de posición predeterminado* por el ID del pod:

   ```
   kubectl -n kube-system get pods
   ```

   ```
   kubectl -n kube-system logs pod/pod-id
   ```

   Todos los pods relacionados con el controlador CSI y el ASCP deben tener el estado “En ejecución”.

1. Verifique la versión del controlador CSI:

   ```
   kubectl get csidriver secrets-store.csi.k8s.io -o yaml
   ```

   Este comando debería devolver información sobre el controlador CSI instalado.

## Recursos adicionales
<a name="additional-resources"></a>

Para obtener más información sobre el uso del ASCP con Amazon EKS, consulte los siguientes recursos:
+ [Using Pod Identity with Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)
+ [AWS Secrets Store CSI Driver on GitHub](https://github.com/aws/secrets-store-csi-driver-provider-aws)

# Cómo utilizar CSI del Proveedor de secretos y configuración (ASCP) de AWS con Pod Identity para Amazon EKS
<a name="ascp-pod-identity-integration"></a>

La integración del Proveedor de secretos y configuración (ASCP) de AWS con el agente de Pod Identity para Amazon Elastic Kubernetes Service proporciona una seguridad mejorada, una configuración simplificada y un rendimiento mejorado para las aplicaciones que se ejecutan en Amazon EKS. Pod Identity simplifica la autenticación de AWS Identity and Access Management (IAM) para Amazon EKS al recuperar parámetros de AWS Systems Manager Parameter Store o secretos de Secrets Manager.

Pod Identity de Amazon EKS agiliza el proceso de configuración de los permisos de IAM para las aplicaciones de Kubernetes, ya que permite que los permisos se configuren directamente a través de las interfaces de Amazon EKS, lo que reduce el número de pasos y elimina la necesidad de cambiar entre los servicios de Amazon EKS e IAM. Pod Identity permite usar un solo rol de IAM en varios clústeres sin actualizar las políticas de confianza y admite [etiquetas de sesión de rol](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-abac.html#pod-id-abac-tags) para un control de acceso más detallado. Este enfoque no solo simplifica la administración de políticas al permitir la reutilización de políticas de permisos en todos los roles, sino que también mejora la seguridad al permitir el acceso a los recursos de AWS en función de las etiquetas coincidentes.

## Funcionamiento
<a name="how-it-works"></a>

1. Pod Identity asigna un rol de IAM al pod.

1. El ASCP usa este rol para autenticarse con Servicios de AWS.

1. Si está autorizado, el ASCP recupera los parámetros solicitados y hace que estén disponibles para el pod.

Para obtener más información, consulte [Descripción del funcionamiento de Pod Identity de Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-how-it-works.html) en la *Guía del usuario de Amazon EKS*.

## Requisitos previos
<a name="prerequisites"></a>

**importante**  
Pod Identity solo es compatible con Amazon EKS en la nube. No es compatible con [Amazon EKS Anywhere](https://aws.amazon.com/eks/eks-anywhere/), [Red Hat OpenShift Service en AWS](https://aws.amazon.com/rosa/) ni con los clústeres de Kubernetes autoadministrados en las instancias de Amazon EC2.
+ Clúster de Amazon EKS (versión 1.24 o posterior)
+ Acceso a AWS CLI y al clúster de Amazon EKS a través de `kubectl`
+ (Opcional) Acceso a dos Cuentas de AWS para el acceso entre cuentas

## Cómo instalar el agente de Pod Identity de Amazon EKS
<a name="install-pod-identity-agent"></a>

Para usar Pod Identity con el clúster, debe instalar el complemento del agente de Pod Identity de Amazon EKS.

**Cómo instalar el agente de Pod Identity**
+ Instale el complemento del agente de Pod Identity en el clúster.

  Sustituya el *texto del marcador de posición predeterminado* por sus valores:

  ```
  eksctl create addon \
    --name eks-pod-identity-agent \
    --cluster clusterName \
    --region region
  ```

## Cómo configurar el ASCP con Pod Identity
<a name="pod-identity-setup"></a>

1. Cree una política de permisos que conceda los permisos `ssm:GetParameters` y `ssm:DescribeParameters` a los parámetros a los que el pod necesite acceder. 

1. Cree un rol de IAM que pueda ser asumido por la entidad principal de servicio de Amazon EKS para Pod Identity:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Service": "pods.eks.amazonaws.com"
           },
           "Action": [
             "sts:AssumeRole",
             "sts:TagSession"
           ]
         }
       ]
     }
   ```

------

   Adjunte la política de IAM al rol.

   Sustituya el *texto del marcador de posición predeterminado* por sus valores:

   ```
   aws iam attach-role-policy \
     --role-name MY_ROLE \
     --policy-arn POLICY_ARN
   ```

1. Cree una asociación de Pod Identity. Para ver un ejemplo, consulte [Creación de una asociación de Pod Identity](https://docs.aws.amazon.com/eks/latest/userguide/pod-id-association.html#pod-id-association-create) en la *Guía del usuario de Amazon EKS*.

1. Cree `SecretProviderClass` que especifica qué parámetros o secretos se deben montar en el pod:

   ```
   kubectl apply -f kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleSecretProviderClass-PodIdentity.yaml
   ```

   La diferencia clave en `SecretProviderClass` entre los roles de IAM para las cuentas de servicio (IRSA) y Pod Identity es el parámetro opcional `usePodIdentity`. Es un campo opcional que determina el enfoque de autenticación. Si no se especifica, se utilizarán los roles de IAM para IRSA de manera predeterminada.
   + Para usar Pod Identity de EKS, utilice cualquiera de estos valores: `"true", "True", "TRUE", "t", "T"`.
   + Para usar IRSA de forma explícita, establézcalo en cualquiera de estos valores: `"false", "False", "FALSE", "f", or "F"`.

1. Implemente el pod que monta los parámetros o secretos en `/mnt/secrets-store`:

   ```
   kubectl apply -f kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleDeployment-PodIdentity.yaml
   ```

1. Si utiliza un clúster privado de Amazon EKS, asegúrese de que la VPC en la que se encuentre el clúster tenga un punto de conexión de AWS STS. Para obtener más información sobre la creación de un punto de conexión, consulte [Puntos de conexión de VPC de tipo interfaz](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_interface_vpc_endpoints.html) en la *Guía del usuario de AWS Identity and Access Management*.

### Cómo verificar el montaje del secreto
<a name="verify-secret-mount"></a>

Para verificar que el parámetro o el secreto se ha montado correctamente, ejecute el siguiente comando.

Sustituya el *texto del marcador de posición predeterminado* por sus valores:

```
kubectl exec -it $(kubectl get pods | awk '/pod-identity-deployment/{print $1}' | head -1) -- cat /mnt/secrets-store/MyParameter
```

**Cómo configurar Pod Identity de Amazon EKS para acceder a los parámetros en Parameter Store**

1. Cree una política de permisos que conceda los permisos `ssm:GetParameters` y `ssm:DescribeParameters` a los parámetros a los que el pod necesite acceder. 

1. Cree un parámetro en Parameter Store, si aún no tiene uno. Para obtener más información, consulte [Creación de parámetros de Parameter Store en Systems Manager](sysman-paramstore-su-create.md).

## Solución de problemas
<a name="integrating_aspc_pod_trouble"></a>

Puede ver la mayoría de los errores si describe la implementación del pod.

**Cómo ver los mensajes de error del contenedor**

1. Obtenga una lista de nombres de pods con el siguiente comando. Si no está utilizando el espacio de nombres predeterminado, use `-n namespace`.

   ```
   kubectl get pods
   ```

1. Para describir el pod, en el siguiente comando, en *pod-id*, use el ID de pod de los pods que encontró en el paso anterior. Si no está utilizando el espacio de nombres predeterminado, use `-n NAMESPACE`.

   ```
   kubectl describe pod/pod-id
   ```

**Cómo ver los errores del ASCP**
+ Para encontrar más información en los registros del proveedor, en el siguiente comando, en *PODID*, utilice el ID del pod *csi-secrets-store-provider-aws*.

  ```
  kubectl -n kube-system get pods
  kubectl -n kube-system logs pod/pod-id
  ```

# Cómo utilizar de CSI del Proveedor de secretos y configuración (ASCP) de AWS con roles de IAM para cuentas de servicio (IRSA)
<a name="integrating_ascp_irsa"></a>

**Topics**
+ [Requisitos previos](#prerequisites)
+ [Cómo configurar el control de acceso](#integrating_ascp_irsa_access)
+ [Cómo identificar los parámetros para montar](#integrating_ascp_irsa_mount)
+ [Solución de problemas](#integrating_ascp_irsa_trouble)

## Requisitos previos
<a name="prerequisites"></a>
+ Clúster de Amazon EKS (versión 1.17 o posterior)
+ Cómo acceder a AWS CLI y al clúster de Amazon EKS a través de `kubectl`

## Cómo configurar el control de acceso
<a name="integrating_ascp_irsa_access"></a>

El ASCP recupera Pod Identity de Amazon EKS y la cambia por un rol de IAM. Los permisos se establecen en una política de IAM para ese rol de IAM. Cuando el ASCP asume el rol de IAM, le da acceso a los parámetros que usted autorizó. Otros contenedores no pueden acceder a los parámetros a menos que también los asocie con el rol de IAM. 

**Cómo conceder el acceso al pod de Amazon EKS a los parámetros en Parameter Store**

1. Cree una política de permisos que conceda los permisos `ssm:GetParameters` y `ssm:DescribeParameters` a los parámetros a los que el pod necesite acceder. 

1. Cree un proveedor OpenID Connect (OIDC) de IAM para el clúster si todavía no tiene uno. Para obtener más información, consulte [Crear un proveedor OIDC de IAM para su clúster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) en la *Guía del usuario de Amazon EKS*.

1. Cree un [rol de IAM para la cuenta de servicio](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) y adjunte la política. Para obtener más información, consulte [Crear un rol de IAM para su cuenta de servicio](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) en la *Guía del usuario de Amazon EKS*.

1. Si utiliza un clúster privado de Amazon EKS, asegúrese de que la VPC en la que se encuentre el clúster tenga un punto de conexión de AWS STS. Para obtener más información sobre la creación de un punto de conexión, consulte [Puntos de conexión de VPC de tipo interfaz](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_interface_vpc_endpoints.html) en la *Guía del usuario de AWS Identity and Access Management*.

## Cómo identificar los parámetros para montar
<a name="integrating_ascp_irsa_mount"></a>

Para determinar qué parámetros debe montar el ASCP en Amazon EKS como archivos del sistema de archivos, se debe crear un archivo YAML [SecretProviderClass](ascp-examples.md#ascp-examples-secretproviderclass). El `SecretProviderClass` contiene una lista de los parámetros que hay que montar y el nombre de archivo con el que montarlos. El `SecretProviderClass` debe estar en el mismo espacio de nombres que el pod de Amazon EKS al que hace referencia.

### Cómo montar los parámetros como archivos
<a name="mount-secrets"></a>

Las siguientes instrucciones muestran cómo montar los parámetros como archivos utilizando los archivos YAML [ExampleSecretProviderClass.yaml](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/examples/ExampleSecretProviderClass-IRSA.yaml) y [ExampleDeployment.yaml](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/examples/ExampleDeployment-IRSA.yaml) de ejemplo.

**Cómo montar los parámetros en Amazon EKS**

1. Aplique el `SecretProviderClass` al pod:

   ```
   kubectl apply -f ExampleSecretProviderClass.yaml
   ```

1. Implemente el pod:

   ```
   kubectl apply -f ExampleDeployment.yaml
   ```

1. El ASCP monta los archivos.

## Solución de problemas
<a name="integrating_ascp_irsa_trouble"></a>

Puede ver la mayoría de los errores si describe la implementación del pod. 

**Cómo ver los mensajes de error del contenedor**

1. Obtenga una lista de nombres de pods con el siguiente comando. Si no está utilizando el espacio de nombres predeterminado, use `-n name-space`.

   ```
   kubectl get pods
   ```

1. Para describir el pod, en el siguiente comando, en *pod-id*, use el ID de pod de los pods que encontró en el paso anterior. Si no está utilizando el espacio de nombres predeterminado, use `-n nameSpace`.

   ```
   kubectl describe pod/pod-id
   ```

**Cómo ver los errores del ASCP**
+ Para obtener más información en los registros del proveedor, en el siguiente comando, en *pod-id*, utilice el ID del pod *csi-secrets-store-provider-aws*.

  ```
  kubectl -n kube-system get pods
  kubectl -n kube-system logs Pod/pod-id
  ```
+ 

**Cómo comprobar que la definición de recurso personalizado (CRD) de `SecretProviderClass` está instalada:**

  ```
  kubectl get crd secretproviderclasses.secrets-store.csi.x-k8s.io
  ```

  Este comando debe devolver información acerca de la definición de recurso personalizado de `SecretProviderClass`.
+ 

**Cómo comprobar que se haya creado el objeto SecretProviderClass.**

  ```
  kubectl get secretproviderclass SecretProviderClassName -o yaml
  ```

# Ejemplos de código del Proveedor de secretos y configuración de AWS
<a name="ascp-examples"></a>

## Ejemplos de autenticación y control de acceso del ASCP
<a name="ascp-auth-access-examples"></a>

### Ejemplo: política de IAM que permite que el servicio Pod Identity de Amazon EKS (pods.eks.amazonaws.com) asuma el rol y etiquete la sesión:
<a name="ascp-auth-access-example-1"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "pods.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
```

------

## SecretProviderClass
<a name="ascp-examples-secretproviderclass"></a>

Se debe utilizar YAML para describir qué parámetros hay que montar en Amazon EKS mediante el ASCP. Para ver ejemplos, consulte [Uso de SecretProviderClass](#ascp-scenarios-secretproviderclass).

### Estructura YAML de SecretProviderClass
<a name="ascp-examples-secretproviderclass-1"></a>

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
   name: name
spec:
  provider: aws
  parameters:
    region:
    failoverRegion:
    pathTranslation:
    usePodIdentity:
    preferredAddressType:
    objects:
```

Los campos de los parámetros contienen los detalles de la solicitud de montaje:

**region**  
(Opcional) La Región de AWS del parámetro. Si no utiliza este campo, el ASCP busca la región en la anotación en el nodo. Esta búsqueda agrega una sobrecarga a las solicitudes de montaje, por lo que recomendamos que proporcione la región para los clústeres que utilizan una gran cantidad de pods.  
Si también se especifica `failoverRegion`, el ASCP intenta recuperar el parámetro desde ambas regiones. Si alguna de estas regiones devuelve un error `4xx` (por ejemplo, por un problema de autenticación), el ASCP no monta ninguno de los parámetros. Si el parámetro se recupera correctamente desde `region```, el ASCP monta ese valor de parámetro. Si el parámetro no se recupera correctamente desde `region`, pero sí desde `failoverRegion`, el ASCP monta ese valor de parámetro.

**`failoverRegion`**  
(Opcional) Si se incluye este campo, el ASCP intenta recuperar el parámetro desde las regiones definidas en `region` y este campo. Si alguna de estas regiones devuelve un error `4xx` (por ejemplo, por un problema de autenticación), el ASCP no monta ninguno de los parámetros. Si el parámetro se recupera correctamente desde `region`, el ASCP monta ese valor de parámetro. Si el parámetro no se recupera correctamente desde `region`, pero sí desde `failoverRegion`, el ASCP monta ese valor de parámetro. Para ver un ejemplo sobre cómo utilizar este campo, consulte [Conmutación por error de parámetros multirregionales](#multi-region-failover).

**pathTranslation**  
(Opcional) Un único carácter de sustitución para utilizarlo si el nombre del archivo de Amazon EKS contiene el carácter separador de ruta, por ejemplo la barra diagonal (/) en Linux. El ASCP no puede crear un archivo montado que contenga un carácter separador de ruta. En su lugar, el ASCP reemplaza el carácter separador de ruta por otro carácter. Si no se utiliza este campo, el carácter de reemplazo es el guion bajo (\$1), de modo que, por ejemplo, `My/Path/Parameter` se monta como `My_Path_Parameter`.   
Para evitar la sustitución de caracteres, ingrese la cadena `False`.

***usePodIdentity***  
(Opcional) Determine el enfoque de autenticación. Si no se especifica, se utilizarán los roles de IAM para las cuentas de servicio (IRSA) de manera predeterminada.  
+ Para usar Pod Identity de EKS, utilice cualquiera de estos valores: `"true"`, `"True"`, `"TRUE"`, `"t"` o `"T"`.
+ Para usar IRSA de forma explícita, establezca cualquiera de estos valores: `"false"`, `"False"`, `"FALSE"`, `"f"` o `"F"`.

***preferredAddressType***  
(Opcional) Especifica el tipo de dirección IP preferido para la comunicación del punto de conexión del agente de Pod Identity. El campo solo se aplica cuando se utiliza la característica Pod Identity de EKS y se ignora cuando se utilizan roles de IAM para cuentas de servicio. Los valores no distinguen entre mayúsculas y minúsculas. Los valores válidos son:  
+ `"ipv4"`, `"IPv4"` o `"IPV4"`: fuerza el uso del punto de conexión IPv4 del agente de Pod Identity.
+ `"ipv6"`, `"IPv6"` o `"IPV6"`: fuerza el uso del punto de conexión IPv6 del agente de Pod Identity.
+ no especificado: usa la selección automática del punto de conexión; prueba primero el punto de conexión IPv4 y recurre al punto de conexión IPv6 si IPv4 falla.

**objetos**  
Una cadena que contiene una declaración YAML de los secretos que se van a montar. Se recomienda utilizar una cadena de varias líneas de YAML o una barra vertical (\$1).    
**objectName**  
Obligatorio. Especifica el nombre del parámetro o el secreto que se va a obtener. En el caso de Parameter Store, este es el [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html#API_GetParameter_RequestParameters](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html#API_GetParameter_RequestParameters) del parámetro y puede ser el nombre o el ARN completo del parámetro. En el caso de Secrets Manager, este es el parámetro [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html#API_GetSecretValue_RequestParameters](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html#API_GetSecretValue_RequestParameters) y puede ser el nombre descriptivo o el ARN completo del secreto.   
**objectType**  
Es requerido si no utiliza un ARN de Secrets Manager para `objectName`. En Parameter Store, utilice `ssmparameter`. Para Secrets Manager, utilice `secretsmanager`.   
**objectAlias**  
(Opcional) El nombre de archivo del secreto en el pod de Amazon EKS. Si no especifica este campo, el `objectName` aparece como nombre de archivo.  
**objectVersion**  
(Opcional) El ID de la versión del parámetro. No se recomienda porque se debe actualizar el ID de la versión cada vez que se actualice el parámetro. Se utiliza la versión más reciente de forma predeterminada. Si se incluye `failoverRegion`, este campo representa el campo `objectVersion` principal.  
**objectVersionLabel**  
(Opcional) El alias de la versión. La versión predeterminada es la versión `AWSCURRENT` más reciente. Si se incluye `failoverRegion`, este campo representa el campo `objectVersionLabel` principal.  
**jmesPath**  
(Opcional) Un mapa de las claves en el parámetro para los archivos que se van a montar en Amazon EKS. Para utilizar este campo, el valor del parámetro debe estar en formato JSON.   
En el siguiente ejemplo se muestra el aspecto de un parámetro codificado JSON.  

```
{
    "username" : "myusername",
    "password" : "mypassword"
}
```
Las claves son `username` y `password`. El valor asociado a `username` es `myusername`, y el valor asociado a `password` es `mypassword`.  
Si utiliza este campo, debe incluir los subcampos `path` y `objectAlias`.    
**path**  
Una clave de un par clave-valor en el JSON del valor del parámetro. Si el campo contiene un guion, aplique escape con comillas simples, por ejemplo: `path: '"hyphenated-path"'`  
**objectAlias**  
Nombre de archivo que se va a montar en el pod de Amazon EKS. Si el campo contiene un guion, aplique escape con comillas simples, por ejemplo: `objectAlias: '"hyphenated-alias"'`  
**`failoverObject`**  
(Opcional) Si se especifica este campo, el ASCP intenta recuperar tanto el parámetro especificado en el campo `objectName` principal como el parámetro especificado en el subcampo `failoverObject` `objectName`. Si alguno devuelve un error `4xx` (por ejemplo, por un problema de autenticación), el ASCP no monta ninguno de los parámetros. Si el parámetro se recupera correctamente desde el campo `objectName` principal, el ASCP monta ese valor de parámetro. Si el parámetro no se recupera correctamente desde el campo `objectName` principal, pero sí desde el `objectName` de conmutación por error, el ASCP monta ese valor de parámetro. Si se incluye este campo, se debe incluir el campo `objectAlias`. Para ver un ejemplo sobre cómo utilizar este campo, consulte [Conmutación por error a un parámetro diferente](#failover-parameter).  
Este campo se suele utilizar cuando el parámetro de conmutación por error no es una réplica. Para ver un ejemplo sobre cómo especificar una réplica, consulte [Conmutación por error de parámetros multirregionales](#multi-region-failover).    
**objectName**  
Nombre o ARN completo del parámetro de conmutación por error. Si se utiliza un ARN, la región del ARN debe coincidir con el campo `failoverRegion`.  
**objectVersion**  
(Opcional) El ID de la versión del parámetro. Debe coincidir con el campo `objectVersion` principal. No se recomienda porque se debe actualizar el ID de la versión cada vez que se actualice el parámetro. Se utiliza la versión más reciente de forma predeterminada.   
**objectVersionLabel**  
(Opcional) El alias de la versión. La versión predeterminada es la versión `AWSCURRENT` más reciente.

### Cree una configuración básica de SecretProviderClass para montar los parámetros en los pods de Amazon EKS.
<a name="create-SecretProviderClass-config"></a>

------
#### [ Pod Identity ]

SecretProviderClass para usar un parámetro en el mismo clúster de Amazon EKS:

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameter-store
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "MyParameter"
        objectType: "ssmparameter"
    usePodIdentity: "true"
```

------
#### [ IRSA ]

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: deployment-aws-parameter
spec:
  provider: aws
  parameters:
    objects: |
        - objectName: "MyParameter"
          objectType: "ssmparameter"
```

------

### Uso de SecretProviderClass
<a name="ascp-scenarios-secretproviderclass"></a>

Utilice estos ejemplos para crear configuraciones de `SecretProviderClass` para diferentes situaciones.

#### Ejemplo: montaje de parámetros por nombre o ARN
<a name="mount-by-name-arn"></a>

En este ejemplo, se muestra cómo montar tres tipos diferentes de parámetros:
+ un parámetro especificado por ARN completo,
+ un parámetro especificado por su nombre,
+ una versión de parámetro de un secreto.

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameters
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyParameter2-d4e5f6"
      - objectName: "MyParameter3"
        objectType: "ssmparameter"
      - objectName: "MyParameter4"
        objectType: "ssmparameter"
        objectVersionLabel: "AWSCURRENT"
```

#### Ejemplo: montaje de pares clave-valor de un parámetro
<a name="mount-key-value-pairs"></a>

En este ejemplo, se muestra cómo montar pares clave-valor específicos a partir de un parámetro con formato JSON:

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameters
spec:
  provider: aws
  parameters:
    objects: |
      - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyParameter-a1b2c3"
        jmesPath: 
            - path: username
              objectAlias: dbusername
            - path: password
              objectAlias: dbpassword
```

#### Ejemplo: configuración de conmutación por error
<a name="failover-examples"></a>

En estos ejemplos, se muestra cómo configurar la conmutación por error para parámetros.

##### Conmutación por error de parámetros multirregionales
<a name="multi-region-failover"></a>

En este ejemplo, se muestra cómo configurar la conmutación por error automática para un parámetro replicado en varias regiones:

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameters
spec:
  provider: aws
  parameters:
    region: us-east-1
    failoverRegion: us-east-2
    objects: |
      - objectName: "MyParameter"
```

##### Conmutación por error a un parámetro diferente
<a name="failover-parameter"></a>

En este ejemplo, se muestra cómo configurar la conmutación por error a un parámetro diferente (no a una réplica):

```
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
  name: aws-parameters
spec:
  provider: aws
  parameters:
    region: us-east-1
    failoverRegion: us-east-2
    objects: |
      - objectName: "arn:aws:ssm:us-east-1:777788889999:parameter:MyParameter-a1b2c3"
        objectAlias: "MyMountedParameter"
        failoverObject: 
          - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyFailoverParameter-d4e5f6"
```

## Recursos adicionales
<a name="additional-resources"></a>

Para obtener más información sobre el uso del ASCP con Amazon EKS, consulte los siguientes recursos:
+ [Using Pod Identity with Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)
+ [AWS Secrets Store CSI Driver on GitHub](https://github.com/aws/secrets-store-csi-driver-provider-aws)

# Cómo utilizar parámetros Parameter Store en funciones AWS Lambda
<a name="ps-integration-lambda-extensions"></a>

Parameter Store, una herramienta de AWS Systems Manager, proporciona un almacenamiento seguro y jerárquico para la administración de los datos de configuración y de los secretos. Puede almacenar datos como contraseñas, cadenas de base de datos, ID de Amazon Machine Image (AMI) y códigos de licencia como valores de parámetros. 

Para usar parámetros de Parameter Store en funciones AWS Lambda sin usar un SDK, puede usar la extensión de Lambda para secretos y parámetros de AWS. Esta extensión recupera los valores de los parámetros y los almacena en la caché para usarlos en el futuro. El uso de la extensión Lambda puede reducir sus costos al reducir la cantidad de llamadas a la API a Parameter Store. El uso de la extensión también puede mejorar la latencia, ya que recuperar un parámetro almacenado en caché es más rápido que recuperarlo de Parameter Store. 

Una extensión de Lambda es un proceso complementario que se suma a las capacidades de una función Lambda. Una extensión es como un cliente que se ejecuta en paralelo a una invocación de Lambda. Este cliente paralelo puede interactuar con su función en cualquier momento de su ciclo de vida. Para obtener más información sobre las extensiones de Lambda, consulte [Extensiones de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html) en la *Guía para desarrolladores de AWS Lambda*.

La extensión de Lambda para secretos y parámetros de AWS funciona tanto para Parameter Store como para AWS Secrets Manager. Para aprender a usar la extensión de Lambda con los secretos de Secrets Manager, consulte [Utilizar secretos de AWS Secrets Manager en funciones AWS Lambda](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets_lambda.html) en la *Guía del usuario de AWS Secrets Manager*. 

**Información relacionada**

[Uso de la extensión de Lambda Parameter and Secrets de AWS para almacenar parámetros y secretos en caché](https://aws.amazon.com/blogs/compute/using-the-aws-parameter-and-secrets-lambda-extension-to-cache-parameters-and-secrets/) (Compute Blog AWS)

## Cómo funciona la extensión
<a name="ps-integration-lambda-extensions-how-it-works"></a>

Para utilizar parámetros en una función Lambda *sin* la extensión de Lambda, debe configurar su función Lambda para recibir actualizaciones de configuración mediante la integración con la acción de la API `GetParameter` para Parameter Store.

Cuando utiliza la extensión de Lambda para secretos y parámetros de AWS, la extensión recupera el valor del parámetro Parameter Store y lo almacena en la memoria caché local. A continuación, el valor almacenado en la caché se utiliza para otras invocaciones hasta que caduque. Los valores en la memoria caché caducan una vez transcurrido su tiempo de vida (TTL). Puede configurar el valor TTL mediante la [variable de entorno](#ps-integration-lambda-extensions-config) `SSM_PARAMETER_STORE_TTL`, como se explica más adelante en este tema.

Si el TTL de la caché configurado no ha caducado, se utiliza el valor del parámetro almacenado en la caché. Si el periodo ha caducado, el valor almacenado en caché se invalida y se recupera el valor del parámetro Parameter Store.

Además, el sistema detecta los valores de los parámetros que se utilizan con frecuencia y los mantiene en la memoria caché mientras borra los que están caducados o no se utilizan.

**importante**  
La extensión solo se puede invocar en la fase `INVOKE` de la operación de Lambda y no durante la fase `INIT`.

### Detalles de la implementación
<a name="lambda-extension-details"></a>

Utilice los siguientes detalles para ayudarle a configurar la extensión de Lambda para secretos y parámetros de AWS.

Autenticación  
Para autorizar y autenticar las solicitudes de Parameter Store, la extensión usa las mismas credenciales que las que se utilizan para ejecutar la propia función Lambda. Por lo tanto, el rol de (IAM) AWS Identity and Access Management utilizado para ejecutar la función debe tener los siguientes permisos para interactuar con Parameter Store:  
+ `ssm:GetParameter`: necesario para recuperar parámetros de Parameter Store
+ `kms:Decrypt`: necesario si está recuperando parámetros de `SecureString` desde Parameter Store
Para obtener más información, consulte [Rol de ejecución de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) en la *Guía para desarrolladores de AWS Lambda*.

Instanciación  
Lambda crea instancias independientes correspondientes al nivel de simultaneidad que requiere la función. Cada instancia está aislada y mantiene su propia memoria caché local de los datos de configuración. Para obtener más información sobre las instancias de Lambda y la simultaneidad, consulte [Configuración de la simultaneidad reservada](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html) en la *Guía para desarrolladores de AWS Lambda*.

Sin dependencia del SDK  
La extensión de Lambda para secretos y parámetros de AWS funciona independientemente de cualquier biblioteca de lenguajes del SDK de AWS. No se requiere un SDK de AWS para realizar solicitudes GET a Parameter Store.

Localhost puerto  
Utilice `localhost` en sus solicitudes GET. La extensión hace solicitudes al puerto 2773 de localhost. No tiene que especificar un punto de conexión externo o interno para usar la extensión. Para configurar el puerto, establezca la [variable de entorno](#ps-integration-lambda-extensions-config) `PARAMETERS_SECRETS_EXTENSION_HTTP_PORT`.   
Por ejemplo, en Python, GET URL puede tener un aspecto similar al del siguiente ejemplo.  

```
parameter_url = ('http://localhost:' + port + '/systemsmanager/parameters/get/?name=' + ssm_parameter_path)
```

Cambios en el valor de un parámetro antes de que caduque el TTL  
La extensión no detecta cambios en el valor del parámetro y no realiza una actualización automática antes de que caduque el TTL. Si cambia el valor de un parámetro, las operaciones que utilizan el valor del parámetro almacenado en la caché pueden fallar hasta que se actualice la memoria caché de nuevo. Si espera cambios frecuentes en el valor de un parámetro, le recomendamos establecer un valor de TTL más corto.

Requisito de encabezado  
Para recuperar los parámetros de la caché de la extensión, el encabezado de la solicitud GET debe incluir una referencia de `X-Aws-Parameters-Secrets-Token`. Configure el token en `AWS_SESSION_TOKEN`, que Lambda proporciona para todas las funciones en ejecución. El uso de este encabezado indica que el intermediario se encuentra en el entorno de Lambda.

Ejemplo  
El siguiente ejemplo en Python muestra una solicitud básica para recuperar el valor de un parámetro almacenado en caché.  

```
import urllib.request
import os
import json

aws_session_token = os.environ.get('AWS_SESSION_TOKEN')

def lambda_handler(event, context):
    # Retrieve /my/parameter from Parameter Store using extension cache
    req = urllib.request.Request('http://localhost:2773/systemsmanager/parameters/get?name=%2Fmy%2Fparameter')
    req.add_header('X-Aws-Parameters-Secrets-Token', aws_session_token)
    config = urllib.request.urlopen(req).read()

    return json.loads(config)
```

Compatibilidad con ARM  
La extensión es compatible con la arquitectura ARM en la mayoría de las Regiones de AWS en las que se admiten las arquitecturas x86\$164 y x86. Si utiliza la arquitectura ARM, le sugerimos que compruebe que su arquitectura sea compatible. Para obtener listas completas de los ARN de extensión, consulte [ARN de la extensión AWS Parameters and Secrets Lambda](#ps-integration-lambda-extensions-add).

Registro  
Lambda registra la información de ejecución acerca de la extensión junto con la función mediante Registros de Amazon CloudWatch. De forma predeterminada, la extensión registra una cantidad mínima de información en CloudWatch. Para registrar más detalles, establezca la [variable de entorno](#ps-integration-lambda-extensions-config) `PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL` en `DEBUG`.

### Cómo agregar la extensión a una función Lambda
<a name="add-extension"></a>

Para usar la extensión de Lambda para secretos y parámetros de AWS, agregue la extensión a la función Lambda como una capa.

Utilice uno de los métodos siguientes para agregar la extensión a la función.

Consola de administración de AWS (Opción Agregar capa)  

1. Abra la consola de AWS Lambda en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Elija su función. En el área **Layers** (Capas), elija **Add a layer** (Agregar una capa).

1. En el área **Choose a layer** (Elegir una capa), elija la opción **AWS layers** (Capas de ).

1. En **AWS layers** (Capas de ), elija **AWS-Parameters-and-Secrets-Lambda-Extension**, elija una versión y, a continuación, elija **Add** (Agregar).

Consola de administración de AWS(Opción Especificar ARN)  

1. Abra la consola de AWS Lambda en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Elija su función. En el área **Layers** (Capas), elija **Add a layer** (Agregar una capa).

1. En el área **Choose a layer** (Elegir una capa), elija la opción **Specify an ARN** (Especificar un ARN).

1. En **Specify an ARN** (Especificar un ARN), ingrese la [extensión de ARN para su Región de AWS y arquitectura](#ps-integration-lambda-extensions-add) y, a continuación, elija **Add** (Agregar).

AWS Command Line Interface  
Ejecute el siguiente comando en la : AWS CLI. Reemplace cada *example resource placeholder* con su propia información.  

```
aws lambda update-function-configuration \
    --function-name function-name \
    --layers layer-ARN
```

**Información relacionada**

[Uso de capas con su función de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/invocation-layers.html)

[Configuración de extensiones (archivo de archivo .zip)](https://docs.aws.amazon.com/lambda/latest/dg/using-extensions.html#using-extensions-config)

## Variables de entorno de la extensión AWS Parameters and Secrets Lambda
<a name="ps-integration-lambda-extensions-config"></a>

Puede configurar la extensión si cambia las siguientes variables de entorno. Para ver la configuración actual, establezca `PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL` en `DEBUG`. Para obtener más información, consulte [Uso de variables de entorno de AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html) en la *Guía para desarrolladores de AWS Lambda*. 

**nota**  
AWS Lambda registra los detalles de la operación sobre la extensión Lambda y la función Lambda en Registros de Amazon CloudWatch. 


****  

| Variable de entorno | Details | Obligatorio | Valores válidos | Predeterminado | 
| --- | --- | --- | --- | --- | 
|  `SSM_PARAMETER_STORE_TIMEOUT_MILLIS`  |  Tiempo de espera, en milisegundos, para las solicitudes a Parameter Store.   Un valor de 0 (cero) indica que no hay tiempo de inactividad.  | No | Todos los números enteros | 0 (cero) | 
|  `SECRETS_MANAGER_TIMEOUT_MILLIS`  |  Tiempo de espera, en milisegundos, para las solicitudes a Secrets Manager.   Un valor de 0 (cero) indica que no hay tiempo de inactividad.  | No | Todos los números enteros |  0 (cero)  | 
|  `SSM_PARAMETER_STORE_TTL`  |  Duración máxima válida, en segundos, de un parámetro de la caché antes de que se invalide. Un valor de 0 (cero) indica que se debe omitir la memoria caché. Esta variable se ignora si el valor de `PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE` es 0 (cero).  | No | 0 (cero) a 300 s (cinco minutos) | 300 s (cinco minutos) | 
|  `SECRETS_MANAGER_TTL`  |  Duración máxima válida, en segundos, de un secreto de la caché antes de que se invalide. Un valor de 0 (cero) indica que se omite la memoria caché. Esta variable se ignora si el valor de `PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE` es 0 (cero).   | No | 0 (cero) a 300 s (cinco minutos) | 300 s (5 minutos) | 
| `PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED` |  Determina si la caché está habilitada para la extensión. Valores válidos: `TRUE \| FALSE`  | No | TRUE, FALSE | TRUE | 
| `PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE` |  El tamaño máximo de la memoria caché en términos de número de elementos. Un valor de 0 (cero) indica que se omite la memoria caché. Esta variable se ignora si ambos valores de TTL de la caché son 0 (cero).  | No | 0 (cero) a 1000 |  1 000  | 
| `PARAMETERS_SECRETS_EXTENSION_HTTP_PORT` | El puerto del servidor HTTP local. | No | 1 a 65535 |  2773  | 
| `PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS` |  Cantidad máxima de conexiones para los clientes HTTP que la extensión utiliza para hacer solicitudes a Parameter Store o a Secrets Manager. Esta es una configuración por cliente para la cantidad de conexiones que tanto el cliente de Secrets Manager como el cliente de Parameter Store realizan a los servicios de backend.  | No | Mínimo de 1; sin límite máximo. |  3  | 
| `PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL` |  El nivel de detalle indicado en los registros de la extensión. Le recomendamos que utilice `DEBUG` para obtener más detalles sobre la configuración de la memoria caché a medida que configura y prueba la extensión.  Los registros de las operaciones de Lambda se envían automáticamente a un grupo de registro de Registros de CloudWatch asociado.  | No |  `DEBUG \| WARN \| ERROR \| NONE \| INFO`  | `INFO` | 

## Ejemplos de comandos para usar AWS Systems Manager Parameter Store y la extensión AWS Secrets Manager
<a name="ps-integration-lambda-extensions-sample-commands"></a>

Los ejemplos de esta sección muestran las acciones de la API para su uso con AWS Systems Manager Parameter Store y la extensión AWS Secrets Manager.

### Comandos de ejemplo para Parameter Store
<a name="sample-commands-ps"></a>

La extensión Lambda utiliza el acceso de solo lectura a la acción de la API **GetParameter**.

Para realizar esta acción, realice una llamada HTTP GET similar a la siguiente. Este formato de comando proporciona acceso a los parámetros del nivel de parámetros estándar.

```
GET http://localhost:port/systemsmanager/parameters/get?name=parameter-name&version=version&label=label&withDecryption={true|false}
```

En este ejemplo, *parameter-name* representa el nombre completo del parámetro, por ejemplo `MyParameter`, para un parámetro que no está en una jerarquía o `%2FDev%2FProduction%2FEast%2FProject-ABC%2FMyParameter` para un parámetro denominado `/Dev/Production/East/Project-ABC/MyParameter` que forma parte de una jerarquía. 

**nota**  
Cuando se utilizan llamadas GET, los valores de los parámetros deben codificarse para que HTTP conserve los caracteres especiales. Por ejemplo, en lugar de formatear una ruta jerárquica como `/a/b/c`, codifique los caracteres que puedan interpretarse como parte de la URL, como `%2Fa%2Fb%2Fc`.

*versión* y *etiqueta* son los selectores disponibles para su uso con la acción `GetParameter`. 

```
GET http://localhost:port/systemsmanager/parameters/get/?name=MyParameter&version=5
```

Para llamar a un parámetro de una jerarquía, realice una llamada HTTP GET similar a la siguiente.

```
GET http://localhost:port/systemsmanager/parameters/get?name=%2Fa%2Fb%2F&label=release
```

Para llamar a un parámetro público (global), realice una llamada HTTP GET similar a la siguiente.

```
GET http://localhost:port/systemsmanager/parameters/get/?name=%2Faws%2Fservice%20list%2F…
```

Para realizar una llamada HTTP GET a un secreto de Secrets Manager mediante referencias de Parameter Store, realice una llamada HTTP GET similar a la siguiente.

```
GET http://localhost:port/systemsmanager/parameters/get?name=%2Faws%2Freference%2Fsecretsmanager%2F…
```

Para realizar una llamada con el nombre de recurso de Amazon (ARN) para un parámetro, realice una llamada HTTP GET similar a la siguiente.

```
GET http://localhost:port/systemsmanager/parameters/get?name=arn:aws:ssm:us-east-1:123456789012:parameter/MyParameter
```

Para realizar una llamada que acceda a un parámetro `SecureString` con descifrado, realice una llamada HTTP GET similar a la siguiente.

```
GET http://localhost:port/systemsmanager/parameters/get?name=MyParameter&withDecryption=true
```

Puede especificar que los parámetros no se descifren si omite `withDecryption` o con una configuración `false` explícita. También puede especificar una versión o una etiqueta, pero no ambas. Si lo hace, solo se utilizará lo primero que se coloque después del signo de interrogación (`?`) en la URL.

## ARN de la extensión AWS Parameters and Secrets Lambda
<a name="ps-integration-lambda-extensions-add"></a>

El nombre de recurso de Amazon (ARN) más reciente de la extensión de Lambda se publica como parámetro público en el almacén de parámetros de Systems Manager para cada arquitectura compatible. Puede recuperar el ARN más reciente mediante programación con la AWS CLI o CloudFormation para asegurarse de que su aplicación siempre haga referencia a la versión más reciente de la extensión sin actualizaciones manuales. En esta sección se explica cómo recuperar el ARN mediante programación y se proporcionan tablas con los valores actuales del ARN de cada arquitectura para que puedan consultarse manualmente.

### Recuperación de la versión más reciente del ARN de la extensión de Lambda
<a name="ps-integration-lambda-extensions-programmatically-retrieve"></a>

Las versiones más recientes del ARN de la extensión de Lambda se almacenan como parámetros públicos en las siguientes ubicaciones. Puede hacer referencia a estos parámetros públicos en su código para recuperarlos:
+ **x86\$164**: /aws/service/aws-parameters-and-secrets-lambda-extension/x86/latest
+ **arm64**: /aws/service/aws-parameters-and-secrets-lambda-extension/arm64/latest

**AWS CLI**  
Si desea recuperar las versiones más recientes del ARN con la AWS CLI, ejecute los siguientes comandos.

**x86\$164**

```
aws ssm get-parameter --name "/aws/service/aws-parameters-and-secrets-lambda-extension/x86/latest" --query "Parameter.Value" --output text
```

**arm64**

```
aws ssm get-parameter --name "/aws/service/aws-parameters-and-secrets-lambda-extension/arm64/latest" --query "Parameter.Value" --output text
```

**AWS CloudFormation**  
Si implementa funciones de Lambda con CloudFormation, puede resolver los parámetros directamente durante la creación y las actualizaciones de la pila, como se muestra en el siguiente ejemplo de plantillas YAML. Este método garantiza que la función utilice siempre la versión más reciente de la extensión sin necesidad de actualizaciones manuales.

**x86\$164**

```
Resources:
  MyFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: my-function
      Runtime: python3.11
      Handler: index.handler
      Code:
        ZipFile: |
          def handler(event, context):
              return {'statusCode': 200}
      Layers:
        - !Sub '{{resolve:ssm:/aws/service/aws-parameters-and-secrets-lambda-extension/x86/latest}}'
      Role: !GetAtt MyFunctionRole.Arn
```

**arm64**

```
Layers:
  - !Sub '{{resolve:ssm:/aws/service/aws-parameters-and-secrets-lambda-extension/arm64/latest}}'
```

**nota**  
La sintaxis `{{resolve:ssm:parameter-name}}` recupera automáticamente el valor del parámetro durante las operaciones de las pilas. Esto garantiza que siempre se utilice el ARN actual.

### Los ARN de la extensión más recientes
<a name="ps-integration-lambda-extensions-manually-retrieve"></a>

En las siguientes tablas se proporcionan los ARN de extensión para las arquitecturas y regiones compatibles.

**Topics**
+ [ARN de extensión para arquitecturas x86\$164 y x86](#intel)
+ [ARN de extensión para las arquitecturas ARM64 y Mac with Apple silicon](#arm64)

#### ARN de extensión para arquitecturas x86\$164 y x86
<a name="intel"></a>

Última actualización: 17 de febrero de 2026


****  

| Región | ARN | 
| --- | --- | 
| Este de EE. UU. (Ohio) | `arn:aws:lambda:us-east-2:590474943231:layer:AWS-Parameters-and-Secrets-Lambda-Extension:67` | 
| Este de EE. UU. (Norte de Virginia) | `arn:aws:lambda:us-east-1:177933569100:layer:AWS-Parameters-and-Secrets-Lambda-Extension:61` | 
| Oeste de EE. UU. (Norte de California) | `arn:aws:lambda:us-west-1:997803712105:layer:AWS-Parameters-and-Secrets-Lambda-Extension:59` | 
| Oeste de EE. UU. (Oregón) | `arn:aws:lambda:us-west-2:345057560386:layer:AWS-Parameters-and-Secrets-Lambda-Extension:61` | 
| África (Ciudad del Cabo) | `arn:aws:lambda:af-south-1:317013901791:layer:AWS-Parameters-and-Secrets-Lambda-Extension:60` | 
| Asia Pacific (Hong Kong) | `arn:aws:lambda:ap-east-1:768336418462:layer:AWS-Parameters-and-Secrets-Lambda-Extension:60` | 
| Asia-Pacífico (Taipéi) | `arn:aws:lambda:ap-east-2:890742577149:layer:AWS-Parameters-and-Secrets-Lambda-Extension:33` | 
| Región de Asia Pacífico (Hyderabad) | `arn:aws:lambda:ap-south-2:070087711984:layer:AWS-Parameters-and-Secrets-Lambda-Extension:55` | 
| Asia-Pacífico (Yakarta) | `arn:aws:lambda:ap-southeast-3:490737872127:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| Asia-Pacífico (Melbourne) | `arn:aws:lambda:ap-southeast-4:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension:48` | 
| Asia-Pacífico (Malasia) | `arn:aws:lambda:ap-southeast-5:381492012281:layer:AWS-Parameters-and-Secrets-Lambda-Extension:47` | 
| Asia-Pacífico (Nueva Zelanda) | `arn:aws:lambda:ap-southeast-6:995508174458:layer:AWS-Parameters-and-Secrets-Lambda-Extension:42` | 
| Asia-Pacífico (Mumbai) | `arn:aws:lambda:ap-south-1:176022468876:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| Asia-Pacífico (Osaka) | `arn:aws:lambda:ap-northeast-3:576959938190:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| Asia-Pacífico (Seúl) | `arn:aws:lambda:ap-northeast-2:738900069198:layer:AWS-Parameters-and-Secrets-Lambda-Extension:59` | 
| Asia-Pacífico (Singapur) | `arn:aws:lambda:ap-southeast-1:044395824272:layer:AWS-Parameters-and-Secrets-Lambda-Extension:61` | 
| Asia-Pacífico (Sídney) | `arn:aws:lambda:ap-southeast-2:665172237481:layer:AWS-Parameters-and-Secrets-Lambda-Extension:63` | 
| Asia-Pacífico (Tailandia) | `arn:aws:lambda:ap-southeast-7:941377119484:layer:AWS-Parameters-and-Secrets-Lambda-Extension:48` | 
| Asia-Pacífico (Tokio) | `arn:aws:lambda:ap-northeast-1:133490724326:layer:AWS-Parameters-and-Secrets-Lambda-Extension:60` | 
| Canadá (centro) | `arn:aws:lambda:ca-central-1:200266452380:layer:AWS-Parameters-and-Secrets-Lambda-Extension:65` | 
| Oeste de Canadá (Calgary) | `arn:aws:lambda:ca-west-1:243964427225:layer:AWS-Parameters-and-Secrets-Lambda-Extension:35` | 
| China (Pekín) | `arn:aws-cn:lambda:cn-north-1:287114880934:layer:AWS-Parameters-and-Secrets-Lambda-Extension:64` | 
| China (Ningxia) | `arn:aws-cn:lambda:cn-northwest-1:287310001119:layer:AWS-Parameters-and-Secrets-Lambda-Extension:61` | 
| Europa (Fráncfort) | `arn:aws:lambda:eu-central-1:187925254637:layer:AWS-Parameters-and-Secrets-Lambda-Extension:61` | 
| Europa (Irlanda) | `arn:aws:lambda:eu-west-1:015030872274:layer:AWS-Parameters-and-Secrets-Lambda-Extension:63` | 
| Europa (Londres) | `arn:aws:lambda:eu-west-2:133256977650:layer:AWS-Parameters-and-Secrets-Lambda-Extension:59` | 
| Europa (Milán) | `arn:aws:lambda:eu-south-1:325218067255:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| Europa (París) | `arn:aws:lambda:eu-west-3:780235371811:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| Región Europa (España) | `arn:aws:lambda:eu-south-2:524103009944:layer:AWS-Parameters-and-Secrets-Lambda-Extension:54` | 
| AWS European Sovereign Cloud (Alemania) | `arn:aws-eusc:lambda:eusc-de-east-1:041683371183:layer:AWS-Parameters-and-Secrets-Lambda-Extension:5` | 
| Europa (Estocolmo) | `arn:aws:lambda:eu-north-1:427196147048:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| Israel (Tel Aviv) | `arn:aws:lambda:il-central-1:148806536434:layer:AWS-Parameters-and-Secrets-Lambda-Extension:35` | 
| Región Europa (Zúrich) | `arn:aws:lambda:eu-central-2:772501565639:layer:AWS-Parameters-and-Secrets-Lambda-Extension:42` | 
| Región de México (centro) | `arn:aws:lambda:mx-central-1:241533131596:layer:AWS-Parameters-and-Secrets-Lambda-Extension:32` | 
| Medio Oriente (Baréin) | `arn:aws:lambda:me-south-1:832021897121:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| Medio Oriente (EAU) | `arn:aws:lambda:me-central-1:858974508948:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| América del Sur (São Paulo) | `arn:aws:lambda:sa-east-1:933737806257:layer:AWS-Parameters-and-Secrets-Lambda-Extension:61` | 
| AWS GovCloud (Este de EE. UU.) | `arn:aws-us-gov:lambda:us-gov-east-1:129776340158:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 
| AWS GovCloud (Oeste de EE. UU.) | `arn:aws-us-gov:lambda:us-gov-west-1:127562683043:layer:AWS-Parameters-and-Secrets-Lambda-Extension:58` | 

#### ARN de extensión para las arquitecturas ARM64 y Mac with Apple silicon
<a name="arm64"></a>

Última actualización: 17 de febrero de 2026


****  

| Región | ARN | 
| --- | --- | 
| Este de EE. UU. (Ohio) | `arn:aws:lambda:us-east-2:590474943231:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:67` | 
| Este de EE. UU. (Norte de Virginia) | `arn:aws:lambda:us-east-1:177933569100:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:61` | 
| Región del oeste de EE. UU. (Norte de California) | `arn:aws:lambda:us-west-1:997803712105:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:56` | 
| Oeste de EE. UU. (Oregón) | `arn:aws:lambda:us-west-2:345057560386:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:61` | 
| Región África (Ciudad del Cabo) | `arn:aws:lambda:af-south-1:317013901791:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:57` | 
| Región de Asia-Pacífico (Hong Kong) | `arn:aws:lambda:ap-east-1:768336418462:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:57` | 
| Asia-Pacífico (Taipéi) | `arn:aws:lambda:ap-east-2:890742577149:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:29` | 
| Región de Asia Pacífico (Hyderabad) | `arn:aws:lambda:ap-south-2:070087711984:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 
| Región Asia-Pacífico (Yakarta) | `arn:aws:lambda:ap-southeast-3:490737872127:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:55` | 
| Asia-Pacífico (Melbourne) | `arn:aws:lambda:ap-southeast-4:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 
| Asia-Pacífico (Malasia) | `arn:aws:lambda:ap-southeast-5:381492012281:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 
| Asia-Pacífico (Nueva Zelanda) | `arn:aws:lambda:ap-southeast-6:995508174458:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:40` | 
| Asia-Pacífico (Mumbai) | `arn:aws:lambda:ap-south-1:176022468876:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:58` | 
| Asia-Pacífico (Osaka) | `arn:aws:lambda:ap-northeast-3:576959938190:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:55` | 
| Región de Asia-Pacífico (Seúl) | `arn:aws:lambda:ap-northeast-2:738900069198:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:56` | 
| Asia-Pacífico (Singapur) | `arn:aws:lambda:ap-southeast-1:044395824272:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:61` | 
| Asia-Pacífico (Sídney) | `arn:aws:lambda:ap-southeast-2:665172237481:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:63` | 
| Asia-Pacífico (Tailandia) | `arn:aws:lambda:ap-southeast-7:941377119484:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 
| Asia-Pacífico (Tokio) | `arn:aws:lambda:ap-northeast-1:133490724326:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:60` | 
| Región de Canadá (centro) | `arn:aws:lambda:ca-central-1:200266452380:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:62` | 
| Oeste de Canadá (Calgary) | `arn:aws:lambda:ca-west-1:243964427225:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:34` | 
| China (Pekín) | `arn:aws-cn:lambda:cn-north-1:287114880934:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:53` | 
| China (Ningxia) | `arn:aws-cn:lambda:cn-northwest-1:287310001119:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:50` | 
| Europa (Fráncfort) | `arn:aws:lambda:eu-central-1:187925254637:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:61` | 
| Europa (Irlanda) | `arn:aws:lambda:eu-west-1:015030872274:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:63` | 
| Europa (Londres) | `arn:aws:lambda:eu-west-2:133256977650:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:59` | 
| Región Europa (Milán) | `arn:aws:lambda:eu-south-1:325218067255:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:55` | 
| Región Europa (París) | `arn:aws:lambda:eu-west-3:780235371811:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:55` | 
| Región Europa (España) | `arn:aws:lambda:eu-south-2:524103009944:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:46` | 
| Región Europa (Estocolmo) | `arn:aws:lambda:eu-north-1:427196147048:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:55` | 
| Israel (Tel Aviv) | `arn:aws:lambda:il-central-1:148806536434:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:34` | 
| Región Europa (Zúrich) | `arn:aws:lambda:eu-central-2:772501565639:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:34` | 
| Región de México (centro) | `arn:aws:lambda:mx-central-1:241533131596:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:31` | 
| Región Medio Oriente (Baréin) | `arn:aws:lambda:me-south-1:832021897121:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:55` | 
| Medio Oriente (EAU) | `arn:aws:lambda:me-central-1:858974508948:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 
| Región de América del Sur (São Paulo) | `arn:aws:lambda:sa-east-1:933737806257:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:58` | 
| AWS GovCloud (Este de EE. UU.) | `arn:aws-us-gov:lambda:us-gov-east-1:129776340158:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 
| AWS GovCloud (Oeste de EE. UU.) | `arn:aws-us-gov:lambda:us-gov-west-1:127562683043:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:47` | 

# Integración a otros productos y servicios
<a name="integrations-partners"></a>

AWS Systems Manager incluye capacidad de integración a los productos y los servicios que se indican en la siguiente tabla.


|  |  | 
| --- |--- |
|  Ansible  |  [https://www.ansible.com/](https://www.ansible.com/) es una plataforma de automatización de TI que facilita la implementación de las aplicaciones y los sistemas. Systems Manager incluye `AWS-ApplyAnsiblePlaybooks`, un documento de Systems Manager (documento de SSM) que permite la creación de asociaciones de State Manager que ejecuten cuadernos de trabajo de Ansible.  Más información [Creación de asociaciones que ejecuten manuales de estrategia de Ansible](systems-manager-state-manager-ansible.md)   | 
|  Chef  |  [https://www.chef.io/](https://www.chef.io/) es una herramienta de automatización de TI que facilita la implementación de las aplicaciones y los sistemas. Systems Manager proporciona el documento de SSM `AWS-ApplyChefRecipes`, que permite la creación de asociaciones en State Manager, una herramienta de AWS Systems Manager, que ejecuten recetas de Chef.  Más información [Creación de asociaciones que ejecuten recetas de Chef](systems-manager-state-manager-chef.md)  Systems Manager también se integra con los perfiles [https://www.chef.io/products/chef-inspec/](https://www.chef.io/products/chef-inspec/), lo que permite la ejecución de análisis de conformidad y el control de los nodos conformes y no conformes.  Más información [Utilización de perfiles de Chef InSpec con la conformidad de Systems Manager](integration-chef-inspec.md)   | 
|  GitHub  |  [https://github.com/](https://github.com/) ofrece alojamiento para el control de versiones de desarrollo de software y la colaboración. Systems Manager incluye `AWS-RunDocument`, un documento de SSM que permite la ejecución de otros documentos de SSM almacenados en GitHub; también incluye el documento `AWS-RunRemoteScript`, el cual permite la ejecución de scripts almacenados en GitHub. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-partners.html)  | 
|  Jenkins  |  [https://www.jenkins.io/](https://www.jenkins.io/) es un servidor de automatización de código abierto que le permite a los desarrolladores crear, probar e implementar software de manera fiable. Automatización, una herramienta de Systems Manager, puede utilizarse como un paso posterior a la creación para preinstalar versiones de las aplicaciones en Amazon Machine Images (AMIs).  Más información [Actualización de las AMIs mediante Automatización y Jenkins](automation-tutorial-update-patch-ami-jenkins-integration.md)   | 
|  ServiceNow  |  [https://www.servicenow.com/](https://www.servicenow.com/) es un sistema de administración de servicios empresariales que permite la administración de los servicios y las operaciones de TI. Automatización, Change Manager, Administrador de incidentes y OpsCenter son herramientas de Systems Manager que se integran con ServiceNow a través del Conector de administración de servicios de AWS. Con esta integración, se puede ver, crear, actualizar, agregar correspondencia y solucionar casos de AWS Support de ServiceNow.  Más información [Integración de con ServiceNow](integrations-partners-servicenow.md)    | 
| Terraform |  HashiCorp [Terraform](https://registry.terraform.io/) es una herramienta de software de *infraestructura como código* (IaC) de código abierto que proporciona un flujo de trabajo de interfaz de la línea de comandos (CLI) para administrar varios servicios en la nube. En el caso de Systems Manager, puede utilizar Terraform para administrar o aprovisionar lo siguiente: **Recursos** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-partners.html) **Orígenes de datos** [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/systems-manager/latest/userguide/integrations-partners.html)  | 

**Topics**
+ [Ejecución de scripts desde GitHub](integration-remote-scripts.md)
+ [Utilización de perfiles de Chef InSpec con la conformidad de Systems Manager](integration-chef-inspec.md)
+ [Integración de con ServiceNow](integrations-partners-servicenow.md)

# Ejecución de scripts desde GitHub
<a name="integration-remote-scripts"></a>

En este tema, se describe cómo usar `AWS-RunRemoteScript`, un documento predefinido de Systems Manager (documento de SSM) para descargar scripts desde GitHub, incluidos los cuadernos de trabajo de Ansible y los scripts de Python, Ruby y PowerShell. Al utilizar este documento de SSM, ya no es necesario transferir scripts de forma manual a Amazon Elastic Compute Cloud (Amazon EC2) ni empaquetarlos en documentos de SSM. La integración de AWS Systems Manager a GitHub promueve la *infraestructura como código*, lo que reduce el tiempo que requiere la administración de nodos mientras se estandarizan las configuraciones en la flota. 

También puede crear documentos de SSM personalizados que le permitan descargar y ejecutar scripts u otros documentos de SSM desde ubicaciones remotas. Para obtener más información, consulte [Creación de documentos compuestos](documents-creating-content.md#documents-creating-composite).

También puede descargar un directorio en el que se incluyen varios scripts. Cuando se ejecuta el script principal en el directorio, Systems Manager también ejecuta los scripts a los que se hace referencia y se incluyen en el directorio. 

Tenga en cuenta los siguientes detalles importantes acerca de la ejecución de scripts desde GitHub.
+ Systems Manager no comprueba que el script pueda ejecutarse en un nodo. Antes de descargar y ejecutar el script, verifique que el software necesario esté instalado en el nodo. O bien, puede crear un documento compuesto que instale el software mediante Run Command o State Manager, herramientas de AWS Systems Manager, y, a continuación, descargue y ejecute el script.
+ Usted es responsable de garantizar el cumplimiento de todos los requisitos de GitHub. Esto incluye la actualización de su token de acceso, según sea necesario. Asegúrese de no superar el número de solicitudes autenticadas o sin autenticar. Para obtener más información, consulte la documentación de GitHub.
+ Los repositorios GitHub Enterprise no son compatibles.

**Topics**
+ [Ejecute cuadernos de trabajo de Ansible desde GitHub](integration-github-ansible.md)
+ [Ejecute scripts de Python desde GitHub](integration-github-python.md)

# Ejecute cuadernos de trabajo de Ansible desde GitHub
<a name="integration-github-ansible"></a>

En esta sección, se incluyen los procedimientos que lo ayudarán a ejecutar cuadernos de trabajo de Ansible desde GitHub a través de la consola o de AWS Command Line Interface (AWS CLI).

**Antes de empezar**  
Si tiene previsto ejecutar un script almacenado en un repositorio privado de GitHub, cree un parámetro AWS Systems Manager `SecureString` para el token de acceso de seguridad de GitHub. No puede obtener acceso a un script en un repositorio privado de GitHub al pasar manualmente el token por SSH. El token de acceso debe pasarse como parámetro `SecureString` de Systems Manager. Para obtener más información acerca de cómo crear un parámetro `SecureString`, consulte [Creación de parámetros de Parameter Store en Systems Manager](sysman-paramstore-su-create.md).

## Ejecute un cuaderno de trabajo de Ansible desde GitHub (consola)
<a name="integration-github-ansible-console"></a>

**Ejecute un cuaderno de trabajo de Ansible desde GitHub**

1. Abra la consola de AWS Systems Manager en [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. En el panel de navegación, elija **Run Command**.

1. Elija **Run command (Ejecutar comando)**.

1. En la lista **Command document** (Documento de Command), elija **`AWS-RunRemoteScript`**.

1. En **Command parameters** haga lo siguiente:
   + En **Tipo de origen**, seleccione **GitHub**. 
   + En el cuadro **Source Info** (Información de la fuente), ingrese la información requerida para acceder a la fuente, con el siguiente formato.

     ```
     {
       "owner": "owner_name",
       "repository": "repository_name", 
       "getOptions": "branch:branch_name",
       "path": "path_to_scripts_or_directory",
       "tokenInfo": "{{ssm-secure:SecureString_parameter_name}}" 
     }
     ```

     En este ejemplo, se descarga un archivo llamado `webserver.yml`. 

     ```
     {
         "owner": "TestUser1",
         "repository": "GitHubPrivateTest",
         "getOptions": "branch:myBranch",
         "path": "scripts/webserver.yml",
         "tokenInfo": "{{ssm-secure:mySecureStringParameter}}"
     }
     ```
**nota**  
`"branch"` Solo se requiere si el documento SSM se almacena en una sucursal que no sea `master`.  
Para usar la versión de los scripts que están en una *confirmación* determinada en su repositorio, use `commitID` con `getOptions` en lugar de `branch`. Por ejemplo:  
`"getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",`
   + En el campo **Command Line** (Línea de comandos), ingrese los parámetros para la ejecución de scripts. A continuación se muestra un ejemplo.

     **ansible-playbook -i “localhost,” --check -c local webserver.yml**
   + (Opcional) En el campo **Working Directory** (Directorio de trabajo), ingrese el nombre de un directorio del nodo en el que desee descargar y ejecutar el script.
   + (Opcional) En **Execution Timeout**, especifique el número de segundos que esperará el sistema antes de fallar en la ejecución del comando de script. 

1. En la sección **Targets** (Destinos), para elegir los nodos administrados en los que desea ejecutar esta operación, especifique las etiquetas, seleccione las instancias o los dispositivos de borde manualmente o especifique un grupo de recursos.
**sugerencia**  
Si un nodo administrado que espera ver no aparece en la lista, consulte [Solución de problemas de disponibilidad de nodos administrados](fleet-manager-troubleshooting-managed-nodes.md) para obtener consejos de solución de problemas.

1. En **Otros parámetros**:
   + En **Comentario**, ingrese la información acerca de este comando.
   + En **Tiempo de espera (segundos)**, especifique el número de segundos que tiene que esperar el sistema antes de indicar que se ha producido un error en la ejecución del comando general. 

1. En **Rate control** (Control de velocidad):
   + En **Concurrency** (Simultaneidad), especifique un número o un porcentaje de los nodos administrados en los que desea ejecutar el comando al mismo tiempo.
**nota**  
Si seleccionó los destinos mediante la especificación de etiquetas aplicadas a nodos administrados o de grupos de recursos de AWS y no está seguro de cuántos nodos administrados tienen destino, limite el número de destinos que puede ejecutar el documento al mismo tiempo. Para ello, especifique un porcentaje.
   + En **Error threshold** (Umbral de errores), especifique cuándo desea parar la ejecución del comando en los demás nodos administrados después de que haya fallado en un número o un porcentaje de los nodos. Por ejemplo, si especifica tres errores, Systems Manager dejará de enviar el comando cuando se reciba el cuarto error. Los nodos administrados que estén procesando el comando todavía pueden enviar errores.

1. (Opcional) En **Opciones de salida**, para guardar la salida del comando en un archivo, seleccione el cuadro **Write command output to an S3 bucket**. Ingrese los nombres del bucket y del prefijo (carpeta) en los cuadros.
**nota**  
Los permisos de S3 que conceden la capacidad de escribir datos en un bucket de S3 son los del perfil de instancia (para instancias de EC2) o rol de servicio de IAM (máquinas activadas de manera híbrida) asignados a la instancia, no los del usuario de IAM que realiza esta tarea. Para obtener más información, consulte [Configuración de permisos de instancia requeridos para Systems Manager](setup-instance-permissions.md) o [Creación de un rol de servicio de IAM para un entorno híbrido](hybrid-multicloud-service-role.md). Además, si el bucket de S3 especificado se encuentra en una Cuenta de AWS diferente, asegúrese de que el perfil de instancias o el rol de servicio de IAM asociado al nodo administrado tenga los permisos necesarios para escribir en ese bucket.

1. En la sección **Notificaciones de SNS**, seleccione la casilla de verificación **Habilitar notificaciones de SNS** si desea recibir notificaciones sobre el estado de ejecución de los comandos.

   Para obtener más información acerca de la configuración de las notificaciones de Amazon SNS para Run Command, consulte [Cómo monitorear los cambios de estado de Systems Manager mediante las notificaciones de Amazon SNS](monitoring-sns-notifications.md).

1. Seleccione **Ejecutar**.

## Ejecute un cuaderno de trabajo de Ansible desde GitHub con AWS CLI
<a name="integration-github-ansible-cli"></a>

1. Si aún no lo ha hecho, instale y configure la AWS Command Line Interface (AWS CLI).

   Para obtener más información, consulte [Instalación o actualización de la última versión de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Ejecute el siguiente comando para descargar y ejecutar un script de GitHub.

   ```
   aws ssm send-command \
       --document-name "AWS-RunRemoteScript" \
       --instance-ids "instance-IDs"\
       --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\": \"repository_name\", \"path\": \"path_to_file_or_directory\", \"tokenInfo\":\"{{ssm-secure:name_of_your_SecureString_parameter}}\" }"],"commandLine":["commands_to_run"]}'
   ```

   A continuación, se presenta un ejemplo de comando que se puede ejecutar en un equipo local Linux.

   ```
   aws ssm send-command \    
       --document-name "AWS-RunRemoteScript" \
       --instance-ids "i-02573cafcfEXAMPLE" \
       --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"TestUser1\", \"repository\": \"GitHubPrivateTest\", \"path\": \"scripts/webserver.yml\", \"tokenInfo\":\"{{ssm-secure:mySecureStringParameter}}\" }"],"commandLine":["ansible-playbook -i “localhost,” --check -c local webserver.yml"]}'
   ```

# Ejecute scripts de Python desde GitHub
<a name="integration-github-python"></a>

En esta sección, se incluyen procedimientos que lo ayudarán a ejecutar scripts de Python desde GitHub con la consola de AWS Systems Manager o la AWS Command Line Interface (AWS CLI). 

## Ejecute un script de Python desde GitHub (consola)
<a name="integration-github-python-console"></a>

**Ejecute un script de Python desde GitHub**

1. Abra la consola de AWS Systems Manager en [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. En el panel de navegación, elija **Run Command**.

1. Elija **Run command (Ejecutar comando)**.

1. En la lista **Command document** (Documento de Command), elija **`AWS-RunRemoteScript`**.

1. En **Parámetros de comando** haga lo siguiente:
   + En **Tipo de origen**, seleccione **GitHub**. 
   + En el cuadro **Source Info** (Información de la fuente), ingrese la información requerida para acceder a la fuente, con el siguiente formato:

     ```
     {
         "owner": "owner_name",
         "repository": "repository_name",
         "getOptions": "branch:branch_name",
         "path": "path_to_document",
         "tokenInfo": "{{ssm-secure:SecureString_parameter_name}}"
     }
     ```

     En el ejemplo siguiente, se descarga un directorio de scripts denominado *complex-script*.

     ```
     {
         "owner": "TestUser1",
         "repository": "SSMTestDocsRepo",
         "getOptions": "branch:myBranch",
         "path": "scripts/python/complex-script",
         "tokenInfo": "{{ssm-secure:myAccessTokenParam}}"
     }
     ```
**nota**  
`"branch"` Solo se requiere si sus scripts están almacenados en una rama distinta de `master`.  
Para usar la versión de los scripts que están en una *confirmación* determinada en su repositorio, use `commitID` con `getOptions` en lugar de `branch`. Por ejemplo:  
`"getOptions": "commitID:bbc1ddb94...b76d3bEXAMPLE",`
   + En **Command Line** (Línea de comandos), ingrese parámetros para la ejecución de scripts. A continuación se muestra un ejemplo.

     ```
     mainFile.py argument-1 argument-2
     ```

     En este ejemplo, se ejecuta `mainFile.py`, que posteriormente puede ejecutar otros scripts en el directorio `complex-script`.
   + (Opcional) En **Working Directory** (Directorio de trabajo), ingrese el nombre de un directorio del nodo en el que desee descargar y ejecutar el script.
   + (Opcional) En **Execution Timeout (Tiempo de espera de ejecución)**, especifique el número de segundos que esperará el sistema antes de fallar en la ejecución del comando de script. 

1. En la sección **Targets** (Destinos), para elegir los nodos administrados en los que desea ejecutar esta operación, especifique las etiquetas, seleccione las instancias o los dispositivos de borde manualmente o especifique un grupo de recursos.
**sugerencia**  
Si un nodo administrado que espera ver no aparece en la lista, consulte [Solución de problemas de disponibilidad de nodos administrados](fleet-manager-troubleshooting-managed-nodes.md) para obtener consejos de solución de problemas.

1. En **Otros parámetros**:
   + En **Comentario**, ingrese la información acerca de este comando.
   + En **Tiempo de espera (segundos)**, especifique el número de segundos que tiene que esperar el sistema antes de indicar que se ha producido un error en la ejecución del comando general. 

1. En **Rate control** (Control de velocidad):
   + En **Concurrency** (Simultaneidad), especifique un número o un porcentaje de los nodos administrados en los que desea ejecutar el comando al mismo tiempo.
**nota**  
Si seleccionó los destinos mediante la especificación de etiquetas aplicadas a nodos administrados o de grupos de recursos de AWS y no está seguro de cuántos nodos administrados tienen destino, limite el número de destinos que puede ejecutar el documento al mismo tiempo. Para ello, especifique un porcentaje.
   + En **Error threshold** (Umbral de errores), especifique cuándo desea parar la ejecución del comando en los demás nodos administrados después de que haya fallado en un número o un porcentaje de los nodos. Por ejemplo, si especifica tres errores, Systems Manager dejará de enviar el comando cuando se reciba el cuarto error. Los nodos administrados que estén procesando el comando todavía pueden enviar errores.

1. (Opcional) En **Opciones de salida**, para guardar la salida del comando en un archivo, seleccione el cuadro **Write command output to an S3 bucket**. Ingrese los nombres del bucket y del prefijo (carpeta) en los cuadros.
**nota**  
Los permisos de S3 que conceden la capacidad de escribir datos en un bucket de S3 son los del perfil de instancia (para instancias de EC2) o rol de servicio de IAM (máquinas activadas de manera híbrida) asignados a la instancia, no los del usuario de IAM que realiza esta tarea. Para obtener más información, consulte [Configuración de permisos de instancia requeridos para Systems Manager](setup-instance-permissions.md) o [Creación de un rol de servicio de IAM para un entorno híbrido](hybrid-multicloud-service-role.md). Además, si el bucket de S3 especificado se encuentra en una Cuenta de AWS diferente, asegúrese de que el perfil de instancias o el rol de servicio de IAM asociado al nodo administrado tenga los permisos necesarios para escribir en ese bucket.

1. En la sección **Notificaciones de SNS**, seleccione la casilla de verificación **Habilitar notificaciones de SNS** si desea recibir notificaciones sobre el estado de ejecución de los comandos.

   Para obtener más información acerca de la configuración de las notificaciones de Amazon SNS para Run Command, consulte [Cómo monitorear los cambios de estado de Systems Manager mediante las notificaciones de Amazon SNS](monitoring-sns-notifications.md).

1. Seleccione **Ejecutar**.

## Ejecute un script de Python desde GitHub con AWS CLI
<a name="integration-github-python-cli"></a>

1. Si aún no lo ha hecho, instale y configure la AWS Command Line Interface (AWS CLI).

   Para obtener más información, consulte [Instalación o actualización de la última versión de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Ejecute el siguiente comando para descargar y ejecutar un script de GitHub.

   ```
   aws ssm send-command --document-name "AWS-RunRemoteScript" --instance-ids "instance-IDs" --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\":\"repository_name\", \"path\": \"path_to_script_or_directory"}"],"commandLine":["commands_to_run"]}'
   ```

   A continuación se muestra un ejemplo.

   ```
   aws ssm send-command --document-name "AWS-RunRemoteScript" --instance-ids "i-02573cafcfEXAMPLE" --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"TestUser1\", \"repository\":\"GitHubTestPublic\", \"path\": \"scripts/python/complex-script\"}"],"commandLine":["mainFile.py argument-1 argument-2 "]}'
   ```

   En este ejemplo, se descarga un directorio de scripts llamado `complex-script`. La entrada `commandLine` ejecuta `mainFile.py`, que luego puede ejecutar otros scripts en el directorio `complex-script`.

# Utilización de perfiles de Chef InSpec con la conformidad de Systems Manager
<a name="integration-chef-inspec"></a>

AWS Systems Manager se integra con [https://www.chef.io/products/chef-inspec](https://www.chef.io/products/chef-inspec). Chef InSpec es un marco de pruebas de código abierto que le permite crear perfiles de lenguaje natural para almacenarlos en GitHub o Amazon Simple Storage Service (Amazon S3). A continuación, puede utilizar Systems Manager para ejecutar análisis de conformidad y ver cuáles nodos son conformes y cuáles no. Un *perfil* es un requisito de seguridad, conformidad o política de un entorno informático. Por ejemplo, puede crear perfiles que lleven a cabo las siguientes comprobaciones cuando se analicen los nodos con Cumplimiento, una herramienta de AWS Systems Manager:
+ Comprobar si determinados puertos están abiertos o cerrados.
+ Comprobar si determinadas aplicaciones se están ejecutando.
+ Comprobar si determinados paquetes están instalados.
+ Comprobar las claves de registro de Windows de determinadas propiedades.

Puede crear perfiles de InSpec *solo* para las instancias de Amazon Elastic Compute Cloud (Amazon EC2) que administre con Systems Manager. No se admiten servidores en las instalaciones ni máquinas virtuales (VM). El siguiente ejemplo de perfil de Chef InSpec verifica si el puerto 22 está abierto.

```
control 'Scan Port' do
impact 10.0
title 'Server: Configure the service port'
desc 'Always specify which port the SSH server should listen to.
Prevent unexpected settings.'
describe sshd_config do
its('Port') { should eq('22') }
end
end
```

InSpec incluye una colección de recursos que le ayudan a escribir rápidamente comprobaciones y controles de auditoría. InSpec utiliza [el lenguaje específico de dominio (DSL) de InSpec](https://docs.chef.io/inspec/7.0/reference/glossary/#dsl) para escribir estos controles en Ruby. También puede utilizar perfiles creados por una gran comunidad de usuarios de InSpec. Por ejemplo, el proyecto [DevSec chef-os-hardening](https://github.com/dev-sec/chef-os-hardening) que se encuentra en GitHub incluye decenas de perfiles que lo pueden ayudar a proteger los nodos. Puede crear y almacenar perfiles en GitHub o en Amazon S3. 

## Funcionamiento
<a name="integration-chef-inspec-how"></a>

El proceso de utilización de perfiles de InSpec con Compliance funciona de la siguiente manera:

1. Identifique los perfiles predefinidos de InSpec que quiera utilizar o créelos. Puede utilizar [perfiles predefinidos](https://github.com/search?p=1&q=topic%3Ainspec+org%3Adev-sec&type=Repositories) de GitHub para comenzar. Para obtener información sobre cómo crear perfiles de InSpec propios, consulte [Perfiles de Chef InSpec](https://www.inspec.io/docs/reference/profiles/).

1. Almacene perfiles en un repositorio público o privado de GitHub o en un bucket de S3.

1. Ejecute Compliance con los perfiles de InSpec mediante el documento de Systems Manager (documento de SSM) `AWS-RunInspecChecks`. Puede comenzar un análisis de Cumplimiento con Run Command, una herramienta de AWS Systems Manager, para efectuar análisis bajo demanda, o bien, puede programar análisis regulares de Cumplimiento a través de State Manager, otra herramienta de AWS Systems Manager.

1. Utilice la API de Compliance o la consola de Compliance para identificar nodos no conformes.

**nota**  
Observe la siguiente información.  
Chef utiliza un cliente en los nodos para procesar el perfil. No es necesario instalar el cliente. Cuando Systems Manager ejecuta el documento de SSM `AWS-RunInspecChecks`, el sistema verifica si el cliente está instalado. Si no lo está, Systems Manager instala el cliente de Chef durante el análisis y lo desinstala al terminar.
Como se describe en este tema, cuando se ejecuta el documento de SSM `AWS-RunInspecChecks`, se asigna una entrada de conformidad de tipo `Custom:Inspec` a cada nodo de destino. Para asignar este tipo de conformidad, el documento llama a la operación [PutComplianceItems](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutComplianceItems.html) de la API.

## Ejecutar un análisis de InSpec Compliance
<a name="integration-chef-inspec-running"></a>

Esta sección contiene información acerca de cómo ejecutar un análisis de conformidad de InSpec con la consola de Systems Manager y la AWS Command Line Interface (AWS CLI). En el procedimiento con la consola, se muestra cómo configurar State Manager para que ejecute el análisis. En el procedimiento con la AWS CLI, se muestra cómo configurar Run Command para que ejecute el análisis.

### Ejecución de un análisis de conformidad de InSpec con State Manager (consola)
<a name="integration-chef-inspec-running-console"></a>

**Para ejecutar un análisis de InSpec Compliance con State Manager mediante la consola de AWS Systems Manager**

1. Abra la consola de AWS Systems Manager en [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. En el panel de navegación, elija **State Manager**.

1. Elija **Crear asociación**.

1. En la sección **Provide association details** (Proporcionar detalles de la asociación), escriba un nombre.

1. En la lista **Document** (Documento), elija **`AWS-RunInspecChecks`**.

1. En la lista **Document version** (Versión del documento), elija **Latest at runtime** (El último durante el tiempo de ejecución).

1. En la sección **Parámetros**, en la lista **Tipo de origen**, seleccione **GitHub** o **S3**.

   Si selecciona **GitHub**, introduzca a continuación la ruta hacia un perfil InSpec en un repositorio público o privado de GitHub en el campo **Información del origen**. A continuación, se muestra un ejemplo de ruta hacia un perfil público proporcionado por el equipo de Systems Manager desde la siguiente ubicación: [https://github.com/awslabs/amazon-ssm/tree/master/Compliance/InSpec/PortCheck](https://github.com/awslabs/amazon-ssm/tree/master/Compliance/InSpec/PortCheck).

   ```
   {"owner":"awslabs","repository":"amazon-ssm","path":"Compliance/InSpec/PortCheck","getOptions":"branch:master"}
   ```

   Si elige **S3**, escriba a continuación una URL válida hacia un perfil de InSpec en un bucket de S3 en el campo **Source Info (Información del origen)**. 

   Para obtener más información sobre cómo se integra Systems Manager en GitHub y Amazon S3, consulte [Ejecución de scripts desde GitHub](integration-remote-scripts.md). 

1. En la sección **Targets** (Destinos), para elegir los nodos administrados en los que desea ejecutar esta operación, especifique las etiquetas, seleccione las instancias o los dispositivos de borde manualmente o especifique un grupo de recursos.
**sugerencia**  
Si un nodo administrado que espera ver no aparece en la lista, consulte [Solución de problemas de disponibilidad de nodos administrados](fleet-manager-troubleshooting-managed-nodes.md) para obtener consejos de solución de problemas.

1. En la sección **Specify schedule** (Especificar programación), utilice las opciones del generador de programaciones para crear una que especifique cuándo desea que se ejecute el análisis de Compliance.

1. En **Rate control** (Control de velocidad):
   + En **Concurrency** (Simultaneidad), especifique un número o un porcentaje de los nodos administrados en los que desea ejecutar el comando al mismo tiempo.
**nota**  
Si seleccionó los destinos mediante la especificación de etiquetas aplicadas a nodos administrados o de grupos de recursos de AWS y no está seguro de cuántos nodos administrados tienen destino, limite el número de destinos que puede ejecutar el documento al mismo tiempo. Para ello, especifique un porcentaje.
   + En **Error threshold** (Umbral de errores), especifique cuándo desea parar la ejecución del comando en los demás nodos administrados después de que haya fallado en un número o un porcentaje de los nodos. Por ejemplo, si especifica tres errores, Systems Manager dejará de enviar el comando cuando se reciba el cuarto error. Los nodos administrados que estén procesando el comando todavía pueden enviar errores.

1. (Opcional) En **Opciones de salida**, para guardar la salida del comando en un archivo, seleccione el cuadro **Write command output to an S3 bucket**. Ingrese los nombres del bucket y del prefijo (carpeta) en los cuadros.
**nota**  
Los permisos de S3 que conceden la capacidad de escribir datos en un bucket de S3 son los del perfil de instancia (para instancias de EC2) o rol de servicio de IAM (máquinas activadas de manera híbrida) asignados a la instancia, no los del usuario de IAM que realiza esta tarea. Para obtener más información, consulte [Configuración de permisos de instancia requeridos para Systems Manager](setup-instance-permissions.md) o [Creación de un rol de servicio de IAM para un entorno híbrido](hybrid-multicloud-service-role.md). Además, si el bucket de S3 especificado se encuentra en una Cuenta de AWS diferente, asegúrese de que el perfil de instancias o el rol de servicio de IAM asociado al nodo administrado tenga los permisos necesarios para escribir en ese bucket.

1. Elija **Crear asociación**. El sistema crea la asociación y ejecuta el análisis de Compliance automáticamente.

1. Espere unos minutos para hasta que finalice el análisis y, a continuación, elija **Compliance** (Conformidad) en el panel de navegación.

1. En **Corresponding managed instances** (Instancias administradas correspondientes), localice los nodos en los que la columna **Compliance Type** (Tipo de conformidad) sea **Custom:Inspec**.

1. Elija un ID de nodo para ver los detalles de los estados no conformes.

### Ejecución de un análisis de conformidad de InSpec con Run Command (AWS CLI)
<a name="integration-chef-inspec-running-cli"></a>

1. Si aún no lo ha hecho, instale y configure la AWS Command Line Interface (AWS CLI).

   Para obtener información, consulte [Instalación o actualización de la última versión de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Ejecute uno de los siguientes comandos para ejecutar un perfil de InSpec desde GitHub o Amazon S3.

   El comando usa los siguientes parámetros:
   + **sourceType**: GitHub o Amazon S3
   + **sourceInfo**: URL de la carpeta del perfil InSpec en GitHub o en un bucket de S3. La carpeta debe contener el archivo base InSpec (\$1.yml) y todos los controles relacionados (\$1.rb).

   **GitHub**

   ```
   aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:tag_name","Values":["tag_value"]}]' --parameters '{"sourceType":["GitHub"],"sourceInfo":["{\"owner\":\"owner_name\", \"repository\":\"repository_name\", \"path\": \"Inspec.yml_file"}"]}'
   ```

   A continuación se muestra un ejemplo.

   ```
   aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:testEnvironment","Values":["webServers"]}]' --parameters '{"sourceType":["GitHub"],"getOptions":"branch:master","sourceInfo":["{\"owner\":\"awslabs\", \"repository\":\"amazon-ssm\", \"path\": \"Compliance/InSpec/PortCheck\"}"]}'
   ```

   **Amazon S3**

   ```
   aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:tag_name","Values":["tag_value"]}]' --parameters'{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/amzn-s3-demo-bucket/Inspec.yml_file\"}"]}'
   ```

   A continuación se muestra un ejemplo.

   ```
   aws ssm send-command --document-name "AWS-RunInspecChecks" --targets '[{"Key":"tag:testEnvironment","Values":["webServers"]}]' --parameters'{"sourceType":["S3"],"sourceInfo":["{\"path\":\"https://s3.aws-api-domain/amzn-s3-demo-bucket/InSpec/PortCheck.yml\"}"]}' 
   ```

1. Ejecute el siguiente comando para ver un resumen del análisis de Compliance.

   ```
   aws ssm list-resource-compliance-summaries --filters Key=ComplianceType,Values=Custom:Inspec
   ```

1. Ejecute el siguiente comando para ver los detalles de un nodo no conforme.

   ```
   aws ssm list-compliance-items --resource-ids node_ID --resource-type ManagedInstance --filters Key=DocumentName,Values=AWS-RunInspecChecks
   ```

# Integración de con ServiceNow
<a name="integrations-partners-servicenow"></a>

ServiceNow ofrece un sistema de administración de servicios basado en la nube para crear y administrar flujos de trabajo en la organización, como para los servicios de TI, los sistemas de tickets y la asistencia. El Conector de administración de servicios de AWS integra ServiceNow con Systems Manager para aprovisionar, administrar y operar recursos de AWS desde ServiceNow. Puede utilizar el Conector de Administración de Servicios AWS para integrar ServiceNow con Automatización, Change Manager, Administración de incidentes y OpsCenter, que son herramientas de AWS Systems Manager. 

Con ServiceNow, puede realizar las tareas siguientes: 
+ Ejecutar manuales de automatización desde Systems Manager. 
+ Ver, actualizar y resolver incidentes desde OpsItems de Systems Manager. 
+ Ver y administrar los elementos operativos, como los incidentes, a través de OpsCenter de Systems Manager. 
+ Ver y ejecutar las solicitudes de cambio de Systems Manager a partir de una lista seleccionada de plantillas de cambios aprobadas previamente. 
+ Administrar y resolver los incidentes relacionados las aplicaciones alojadas en AWS mediante la integración con Administrador de incidentes. 

**nota**  
Para obtener más información sobre la integración con ServiceNow, consulte [Configuración de las integraciones de servicios de AWS](https://docs.aws.amazon.com/smc/latest/ag/sn-config-integ.html) en la *Guía del administrador del Conector de administración de servicios de AWS*.