

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.

# Publicación de la aplicación con la CLI de AWS SAM
<a name="serverless-sam-template-publishing-applications"></a>

Para que su AWS SAM aplicación esté disponible para que otros la encuentren y la desplieguen, puede utilizarla AWS SAMCLI para publicarla en AWS Serverless Application Repository. Para publicar su aplicación mediante el AWS SAMCLI, debe definirla mediante una AWS SAM plantilla. También debes haberla testeado localmente o en AWS la nube.

Sigue las instrucciones de este tema para crear una nueva aplicación, crear una nueva versión de una aplicación existente o actualizar los metadatos de una aplicación existente. (Lo que haga dependerá de si la aplicación ya existe en la AWS Serverless Application Repository aplicación y de si algún metadato de la aplicación está cambiando). Para obtener más información acerca de los metadatos de la aplicación, consulta [AWS SAM propiedades de la sección de metadatos de la plantilla](serverless-sam-template-publishing-applications-metadata-properties.md).

## Requisitos previos
<a name="serverless-sam-template-publishing-applications-prerequisites"></a>

Antes de publicar una aplicación en el AWS Serverless Application Repository mediante AWS SAMCLI, debe disponer de lo siguiente:
+ La (CLI) de AWS SAM debe estar instalada Para obtener más información, consulta [Instala la AWS SAM CLI](install-sam-cli.md). Para determinar si la CLI de AWS SAM está instalado, ejecuta el siguiente comando:

  ```
  sam --version
  ```
+ Una AWS SAM plantilla válida.
+ El código de su aplicación y las dependencias a las que hace referencia la AWS SAM plantilla.
+ Una versión semántica, necesaria solo para compartir la aplicación públicamente. Este valor puedes ser tan simple como 1.0.
+ Una URL que apunta al código fuente de la aplicación.
+ Un archivo `README.md`. En este archivo se describe cómo se utiliza la aplicación y cómo configurarla antes de implementarla en las cuentas de AWS .
+ Un archivo `LICENSE.txt`, necesario solo para compartir la aplicación públicamente.
+ Si tu aplicación contienes aplicaciones anidadas, debe haberlas publicado ya en AWS Serverless Application Repository.
+ Una política de bucket válida de Amazon Simple Storage Service (Amazon S3) que conceda al servicio permisos de lectura para los artefactos que cargue en Amazon S3 cuando empaquete tu aplicación. Para configurar esta política, haga lo siguiente:

  1. Abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

  1. Elige el nombre del bucket de Amazon S3 que utilizaste para empaquetar tu aplicación.

  1. Elige **Permisos**.

  1. En la pestaña **Permissions** (Permisos), en **Bucket policy** (Política de bucket), elige **Edit** (Editar).

  1. En la página **Editar política de bucket**, pegue la siguiente instrucción de **Política** en el editor de políticas. En la instrucción de política, asegúrese de usar el nombre del bucket en el elemento `Resource` y el ID de la cuenta AWS en el elemento `Condition`. La expresión del `Condition` elemento garantiza que AWS Serverless Application Repository tiene permiso para acceder únicamente a las aplicaciones de la AWS cuenta especificada. Para obtener más información acerca de las secciones dentro de una instrucción de política de IAM, consulta [Referencia de los elementos de la política de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) en la *Guía del usuario de IAM*.

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Effect": "Allow",
                 "Principal": {
                     "Service":  "serverlessrepo.amazonaws.com"
                 },
                 "Action": "s3:GetObject",
                 "Resource": "arn:aws:s3:::<your-bucket-name>/*",
                 "Condition" : {
                     "StringEquals": {
                         "aws:SourceAccount": "123456789012"
                     }
                 }
             }
         ]
     }
     ```

------

  1. Elige **Guardar cambios**.

## Publicación de una aplicación
<a name="serverless-sam-template-publishing-applications-new-app"></a>

### Paso 1: Añadir una `Metadata` sección a la AWS SAM plantilla
<a name="serverless-sam-template-publishing-applications-step1"></a>

Primero, agrega una `Metadata` sección a tu AWS SAM plantilla. Proporcione la información de la solicitud que se publicará en AWS Serverless Application Repository.

A continuación, se ofrece un ejemplo de sección `Metadata`:

```
Metadata:
  AWS::ServerlessRepo::Application:
    Name: my-app
    Description: hello world
    Author: user1
    SpdxLicenseId: Apache-2.0
    LicenseUrl: LICENSE.txt
    ReadmeUrl: README.md
    Labels: ['tests']
    HomePageUrl: https://github.com/user1/my-app-project
    SemanticVersion: 0.0.1
    SourceCodeUrl: https://github.com/user1/my-app-project

