

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.

# Archivos externos de referencia en Infrastructure Composer
<a name="using-composer-external-files"></a>

Puede usar archivos externos con sus plantillas AWS Serverless Application Model (AWS SAM) para reutilizar el código repetido y organizar sus proyectos. Por ejemplo, puede tener varios recursos de la API REST de Amazon API Gateway descritos en una OpenAPI especificación. En lugar de replicar el código de OpenAPI especificación en la plantilla, puede crear un archivo externo y hacer referencia a él para cada uno de sus recursos.

AWS Infrastructure Composer admite los siguientes casos de uso de archivos externos:
+ REST APIRecursos de API Gateway definidos por archivos de OpenAPI especificaciones externos.
+ AWS Step Functions recursos de máquinas de estado definidos por archivos de definición de máquinas de estado externos.

Para obtener más información sobre la configuración de archivos externos para los recursos compatibles, consulte lo siguiente:
+ `[ DefinitionBody](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-api.html#sam-api-definitionbody)` para `AWS::Serverless::Api`.
+ `[ DefinitionUri](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html#sam-statemachine-definitionuri)` para `AWS::Serverless::StateMachine`.

**nota**  
Para hacer referencia a archivos externos con Infrastructure Composer desde la consola de Infrastructure Composer, debe usar Infrastructure Composer en el modo de **sincronización local**. Para obtener más información, consulte [Sincronice y guarde el proyecto de forma local en la consola de Infrastructure Composer](using-composer-project-local-sync.md).

**Topics**
+ [

# Prácticas recomendadas para los archivos de referencia externos de Infrastructure Composer
](using-composer-external-files-best-practices.md)
+ [

# Cree una referencia de archivo externo en Infrastructure Composer
](using-composer-external-files-new.md)
+ [

# Cargue un proyecto con una referencia de archivo externa en Infrastructure Composer
](using-composer-external-files-load.md)
+ [

# Cree una aplicación que haga referencia a un archivo externo en Infrastructure Composer
](using-composer-external-files-examples-example3.md)
+ [

# Consulte un archivo externo de OpenAPI especificaciones con Infrastructure Composer
](using-composer-external-files-examples-example1.md)

# Prácticas recomendadas para los archivos de referencia externos de Infrastructure Composer
<a name="using-composer-external-files-best-practices"></a>

## Utilice Infrastructure Composer con un IDE local
<a name="using-composer-external-files-best-practices-ide"></a>

Cuando usa Infrastructure Composer con un IDE **local en modo de sincronización local**, puede usar su IDE local para ver y modificar archivos externos. El contenido de los archivos externos compatibles a los que se hace referencia en la plantilla se actualizará automáticamente en el lienzo de Infrastructure Composer. Para obtener más información, consulte [Conecte la consola de Infrastructure Composer con su IDE local](other-services-ide.md).

## Mantenga los archivos externos en el directorio principal del proyecto
<a name="using-composer-external-files-best-practices-directory"></a>

Puedes crear subdirectorios dentro del directorio principal de tu proyecto para organizar los archivos externos. Infrastructure Composer no puede acceder a los archivos externos que están almacenados en un directorio fuera del directorio principal del proyecto.

## Implemente la aplicación mediante el AWS SAMCLI
<a name="using-composer-external-files-best-practices-sam"></a>

Al implementar la aplicación en Nube de AWS, los archivos externos locales deben cargarse primero en una ubicación accesible, como Amazon Simple Storage Service (Amazon S3). Puede utilizar la AWS SAM CLI para facilitar este proceso automáticamente. Para obtener más información, consulte [Cargar archivos locales durante la implementación en](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/deploy-upload-local-files.html) la *Guía para AWS Serverless Application Model desarrolladores*.

# Cree una referencia de archivo externo en Infrastructure Composer
<a name="using-composer-external-files-new"></a>

Puede crear una referencia a un archivo externo desde el panel de **propiedades del recurso** de los recursos compatibles.

**Para crear una referencia a un archivo externo**

1. En una tarjeta de componentes mejorada de **API Gateway** o **Step Functions**, seleccione **Detalles** para que aparezca el panel **de propiedades del recurso**.

1. Busque y seleccione la opción **Usar archivo externo**.

1. Especifique la ruta relativa al archivo externo. Esta es la ruta del `template.yaml` archivo al archivo externo.

   Por ejemplo, para hacer referencia al archivo `api-spec.yaml` externo desde la siguiente estructura del proyecto, especifique `./api-spec.yaml` la ruta relativa.

   ```
   demo
   ├── api-spec.yaml
   ├── src
   │ └── Function
   │ ├── index.js
   │ └── package.json
   └── template.yaml
   ```
