

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configure la rotación automática mediante el AWS CLI
<a name="rotate-secrets_turn-on-cli"></a>

En este tutorial se describe cómo realizar la configuración [Rotación con función de Lambda](rotate-secrets_lambda.md) mediante el AWS CLI. Cuando se rota un secreto, se actualizan las credenciales tanto en el secreto como en la base de datos o el servicio para el que está destinado el secreto. 

También puede usar la consola para configurar la rotación. En el caso de los secretos de bases de datos, consulte [Rotación automática de secretos de bases de datos (consola)](rotate-secrets_turn-on-for-db.md). Para los demás tipos de secretos, consulte [Rotación automática para secretos que no son de bases de datos (consola)](rotate-secrets_turn-on-for-other.md).

Para configurar la rotación mediante el AWS CLI, si va a rotar un secreto de base de datos, primero debe elegir una estrategia de rotación. Si elige la estrategia de usuarios alternativos, debe almacenar un secreto independiente con las credenciales de un superusuario de base de datos. A continuación, escriba el código de la función de rotación. Secrets Manager proporciona plantillas en las que puede basar su función. A continuación, cree una función de Lambda con el código y establezca los permisos tanto para la función de Lambda como para el rol de ejecución de Lambda. El siguiente paso consiste en asegurarse de que la función de Lambda pueda acceder a Secrets Manager y a la base de datos o al servicio a través de la red. Por último, configure el secreto para la rotación.

**Topics**
+ [Requisito previo para los secretos de la base de datos: elegir una estrategia de rotación](#rotate-secrets_turn-on-cli_step1)
+ [Paso 1: escribir el código de la función de rotación](#rotate-secrets_turn-on-cli_write)
+ [Paso 2: Crear la función de Lambda](#w2aac21c11c25c15)
+ [Paso 3: configurar el acceso a la red](#w2aac21c11c25c17)
+ [Paso 4: configurar el secreto para la rotación](#w2aac21c11c25c19)
+ [Siguientes pasos](#w2aac21c11c25c21)

## Requisito previo para los secretos de la base de datos: elegir una estrategia de rotación
<a name="rotate-secrets_turn-on-cli_step1"></a>

Para obtener información sobre las estrategias que ofrece Secrets Manager, consulte [Estrategias de rotación de la función de Lambda](rotation-strategy.md).

### Opción 1: estrategia de usuario único
<a name="w2aac21c11c25c11b5"></a>

Si elige la *estrategia de usuario único*, puede continuar con el paso 1. 

### Opción 2: estrategia de usuarios alternos
<a name="w2aac21c11c25c11b7"></a>

Si elige la *estrategia de usuarios alternos*, debe:
+ [Crear un secreto](create_secret.md#create_secret_cli) y almacenar en él las credenciales de superusuario de la base de datos. Necesita un secreto con credenciales de superusuario porque la rotación para usuarios alternos clona el primer usuario, y la mayoría de los usuarios no tienen ese permiso. 
+ Añadir el ARN del secreto de superusuario al secreto original. Para obtener más información, consulte [Estructura JSON de AWS Secrets Manager secretos](reference_secret_json_structure.md). 

Tenga en cuenta que Amazon RDS Proxy no admite la estrategia de usuarios alternos.

## Paso 1: escribir el código de la función de rotación
<a name="rotate-secrets_turn-on-cli_write"></a>

Para rotar un secreto, se necesita una función de rotación. Una función de rotación es una función de Lambda a la que Secrets Manager llama para rotar un secreto. Para obtener más información, consulte [Rotación con función de Lambda](rotate-secrets_lambda.md). En este paso, se escribe el código que actualiza el secreto y el servicio o la base de datos para el que está destinado el secreto.

Secrets Manager proporciona plantillas para secretos de bases de datos de Amazon RDS, Amazon Aurora, Amazon Redshift y Amazon DocumentDB en [Plantillas de función de rotación](reference_available-rotation-templates.md). 

**Escribir el código de la función de rotación**

1. Realice una de las siguientes acciones:
   + Consultar la lista de [plantillas de funciones de rotación](reference_available-rotation-templates.md). Si hay alguna que coincida con su estrategia de servicio y rotación, copie el código. 
   + Para otros tipos de secretos, escriba su propia función de rotación. Para obtener instrucciones, consulte [Funciones de rotación de Lambda](rotate-secrets_lambda-functions.md). 

1. Guarde el archivo en un archivo ZIP {{my-function.zip}} junto con las dependencias necesarias.

## Paso 2: Crear la función de Lambda
<a name="w2aac21c11c25c15"></a>

En este paso, se crea la función de Lambda mediante el archivo ZIP que creó en el paso 1. También configura el [rol de ejecución de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html), que es un rol que Lambda asume cuando se invoca la función.

**Crear un rol de ejecución y una función de rotación de Lambda**

1. Cree una política de confianza para el rol de ejecución de Lambda y guárdela como un archivo JSON. Para obtener más información y ejemplos, consulte [Permisos del rol de ejecución de la función de rotación Lambda para AWS Secrets Manager](rotating-secrets-required-permissions-function.md). La política debe:
   + Permitir que el rol llame a las operaciones de Secrets Manager relacionadas con el secreto. 
   + Permitir que el rol llame al servicio para el que está destinado el secreto, por ejemplo, para crear una contraseña nueva. 

1. Crear el rol de ejecución de Lambda y aplicar la política de confianza que creó en el paso anterior mediante una llamada a [https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html).

   ```
   aws iam create-role \
       --role-name {{rotation-lambda-role}} \
       --assume-role-policy-document file://{{trust-policy.json}}
   ```

1. Cree la función de Lambda a partir del archivo ZIP mediante una llamada a [https://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html](https://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html).

   ```
   aws lambda create-function \
     --function-name {{my-rotation-function}} \
     --runtime python3.12 \
     --zip-file fileb://{{my-function.zip}} \
     --handler lambda_function.lambda_handler \
     --role arn:aws:iam::{{123456789012}}:role/service-role/{{rotation-lambda-role}}
   ```

1. Establezca una política de recursos en la función de Lambda para permitir que Secrets Manager la invoque mediante una llamada a [https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html).

   ```
   aws lambda add-permission \
     --function-name {{my-rotation-function}} \
     --action lambda:InvokeFunction \
     --statement-id SecretsManager \
     --principal secretsmanager.amazonaws.com \
     --source-account {{123456789012}}
   ```

## Paso 3: configurar el acceso a la red
<a name="w2aac21c11c25c17"></a>

Para obtener más información, consulte [Acceso a la red para la función AWS Lambda de rotación](rotation-function-network-access.md).

## Paso 4: configurar el secreto para la rotación
<a name="w2aac21c11c25c19"></a>

Para activar la rotación automática de su secreto, llame a [https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/rotate-secret.html](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/rotate-secret.html). Puede establecer una programación de rotación con una expresión de programación `cron()` o `rate()` y definir una duración del periodo de rotación. Para obtener más información, consulte [Programación de rotación](rotate-secrets_schedule.md).

```
aws secretsmanager rotate-secret \
    --secret-id MySecret \
    --rotation-lambda-arn arn:aws:lambda:{{{{aws-region}}}}:{{123456789012}}:function:{{my-rotation-function}} \
    --rotation-rules "{\"ScheduleExpression\": \"{{cron(0 16 1,15 * ? *)}}\", \"Duration\": \"{{2h}}\"}"
```

## Siguientes pasos
<a name="w2aac21c11c25c21"></a>

Consulte [Solucionar problemas de rotación AWS Secrets Manager](troubleshoot_rotation.md).