

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.

# AWS SAM CLI
<a name="using-sam-cli"></a>

AWS Serverless Application Model La interfaz de línea de comandos (AWS SAMCLI) es una herramienta de línea de comandos para el desarrollo y las pruebas locales de aplicaciones sin servidor. AWS SAMCLILe permite crear, transformar, implementar, depurar, empaquetar, inicializar y sincronizar sus aplicaciones sin servidor de forma local antes de implementarlas en la nube.

La CLI de AWS SAM funciona con aplicaciones sin servidor que se definen mediante diferentes marcos y herramientas de infraestructura como código (IaC), con distintos niveles de soporte:
+ **AWS SAM plantillas**: proporciona soporte nativo con todo el conjunto de funciones, incluidas las capacidades locales de prueba, depuración, empaquetado e implementación.
+ **AWS Aplicaciones CDK**: admite pruebas locales de funciones Lambda después de sintetizar la aplicación CDK en plantillas mediante AWS el comando cdk CloudFormation synth.
+ **CloudFormation plantillas**: ofrece compatibilidad directa porque AWS SAM se extiende CloudFormation y admite los recursos sin servidor que se definen en las plantillas estándar. CloudFormation 
+ **Aplicaciones Terraform**: brindan soporte limitado para la creación y las pruebas locales de funciones de Lambda. Requiere que genere artefactos de AWS SAM plantilla que representen las funciones Lambda definidas por Terraform.

Para obtener el soporte de funciones más completo y una experiencia de desarrollador optimizada, recomendamos usar plantillas nativas. AWS SAM 