**nota**  
Si el archivo externo y la ruta especificada no existen, Infrastructure Composer los creará.

1. **Guarde** los cambios.

# Cargue un proyecto con una referencia de archivo externa en Infrastructure Composer
<a name="using-composer-external-files-load"></a>

Siga los pasos que se indican en esta página para cargar un proyecto de Infrastructure Composer con una referencia de archivo externa.

**Desde la consola de Infrastructure Composer**

1. Realice los pasos que se indican en [Importe una plantilla de proyecto existente en la consola de Infrastructure Composer](using-composer-project-import-template.md).

1. Confirme que Infrastructure Composer le pida que se conecte a la carpeta raíz del proyecto 

Si su navegador admite la API de acceso al sistema de archivos, Infrastructure Composer le pedirá que se conecte a la carpeta raíz del proyecto. Infrastructure Composer abrirá el proyecto en modo de **sincronización local** para admitir el archivo externo. Si el archivo externo al que se hace referencia no es compatible, recibirá un mensaje de error. Para obtener más información sobre los mensajes de error, consulte[Resolución de problemas](ref-troubleshooting.md). 

**Del kit de herramientas para VS Code**

1. Realice los pasos que se indican en [Acceda a Infrastructure Composer desde AWS Toolkit for Visual Studio Code](setting-up-composer-access-ide.md).

1. Abra la plantilla que desee ver en Infrastructure Composer.

Al acceder a Infrastructure Composer desde una plantilla, Infrastructure Composer detectará automáticamente el archivo externo. Si el archivo externo al que se hace referencia no es compatible, recibirá un mensaje de error. Para obtener más información sobre los mensajes de error, consulte[Resolución de problemas](ref-troubleshooting.md).

# Cree una aplicación que haga referencia a un archivo externo en Infrastructure Composer
<a name="using-composer-external-files-examples-example3"></a>

En este ejemplo, se utiliza AWS SAMCLI para crear una aplicación que haga referencia a un archivo externo para su definición de máquina de estados. A continuación, carga el proyecto en Infrastructure Composer con el archivo externo correctamente referenciado.

**Ejemplo**

1. En primer lugar, utilice el **sam init** comando AWS SAM CLI para inicializar una nueva aplicación denominada`demo`. Durante el flujo interactivo, seleccione la plantilla de inicio rápido del **flujo de trabajo de varios pasos**.

   ```
   $ sam init
   
   ...
   
   Which template source would you like to use?
           1 - AWS Quick Start Templates
           2 - Custom Template Location
   Choice: 1
   
   Choose an AWS Quick Start application template
           1 - Hello World Example
           2 - Multi-step workflow
           3 - Serverless API
           4 - Scheduled task
           ...
   Template: 2
   
   Which runtime would you like to use?
           1 - dotnet6
           2 - dotnetcore3.1
           ...
           15 - python3.7
           16 - python3.10
           17 - ruby2.7
   Runtime: 16
   
   Based on your selections, the only Package type available is Zip.
   We will proceed to selecting the Package type as Zip.
   
   Based on your selections, the only dependency manager available is pip.
   We will proceed copying the template using pip.
   
   Would you like to enable X-Ray tracing on the function(s) in your application?  [y/N]: ENTER
   
   Would you like to enable monitoring using CloudWatch Application Insights?
   For more info, please view https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html [y/N]: ENTER
   
   Project name [sam-app]: demo
   
       -----------------------
       Generating application:
       -----------------------
       Name: demo
       Runtime: python3.10
       Architectures: x86_64
       Dependency Manager: pip
       Application Template: step-functions-sample-app
       Output Directory: .
       Configuration file: demo/samconfig.toml
       
       Next steps can be found in the README file at demo/README.md
   
   ...
   ```

   Esta aplicación hace referencia a un archivo externo para la definición de la máquina de estados.

   ```
   ...
   Resources:
     StockTradingStateMachine:
       Type: AWS::Serverless::StateMachine
       Properties:
         DefinitionUri: statemachine/stock_trader.asl.json
   ...
   ```

   El archivo externo se encuentra en el `statemachine` subdirectorio de nuestra aplicación.

   ```
   demo
   ├── README.md
   ├── __init__.py
   ├── functions
   │   ├── __init__.py
   │   ├── stock_buyer
   │   ├── stock_checker
   │   └── stock_seller
   ├── samconfig.toml
   ├── statemachine
   │   └── stock_trader.asl.json
   ├── template.yaml
   └── tests
   ```

1. A continuación, cargue la aplicación en Infrastructure Composer desde la consola. En la página de **inicio** de Infrastructure Composer, seleccione **Cargar una CloudFormation plantilla**.

