

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como publicar a aplicação com a CLI do AWS SAM
<a name="serverless-sam-template-publishing-applications"></a>

Para disponibilizar seu AWS SAM aplicativo para que outras pessoas encontrem e implantem, você pode usar o AWS SAMCLI para publicá-lo no AWS Serverless Application Repository. Para publicar seu aplicativo usando o AWS SAMCLI, você deve defini-lo usando um AWS SAM modelo. Você também deve tê-lo testado localmente ou na nuvem do AWS .

Siga as instruções neste tópico para criar um novo aplicativo, criar uma nova versão de um aplicativo existente ou atualizar os metadados de um aplicativo existente. (O que você faz depende se o aplicativo já existe no AWS Serverless Application Repository e se algum metadado do aplicativo está mudando.) Para obter mais informações sobre metadados de aplicativo, consulte [AWS SAM propriedades da seção de metadados do modelo](serverless-sam-template-publishing-applications-metadata-properties.md).

## Pré-requisitos
<a name="serverless-sam-template-publishing-applications-prerequisites"></a>

Antes de publicar um aplicativo no AWS Serverless Application Repository usando o AWS SAMCLI, você deve ter o seguinte:
+ A AWS SAM(CLI) instalada. Para obter mais informações, consulte [Instale o AWS SAM CLI](install-sam-cli.md). Para determinar se o AWS SAM CLI está instalado, execute o seguinte comando:

  ```
  sam --version
  ```
+ Um AWS SAM modelo válido.
+ O código e as dependências do seu aplicativo aos quais o AWS SAM modelo faz referência.
+ Uma versão semântica, necessária apenas para compartilhar seu aplicativo publicamente. Esse valor pode ser tão simples quanto 1,0.
+ Um URL que aponta para o código-fonte do seu aplicativo.
+ Um arquivo `README.md`. Este arquivo deve descrever como os clientes podem usar seu aplicativo e como configurá-lo antes de implantá-lo em suas próprias contas AWS .
+ Um arquivo `LICENSE.txt` necessário apenas para compartilhar seu aplicativo publicamente.
+ Se seu aplicativo contiver algum aplicativo aninhado, você já deve tê-lo publicado no AWS Serverless Application Repository.
+ Uma política de bucket válida do Amazon Simple Storage Service (Amazon S3) que concede ao serviço permissões de leitura para artefatos que você carrega no Amazon S3 ao empacotar seu aplicativo. Para configurar esta política, faça o seguinte:

  1. Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

  1. Escolha o nome do bucket do Amazon S3 usado para empacotar seu aplicativo.

  1. Escolha **Permissions** (Permissões).

  1. Na guia **Permissions** (Permissões), escolha **Bucket policy** (Política de bucket), **Edit** (Editar).

  1. Na página **Editar política de bucket**, cole a seguinte declaração de política no editor de **políticas**. Na declaração de política, certifique-se de usar o nome do seu bucket no `Resource` elemento e o AWS ID da sua conta no `Condition` elemento. A expressão no `Condition` elemento garante que ele AWS Serverless Application Repository tenha permissão para acessar somente aplicativos da AWS conta especificada. Para obter mais informações sobre declarações de política, [consulte Referência de elementos de política JSON do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) no *Guia do usuário do 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. Escolha **Save changes (Salvar alterações)**.

## Publicar um novo aplicativo
<a name="serverless-sam-template-publishing-applications-new-app"></a>

### Etapa 1: adicionar uma `Metadata` seção ao AWS SAM modelo
<a name="serverless-sam-template-publishing-applications-step1"></a>

Primeiro, adicione uma `Metadata` seção ao seu AWS SAM modelo. Forneça as informações do aplicativo a serem publicadas no AWS Serverless Application Repository.

A seguir está uma seção de exemplo `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 obter mais informações sobre a `Metadata` seção do AWS SAM modelo, consulte[AWS SAM propriedades da seção de metadados do modelo](serverless-sam-template-publishing-applications-metadata-properties.md).

### Etapa 2: Empacotar o aplicativo
<a name="serverless-sam-template-publishing-applications-step2"></a>

Execute o seguinte AWS SAMCLI comando, que faz upload dos artefatos do aplicativo para o Amazon S3 e gera um novo arquivo de modelo chamado`packaged.yaml`:

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

Você usa o `packaged.yaml` arquivo de modelo na próxima etapa para publicar o aplicativo no arquivo AWS Serverless Application Repository. Esse arquivo é semelhante ao arquivo de modelo original (`template.yaml`), mas tem uma diferença importante: as propriedades `CodeUri`,`LicenseUrl`, e `ReadmeUrl` apontam para o bucket do Amazon S3 e os objetos que contêm os respectivos artefatos.

O seguinte trecho de um arquivo de modelo de exemplo `packaged.yaml` mostra a propriedade `CodeUri`:

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

...
```

### Etapa 3: publicar o aplicativo
<a name="serverless-sam-template-publishing-applications-step3"></a>

Para publicar uma versão privada do seu AWS SAM aplicativo no AWS Serverless Application Repository, execute o seguinte AWS SAMCLI comando:

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

A saída do comando `sam publish` inclui um link para seu aplicativo no AWS Serverless Application Repository. Você também pode ir diretamente para a [AWS Serverless Application Repository página de destino](https://serverlessrepo.aws.amazon.com/applications) e pesquisar seu aplicativo.

### Etapa 4: compartilhar o aplicativo (opcional)
<a name="serverless-sam-template-publishing-applications-step4"></a>

Por padrão, seu aplicativo está definido como privado, portanto, não é visível para outras contas da AWS . Para compartilhar seu aplicativo com outras pessoas, você deve torná-lo público ou conceder permissão para uma lista específica de AWS contas.

Para obter informações sobre como compartilhar seu aplicativo usando o AWS CLI, consulte [Exemplos de políticas AWS Serverless Application Repository baseadas em recursos](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/security_iam_resource-based-policy-examples.html) no Guia do *AWS Serverless Application Repository desenvolvedor*. Para obter informações sobre como compartilhar seu aplicativo usando o Console de gerenciamento da AWS, consulte [Compartilhamento de um aplicativo](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-how-to-publish.html#share-application) no *AWS Serverless Application Repository Guia do desenvolvedor*.

## Publicar uma nova versão de um aplicativo existente
<a name="serverless-sam-template-publishing-applications-new-version"></a>

Depois de publicar um aplicativo no AWS Serverless Application Repository, talvez você queira publicar uma nova versão dele. Por exemplo, você pode ter alterado o código da função do Lambda ou adicionado um novo componente à arquitetura do aplicativo.

Para atualizar um aplicativo que você publicou anteriormente, publique-o novamente usando o mesmo processo detalhado anteriormente. Na seção `Metadata` do arquivo de modelo AWS SAM , forneça o mesmo nome do aplicativo com o qual você o publicou originalmente, mas inclua um novo valor `SemanticVersion`.

Por exemplo, considere um aplicativo publicado com o nome de `SampleApp` e um `SemanticVersion` de `1.0.0`. Para atualizar esse aplicativo, o modelo AWS SAM deve ter o nome do aplicativo `SampleApp` e um `SemanticVersion` de `1.0.1` (ou qualquer outra coisa que não seja `1.0.0`).

## Tópicos adicionais
<a name="serverless-sam-template-publishing-applications-additional-topics"></a>
+ [AWS SAM propriedades da seção de metadados do modelo](serverless-sam-template-publishing-applications-metadata-properties.md)