**Topics**
+ [Cómo se documentan los comandos CLI de AWS SAM.](#using-sam-cli-documentation)
+ [Configuración de la AWS SAM de CLI](using-sam-cli-configure.md)
+ [Comandos principales de la CLI de AWS SAM](using-sam-cli-corecommands.md)
+ [Pruebas locales con la CLI de AWS SAM](using-sam-cli-local-testing.md)

## Cómo se documentan los comandos CLI de AWS SAM.
<a name="using-sam-cli-documentation"></a>

Los comandos CLI de AWS SAM se documentan con el siguiente formato:
+ **Solicitud**: la solicitud de Linux está documentada de forma predeterminada y se muestra como (`$ `). En los comandos específicos de Windows, (`> `) se utiliza como símbolo del sistema. No incluya el símbolo al escribir comandos.
+ **Directorio**: cuando los comandos se deben ejecutar desde un directorio específico, el nombre del directorio se muestra antes del símbolo de comando.
+ **Entrada del usuario**: el texto del comando que se debe ingresar en la línea de comando se formatea como **user input**.
+ **Texto reemplazable: el** texto variable, como los nombres de los archivos y los parámetros, tiene el formato siguiente. *replaceable text* En comandos de varias líneas o comandos en los que se requiere una entrada específica desde el teclado, la entrada de teclado también se puede mostrar como texto reemplazable. Por ejemplo, *ENTER*.
+ **Salida**: la salida devuelta como respuesta al comando tiene el formato de `computer output`.

El siguiente comando `sam deploy` y la salida son un ejemplo:

```
$ sam deploy --guided --template template.yaml

Configuring SAM deploy
======================

    Looking for config file [samconfig.toml] :  Found
    Reading default arguments  :  Success

    Setting default arguments for 'sam deploy'
    =========================================
    Stack Name [sam-app]: ENTER
    AWS Region [us-west-2]: ENTER
    #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
    Confirm changes before deploy [y/N]: ENTER
    #SAM needs permission to be able to create roles to connect to the resources in your template
    Allow SAM CLI IAM role creation [Y/n]: ENTER
    #Preserves the state of previously provisioned resources when an operation fails
    Disable rollback [y/N]: ENTER
    HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y
    Save arguments to configuration file [Y/n]: ENTER
    SAM configuration file [samconfig.toml]: ENTER
    SAM configuration environment [default]: ENTER
```

1. `sam deploy --guided --template template.yaml` es el comando que se introduce en la línea de comandos.

1. **sam deploy --guided --template** debes proporcionarse tal cual.

1. *template.yaml*se puede reemplazar por el nombre de archivo específico.

1. La salida comienza en `Configuring SAM deploy`.

1. En el resultado, *y* indique *ENTER* los valores reemplazables que proporcione.

# Configuración de la AWS SAM de CLI
<a name="using-sam-cli-configure"></a>

Una de las ventajas AWS SAM es que optimiza el tiempo del desarrollador al eliminar las tareas repetitivas. AWS SAMCLIincluye un archivo de configuración denominado así`samconfig`. De forma predeterminada, no AWS SAMCLI es necesaria ninguna configuración, pero puede actualizar el archivo de configuración para poder ejecutar comandos con menos parámetros y, en su lugar, hacer referencia AWS SAM a los parámetros personalizados en el archivo de configuración. En los ejemplos de la siguiente tabla se muestra cómo se pueden optimizar los comandos:


| Original | Optimización con `samconfig` | 
| --- | --- | 
| **sam build --cached --parallel --use-containers** | **sam build** | 
| **sam local invoke --env-vars locals.json** | **sam local invoke** | 
| **sam local start-api --env-vars locals.json --warm-containers EAGER** | **sam local start-api** | 

La CLI de AWS SAM proporciona un conjunto de comandos para ayudar a los desarrolladores a crear, desarrollar e implementar aplicaciones sin servidor. Cada uno de estos comandos se puede configurar con indicadores opcionales según las preferencias de la aplicación y del desarrollador. Para obtener más información, consulte el [AWS SAMCLIcontenido de GitHub](https://github.com/aws/aws-sam-cli)

En los temas de esta sección se indica cómo crear su [Archivo de configuración de la CLI de AWS SAM](serverless-sam-cli-config.md) y personalizar su configuración predeterminada para optimizar el tiempo de desarrollo de su aplicación sin servidor.

**Topics**
+ [Cómo crear el archivo de configuración (el archivo `samconfig`)](#using-sam-cli-configure-create)
+ [Configurar los ajustes del proyecto](#using-sam-cli-configure-project)
+ [Configura las credenciales y los ajustes básicos](#using-sam-cli-configure-basic)

## Cómo crear el archivo de configuración (el archivo `samconfig`)
<a name="using-sam-cli-configure-create"></a>

El archivo AWS SAMCLI de configuración (nombre de archivo`samconfig`) es un archivo de texto que normalmente utiliza la estructura TOML, pero también puede estar en YAML. Cuando se utiliza una plantilla de inicio AWS rápido, este archivo se crea al ejecutar el **sam init** comando. Puede actualizar este archivo al implementar una aplicación mediante el comando **sam deploy -\$1-guided**.

Una vez completada la implementación, el archivo `samconfig` contiene un perfil con el nombre `default` si utilizó los valores predeterminados. Al volver a ejecutar el **deploy** comando, AWS SAM se aplican las opciones de configuración almacenadas en este perfil.

La ventaja del `samconfig` archivo es que AWS SAM almacena los ajustes de configuración de cualquier otro comando disponible además del comando deploy. Además de estos valores creados en una nueva implementación, hay una serie de atributos que puedes configurar en el `samconfig` archivo para simplificar otros aspectos del flujo de trabajo del desarrollador AWS SAMCLI.

## Configurar los ajustes del proyecto
<a name="using-sam-cli-configure-project"></a>

Puede especificar los ajustes específicos del proyecto, como los valores de los parámetros de AWS SAMCLI comando, en un archivo de configuración para usarlo con el. AWS SAMCLI Para obtener más información acerca de este archivo de configuración, consulta [Archivo de configuración de la CLI de AWS SAM](serverless-sam-cli-config.md).

### Uso de archivos de configuración
<a name="using-sam-cli-configure-project-using"></a>

Los archivos de configuración se estructuran por entorno, comando y valor de parámetro. Para obtener más información, consulta [Fundamentos de los archivos de configuración](serverless-sam-cli-config.md#serverless-sam-cli-config-basics).

**Para configurar un nuevo entorno**

1. Especifica el entorno que se va a utilizar en el archivo de configuración de .

   El siguiente es un ejemplo de cómo especificar un entorno `prod` nuevo:

------
#### [ TOML ]

   ```
   [prod.global.parameters]
   ```

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

   ```
   prod:
     global:
       parameters:
   ```

------

1. Especifica los valores de los parámetros como pares clave-valor en la sección de parámetros del archivo de configuración.

   A continuación, se muestra un ejemplo de cómo especificar el nombre de la pila de la aplicación para el entorno `prod`.

------
#### [ TOML ]

   ```
   [prod.global.parameters]
   stack_name = "prod-app"
   ```

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

   ```
   prod:
     global:
       parameters:
         stack_name: prod-app
   ```

------

1. Utiliza la opción `--config-env` para especificar el entorno que se va a utilizar.

   A continuación, se muestra un ejemplo:

   ```
   $ sam deploy --config-env "prod"
   ```

**Para configurar los valores de parámetros**

1. Especifica el comando de la CLI de AWS SAM para el que desea configurar los valores de los parámetros. Para configurar los valores de los parámetros de todos los comandos de la CLI de AWS SAM, utiliza el identificador `global`.

   El siguiente es un ejemplo de cómo especificar los valores de los parámetros para el comando `sam deploy` del entorno `default`:

------
#### [ TOML ]

   ```
   [default.deploy.parameters]
   confirm_changeset = true
   ```

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

   ```
   default:
     deploy:
       parameters:
         confirm_changeset: true
   ```

------

   A continuación, se muestra un ejemplo de cómo especificar los valores de los parámetros para todos los comandos de la CLI de AWS SAM del entorno `default`:

------
#### [ TOML ]

   ```
   [default.global.parameters]
   stack_name = "sam-app"
   ```

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

   ```
   default:
     global:
       parameters:
         stack_name: sam-app
   ```

------

1. También puede especificar los valores de los parámetros y modificar el archivo de configuración mediante el flujo interactivo de la CLI de AWS SAM. 

   A continuación, se muestra un ejemplo de flujo interactivo con `sam deploy --guided`.

   ```
   $ sam deploy --guided
   
   Configuring SAM deploy
   ======================
   
       Looking for config file [samconfig.toml] :  Found
       Reading default arguments  :  Success
   
       Setting default arguments for 'sam deploy'
       =========================================
       Stack Name [sam-app]: ENTER
       AWS Region [us-west-2]: ENTER
       #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
       Confirm changes before deploy [Y/n]: n
       #SAM needs permission to be able to create roles to connect to the resources in your template
       Allow SAM CLI IAM role creation [Y/n]: ENTER
       #Preserves the state of previously provisioned resources when an operation fails
       Disable rollback [y/N]: ENTER
       HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y
       Save arguments to configuration file [Y/n]: ENTER
       SAM configuration file [samconfig.toml]: ENTER
       SAM configuration environment [default]: ENTER
   ```

Para obtener más información, consulta [Crear y modificar archivos de configuración](serverless-sam-cli-config.md#serverless-sam-cli-config-using).

### Ejemplos
<a name="using-sam-cli-configure-project-examples"></a>

#### Ejemplo básico TOML
<a name="using-sam-cli-configure-project-examples-toml"></a>

A continuación, se muestra un ejemplo de un archivo de configuración de `samconfig.toml`:

```
...
version = 0.1

[default]
[default.global]
[default.global.parameters]
stack_name = "sam-app"

[default.build.parameters]
cached = true
parallel = true

[default.deploy.parameters]
capabilities = "CAPABILITY_IAM"
confirm_changeset = true
resolve_s3 = true

[default.sync.parameters]
watch = true

[default.local_start_api.parameters]
warm_containers = "EAGER"

[prod]
[prod.sync]
[prod.sync.parameters]
watch = false
```

#### Ejemplo básico YAML
<a name="using-sam-cli-configure-project-examples-yaml"></a>

A continuación, se muestra un ejemplo de un archivo de configuración de `samconfig.yaml`:

```
version 0.1
default:
  global:
    parameters:
      stack_name: sam-app
  build:
    parameters:
      cached: true
      parallel: true
  deploy:
    parameters:
      capabilities: CAPABILITY_IAM
      confirm_changeset: true
      resolve_s3: true
  sync:
    parameters:
      watch: true
  local_start_api:
    parameters:
      warm_containers: EAGER
prod:
  sync:
    parameters:
      watch: false
```

## Configura las credenciales y los ajustes básicos
<a name="using-sam-cli-configure-basic"></a>

Utilice el AWS Command Line Interface (AWS CLI) para configurar los ajustes básicos, como AWS las credenciales, el nombre de la región por defecto y el formato de salida por defecto. Una vez configurados, puede usar estos ajustes con la CLI de AWS SAM. Para obtener más información, consulta lo siguiente en la *Guía del usuario de AWS Command Line Interface *:
+ [Fundamentos de configuración](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)
+ [Opciones de los archivos de configuración y credenciales](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
+ [Perfiles con nombre para AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
+ [Uso de un perfil con nombre habilitado para IAM Identity Center](https://docs.aws.amazon.com/cli/latest/userguide/sso-using-profile.html)

Para obtener instrucciones de Quick Setup, consulta [Paso 5: utilícelo AWS CLI para configurar AWS las credenciales](prerequisites.md#prerequisites-configure-credentials).

# Comandos principales de la CLI de AWS SAM
<a name="using-sam-cli-corecommands"></a>

La CLI de AWS SAM tiene algunos comandos básicos que puede utilizar para crear, compilar, probar, implementar y sincronizar su aplicación sin servidor. En la siguiente tabla se enumeran estos comandos y se proporcionan enlaces con más información sobre cada uno de ellos.

Para obtener una lista completa de los comandos de la CLI de AWS SAM, consulte [Referencia de los comandos AWS SAM CLI](serverless-sam-cli-command-reference.md).


| Comando | ¿Qué hace? | Temas relacionados | 
| --- | --- | --- | 
| **sam build** | Prepara una aplicación para los pasos posteriores del flujo de trabajo del desarrollador, como las pruebas locales o la implementación AWS en la nube. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam deploy** | Implementa una aplicación en la AWS nube mediante CloudFormation. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam init** | Proporciona opciones para inicializar y crear una nueva aplicación sin servidor. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam local** | Proporciona los subcomandos para probar las aplicaciones sin servidor de forma local. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam remote invoke** | Proporciona una forma de interactuar con AWS los recursos compatibles en la AWS nube. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam remote test-event** | Proporciona una forma de acceder a los eventos de prueba que se pueden compartir para las funciones de AWS Lambda y gestionarlos. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 
| **sam sync** | Ofrece opciones para sincronizar rápidamente los cambios en las aplicaciones locales con la AWS nube. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/serverless-application-model/latest/developerguide/using-sam-cli-corecommands.html)  | 

# Pruebas locales con la CLI de AWS SAM
<a name="using-sam-cli-local-testing"></a>

La CLI de AWS SAM permite probar las aplicaciones sin servidor de forma local en diferentes herramientas de infraestructura como código (IaC). Esta guía explica cómo utilizar la CLI de AWS SAM para realizar pruebas locales con varios marcos de IaC.

Los beneficios principlaes de utilizar la CLI de AWS SAM para las pruebas locales son:
+ **Desarrollo rápido**: pruebe los cambios de código sin implementarlos en AWS
+ **Rentabilidad**: desarrolle y pruebe sin incurrir en gastos AWS 
+ **Capacidad sin conexión**: trabaje en sus aplicaciones sin conexión a Internet
+ **Depuración simplificada**: recorra el código de la función de Lambda de forma local mediante un depurador
+ **Pruebas realistas**: pruebe sus aplicaciones mediante la emulación local de servicios AWS 

## Pruebe las AWS SAM aplicaciones de forma local
<a name="using-sam-cli-local-testing-sam"></a>

Para obtener información sobre cómo probar las aplicaciones definidas mediante AWS SAM plantillas, consulte [Probar y depurar aplicaciones sin servidor](serverless-test-and-debug.md) en esta guía.

## Pruebe CloudFormation las plantillas de forma local
<a name="using-sam-cli-local-testing-cfn"></a>

Para utilizar las funciones AWS SAMCLI de prueba locales de la CloudFormation aplicación, añade la AWS SAM transformación a tu CloudFormation plantilla. Para obtener más información, consulte la [anatomía de la plantilla de AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-template-anatomy.html) para realizar lo siguiente:
+ Añadir una AWS SAM transformación a las CloudFormation plantillas
+ Compreder la compatibilidad de las plantillas
+ Explorar la sintaxis de los recursos sin servidor

## Pruebe las aplicaciones de AWS CDK localmente
<a name="using-sam-cli-local-testing-cdk"></a>

Puede usarlo AWS SAMCLI para probar las aplicaciones de AWS CDK de forma local después de sintetizar la aplicación de AWS CDK en CloudFormation plantillas mediante el comando cdk synth.

Para obtener más información, consulte [Pruebe y cree aplicaciones de CDK de forma local con la guía para desarrolladores de AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html). AWS SAMCLI AWS Esto incluye:
+ [Introducción a las pruebas locales](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html#testing-locally-getting-started)
+ [Prueba local de aplicaciones de AWS CDK con AWS SAM](https://docs.aws.amazon.com/cdk/v2/guide/testing-locally.html#testing-locally-sam)

## Probar las aplicaciones de Terraform de forma local
<a name="using-sam-cli-local-testing-terraform"></a>

La CLI de AWS SAM es compatible con los proyectos de Terraform y Terraform Cloud. Puede utilizarla para realizar depuraciones y pruebas locales de: funciones y capas de Lambda y de HTTP y REST de Amazon API Gateway. APIs

Para configurar el entorno y obtener información sobre todas las funciones disponibles, consulte [Compatibilidad con Terraform](terraform-support.md) en esta guía. Esto incluye:
+ [Introducción a compatibilidad de Terraform para la CLI de AWS SAM](gs-terraform-support.md)
+ [Uso de la AWS SAM de CLI con Terraform para la depuración y las pruebas locales](using-samcli-terraform.md)