Resources:
  HelloWorldFunction:
    Type: AWS::Lambda::Function
      Properties:
        ...
        CodeUri: source-code1
        ...
```

Para obtener más información sobre la `Metadata` sección de la AWS SAM plantilla, consulte[AWS SAM propiedades de la sección de metadatos de la plantilla](serverless-sam-template-publishing-applications-metadata-properties.md).

### Paso 2: crear el paquete de la aplicación
<a name="serverless-sam-template-publishing-applications-step2"></a>

Ejecuta el siguiente comando en la CLI de AWS SAM, que carga los artefactos de la aplicación en Amazon S3 y genera un nuevo archivo de plantilla llamado `packaged.yaml`:

```
sam package --output-template-file packaged.yaml --s3-bucket <your-bucket-name>
```

En el siguiente paso, utiliza el archivo de plantilla `packaged.yaml` para publicar la aplicación en AWS Serverless Application Repository Este archivo es similar al archivo de plantilla original (`template.yaml`), pero tiene una diferencia claves: las propiedades `CodeUri`, `LicenseUrl`, y `ReadmeUrl` apuntan al bucket de Amazon S3 y a los objetos que contienesn los artefactos respectivos.

El siguiente fragmento de un ejemplo de archivo de plantilla `packaged.yaml` muestra la propiedad `CodeUri`:

```
MySampleFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: s3://bucketname/fbd77a3647a4f47a352fcObjectGUID

...
```

### Paso 3: publicar la aplicación
<a name="serverless-sam-template-publishing-applications-step3"></a>

Para publicar una versión privada de la AWS SAM aplicación en AWS Serverless Application Repository, ejecute el siguiente AWS SAMCLI comando:

```
sam publish --template packaged.yaml --region us-east-1
```

El resultado del comando `sam publish` incluye un enlace a tu aplicación en el AWS Serverless Application Repository. También puedes ir directamente a la [AWS Serverless Application Repository página de inicio](https://serverlessrepo.aws.amazon.com/applications) y buscar tu solicitud.

### Paso 4: compartir la aplicación (opcional)
<a name="serverless-sam-template-publishing-applications-step4"></a>

De forma predeterminada, la aplicación está configurada como privada, por lo que no es visible para otras cuentas de AWS . Para compartir tu aplicación con otras personas, debes hacerla pública o conceder permiso a una lista específica de AWS cuentas.

Para obtener información sobre cómo compartir su aplicación mediante el AWS CLI, consulte los [ejemplos de políticas AWS Serverless Application Repository basadas en recursos](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/security_iam_resource-based-policy-examples.html) en la Guía para *AWS Serverless Application Repository desarrolladores*. Para obtener información sobre cómo compartir tu aplicación mediante la Consola de administración de AWS, consulta [Compartir una aplicación](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-how-to-publish.html#share-application) en la *Guía para desarrolladores de AWS Serverless Application Repository *.

## Publicar una nueva versión de una aplicación existente
<a name="serverless-sam-template-publishing-applications-new-version"></a>

Después de publicar una aplicación en el AWS Serverless Application Repository, es posible que desee publicar una nueva versión de la misma. Por ejemplo, es posible que hayas cambiado el código de la función de Lambda o hayas agregado un nuevo componente a la arquitectura de la aplicación.

Para actualizar una aplicación que hayas publicado anteriormente, vuelves a publicarla siguiendo el mismo proceso detallado anteriormente. En la sección `Metadata` del archivo de plantilla de AWS SAM , proporciona el mismo nombre de aplicación con el que la publicó originalmente, pero incluya un valor `SemanticVersion` nuevo.

Por ejemplo, considera una aplicación publicada con el nombre `SampleApp` y una `SemanticVersion` de `1.0.0`. Para actualizar esa aplicación, la plantilla de AWS SAM debe tener el nombre de la aplicación `SampleApp` y una `SemanticVersion` de `1.0.1` (o cualquier otro nombre que no sea `1.0.0`).

## Temas adicionales
<a name="serverless-sam-template-publishing-applications-additional-topics"></a>
+ [AWS SAM propiedades de la sección de metadatos de la plantilla](serverless-sam-template-publishing-applications-metadata-properties.md)