1. Seleccione nuestra carpeta de `demo` proyectos y deje que aparezca el mensaje para ver los archivos. Selecciona nuestro `template.yaml` archivo y selecciona **Crear**. Cuando se te pida, selecciona **Guardar cambios**.  
![\[Aparece la ventana Abrir carpeta de proyectos de Infrastructure Composer con nuestra carpeta de proyectos seleccionada y la opción Crear lista para seleccionarla.\]](http://docs.aws.amazon.com/es_es/infrastructure-composer/latest/dg/images/aac_use_ex_15.png)

Infrastructure Composer detecta automáticamente el archivo de definición de la máquina de estado externa y lo carga. Seleccione nuestro **StockTradingStateMachine**recurso y elija **Detalles** para mostrar el panel **de propiedades del recurso**. Aquí puede ver que Infrastructure Composer se ha conectado automáticamente a nuestro archivo de definición de máquina de estado externa.

![\[Se muestra la vista del lienzo de Infrastructure Composer con el panel de propiedades de recursos de API Gateway, que muestra la configuración del archivo de referencia externo.\]](http://docs.aws.amazon.com/es_es/infrastructure-composer/latest/dg/images/aac_use_ex_03.png)


Cualquier cambio realizado en el archivo de definición de la máquina de estados se reflejará automáticamente en Infrastructure Composer.

# Consulte un archivo externo de OpenAPI especificaciones con Infrastructure Composer
<a name="using-composer-external-files-examples-example1"></a>

En este ejemplo, se utiliza Infrastructure Composer desde la consola para hacer referencia a un archivo de OpenAPI especificaciones externo que define una API GatewayREST API.

En primer lugar, cree un proyecto nuevo desde la página de **inicio** de Infrastructure Composer.

A continuación, active la **sincronización local** seleccionando **Activar la sincronización local** en el **menú**. Crea una nueva carpeta con un nombre`demo`, deja que el mensaje vea los archivos y selecciona **Activar**. Cuando se te pida, selecciona **Guardar cambios**.

![\[Aparece la ventana de sincronización local Activate de Infrastructure Composer con una carpeta de proyecto de demostración seleccionada y el botón Activar listo para ser seleccionado.\]](http://docs.aws.amazon.com/es_es/infrastructure-composer/latest/dg/images/aac_use_ex_11.png)


A continuación, arrastra una tarjeta de Amazon API Gateway al lienzo. Seleccione **Detalles** para que aparezca el panel **de propiedades del recurso**.

![\[Un recurso de API Gateway en el lienzo con el panel de propiedades del recurso abierto.\]](http://docs.aws.amazon.com/es_es/infrastructure-composer/latest/dg/images/aac_use_ex_12.png)


En el panel **de propiedades del recurso**, configura lo siguiente y **guárdalo**.
+ Seleccione la opción **Usar un archivo externo para la definición de la API**.
+ Ingrese `./api-spec.yaml` como la **ruta relativa al archivo externo**

![\[Una ventana que muestra la casilla de verificación marcada en Usar un archivo externo para la definición de la API y una ruta relativa a un archivo externo definido.\]](http://docs.aws.amazon.com/es_es/infrastructure-composer/latest/dg/images/aac_use_ex_13.png)


Esto crea el siguiente directorio en nuestra máquina local:

```
demo
└── api-spec.yaml
```

Ahora, puede configurar el archivo externo en nuestra máquina local. Con nuestro IDE, abra lo que `api-spec.yaml` se encuentra en la carpeta de su proyecto. Sustituya su contenido por lo siguiente:

```
openapi: '3.0'
info: {}
paths:
  /:
    get:
      responses: {}
    post:
      x-amazon-apigateway-integration:
        credentials:
          Fn::GetAtt:
            - ApiQueuesendmessageRole
            - Arn
        httpMethod: POST
        type: aws
        uri:
          Fn::Sub: arn:${AWS::Partition}:apigateway:${AWS::Region}:sqs:path/${AWS::AccountId}/${Queue.QueueName}
        requestParameters:
          integration.request.header.Content-Type: '''application/x-www-form-urlencoded'''
        requestTemplates:
          application/json: Action=SendMessage&MessageBody={"data":$input.body}
        responses:
          default:
            statusCode: 200
      responses:
        '200':
          description: 200 response
```

En la vista de **plantillas** de Infrastructure Composer, puede ver que Infrastructure Composer ha actualizado automáticamente la plantilla para hacer referencia al archivo externo.

![\[La vista de plantilla de Infrastructure Composer muestra el código de infraestructura configurado para hacer referencia al archivo externo.\]](http://docs.aws.amazon.com/es_es/infrastructure-composer/latest/dg/images/aac_use_ex_07.png)
