

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Pubblicazione della tua applicazione con AWS SAMCLI
<a name="serverless-sam-template-publishing-applications"></a>

Per rendere la tua AWS SAM applicazione disponibile ad altri utenti affinché la trovino e la distribuiscano, puoi utilizzare il AWS SAMCLI per pubblicarla su. AWS Serverless Application Repository Per pubblicare l'applicazione utilizzando il AWS SAMCLI, è necessario definirla utilizzando un AWS SAM modello. È inoltre necessario averlo testato localmente o nel AWS cloud.

Segui le istruzioni in questo argomento per creare una nuova applicazione, creare una nuova versione di un'applicazione esistente o aggiornare i metadati di un'applicazione esistente. (Ciò che fate dipende dal fatto che l'applicazione esista già nell'applicazione e che AWS Serverless Application Repository i metadati dell'applicazione stiano cambiando). Per ulteriori informazioni sui metadati dell'applicazione, vedere. [AWS SAM proprietà della sezione Metadati del modello](serverless-sam-template-publishing-applications-metadata-properties.md)

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

Prima di pubblicare un'applicazione AWS Serverless Application Repository utilizzando il AWS SAMCLI, è necessario disporre di quanto segue:
+ L' AWS SAMCLIinstallato. Per ulteriori informazioni, consulta [Installa il AWS SAMCLI](install-sam-cli.md). Per determinare se AWS SAMCLI è installato, esegui il comando seguente:

  ```
  sam --version
  ```
+ Un AWS SAM modello valido.
+ Il codice dell'applicazione e le dipendenze a cui fa riferimento il AWS SAM modello.
+ Una versione semantica, necessaria solo per condividere pubblicamente l'applicazione. Questo valore può essere semplice come 1.0.
+ Un URL che rimanda al codice sorgente dell'applicazione.
+ Un file `README.md`. Questo file dovrebbe descrivere come i clienti possono utilizzare l'applicazione e come configurarla prima di distribuirla nei propri AWS account.
+ Un `LICENSE.txt` file, necessario solo per condividere pubblicamente l'applicazione.
+ Se l'applicazione contiene applicazioni annidate, è necessario averle già pubblicate AWS Serverless Application Repository su.
+ Una policy bucket valida di Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) che concede al servizio le autorizzazioni di lettura per gli artefatti che carichi su Amazon S3 quando crei il pacchetto dell'applicazione. Per configurare questa politica, procedi come segue:

  1. Apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

  1. Scegli il nome del bucket Amazon S3 che hai usato per impacchettare la tua applicazione.

  1. Seleziona **Autorizzazioni**.

  1. Nella sezione **Autorizzazioni**, alla voce **Policy del bucket**, scegliere **Modifica**.

  1. **Nella pagina **Modifica policy del bucket**, incolla la seguente dichiarazione di policy nell'editor Policy.** Nella dichiarazione sulla politica, assicurati di utilizzare il nome del bucket nell'`Resource`elemento e l'ID AWS dell'account nell'`Condition`elemento. L'espressione nell'`Condition`elemento garantisce che AWS Serverless Application Repository disponga del permesso di accedere solo alle applicazioni dell' AWS account specificato. Per ulteriori informazioni sulle dichiarazioni politiche, consulta il [riferimento agli elementi delle policy IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) nella *IAM User Guide*.

------
#### [ 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. Scegli **Save changes** (Salva modifiche).

## Pubblicazione di una nuova applicazione
<a name="serverless-sam-template-publishing-applications-new-app"></a>

### Fase 1: Aggiungere una `Metadata` sezione al AWS SAM modello
<a name="serverless-sam-template-publishing-applications-step1"></a>

Per prima cosa, aggiungi una `Metadata` sezione al tuo AWS SAM modello. Fornisci le informazioni sull'applicazione da pubblicare su AWS Serverless Application Repository.

Di seguito è riportata una `Metadata` sezione di esempio:

```
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
        ...
```

Per ulteriori informazioni sulla `Metadata` sezione del AWS SAM modello, vedere[AWS SAM proprietà della sezione Metadati del modello](serverless-sam-template-publishing-applications-metadata-properties.md).

### Fase 2: Package dell'applicazione
<a name="serverless-sam-template-publishing-applications-step2"></a>

Esegui il AWS SAMCLI comando seguente, che carica gli artefatti dell'applicazione su Amazon S3 e genera un nuovo file modello chiamato: `packaged.yaml`

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

Utilizzerai il file `packaged.yaml` modello nel passaggio successivo per pubblicare l'applicazione su. AWS Serverless Application Repository Questo file è simile al file modello originale (`template.yaml`), ma presenta una differenza fondamentale: le `ReadmeUrl` proprietà `CodeUri``LicenseUrl`, e puntano al bucket Amazon S3 e agli oggetti che contengono i rispettivi artefatti.

Il frammento riportato di seguito tratto dal file del modello di esempio `packaged.yaml` mostra la proprietà `CodeUri`:

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

...
```

### Fase 3: Pubblicare l'applicazione
<a name="serverless-sam-template-publishing-applications-step3"></a>

Per pubblicare una versione privata dell' AWS SAM applicazione su AWS Serverless Application Repository, esegui il seguente AWS SAMCLI comando:

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

L'output del `sam publish` comando include un collegamento all'applicazione su AWS Serverless Application Repository. Puoi anche andare direttamente alla [pagina di AWS Serverless Application Repository destinazione](https://serverlessrepo.aws.amazon.com/applications) e cercare la tua applicazione.

### Passaggio 4: Condividi l'applicazione (opzionale)
<a name="serverless-sam-template-publishing-applications-step4"></a>

Per impostazione predefinita, l'applicazione è impostata come privata, quindi non è visibile agli altri AWS account. Per condividere l'applicazione con altri, è necessario renderla pubblica o concedere l'autorizzazione a un elenco specifico di AWS account.

*Per informazioni sulla condivisione dell'applicazione utilizzando il AWS CLI, consulta [Esempi di policy AWS Serverless Application Repository basate sulle risorse](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/security_iam_resource-based-policy-examples.html) nella Guida per gli AWS Serverless Application Repository sviluppatori.* *Per informazioni sulla condivisione dell'applicazione tramite Console di gestione AWS, consulta [Sharing an Application](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-how-to-publish.html#share-application) nella Developer Guide.AWS Serverless Application Repository *

## Pubblicazione di una nuova versione di un'applicazione esistente
<a name="serverless-sam-template-publishing-applications-new-version"></a>

Dopo aver pubblicato un'applicazione su AWS Serverless Application Repository, potresti volerne pubblicare una nuova versione. Ad esempio, potresti aver modificato il codice della funzione Lambda o aggiunto un nuovo componente all'architettura dell'applicazione.

Per aggiornare un'applicazione che hai pubblicato in precedenza, pubblica nuovamente l'applicazione utilizzando la stessa procedura descritta in precedenza. Nella `Metadata` sezione del file AWS SAM modello, fornite lo stesso nome di applicazione con cui l'avete pubblicata originariamente, ma includete un nuovo `SemanticVersion` valore.

Ad esempio, considerate un'applicazione pubblicata con il nome `SampleApp` e un `SemanticVersion` di`1.0.0`. Per aggiornare tale applicazione, il AWS SAM modello deve avere il nome dell'applicazione `SampleApp` e un `SemanticVersion` di `1.0.1` (o qualcosa di diverso`1.0.0`).

## Argomenti aggiuntivi
<a name="serverless-sam-template-publishing-applications-additional-topics"></a>
+ [AWS SAM proprietà della sezione Metadati del modello](serverless-sam-template-publishing-applications-metadata-properties.md)

# AWS SAM proprietà della sezione Metadati del modello
<a name="serverless-sam-template-publishing-applications-metadata-properties"></a>

`AWS::ServerlessRepo::Application`è una chiave di metadati che potete utilizzare per specificare le informazioni sull'applicazione che desiderate pubblicare su. AWS Serverless Application Repository

**Nota**  
CloudFormation [le funzioni intrinseche](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html) non sono supportate dalla chiave dei `AWS::ServerlessRepo::Application` metadati.

## Properties
<a name="serverless-sam-template-publishing-applications-metadata-properties-table"></a>

Questa tabella fornisce informazioni sulle proprietà della `Metadata` sezione del modello. AWS SAM Questa sezione è necessaria per pubblicare applicazioni AWS Serverless Application Repository che utilizzano AWS SAMCLI.


****  

| Proprietà | Tipo | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | 
| Name | Stringa | TRUE |  Il nome dell'applicazione. Lunghezza minima = 1. Lunghezza massima = 140. Modello: `"[a-zA-Z0-9\\-]+";`  | 
| Description | Stringa | TRUE |  Descrizione dell'applicazione. Lunghezza minima = 1. Lunghezza massima = 256.  | 
| Author | Stringa | TRUE |  Il nome dell'autore che pubblica l'applicazione. Lunghezza minima = 1. Lunghezza massima = 127. Modello: `"^[a-z0-9](([a-z0-9]\|-(?!-))*[a-z0-9])?$";`  | 
| SpdxLicenseId | Stringa | FALSE | Un identificatore di licenza valido. Per visualizzare l'elenco degli identificatori di licenza validi, vedere l'[elenco delle licenze SPDX](https://spdx.org/licenses/) sul sito Web Software Package Data Exchange (SPDX). | 
| LicenseUrl | Stringa | FALSE |  Il riferimento a un file di licenza locale o a un collegamento Amazon S3 a un file di licenza che corrisponde al valore SPDXLicenseID dell'applicazione. Un file AWS SAM modello che non è stato impacchettato utilizzando il `sam package` comando può avere un riferimento a un file locale per questa proprietà. Tuttavia, affinché un'applicazione possa essere pubblicata utilizzando il `sam publish` comando, questa proprietà deve essere un riferimento a un bucket Amazon S3. Dimensione massima: 5 MB. È necessario fornire un valore per questa proprietà per rendere pubblica l'applicazione. Tieni presente che non puoi aggiornare questa proprietà dopo la pubblicazione dell'applicazione. Pertanto, per aggiungere una licenza a un'applicazione, è necessario prima eliminarla o pubblicare una nuova applicazione con un nome diverso.  | 
| ReadmeUrl | Stringa | FALSE |  Il riferimento a un file readme locale o un collegamento Amazon S3 al file readme che contiene una descrizione più dettagliata dell'applicazione e del suo funzionamento. Un file AWS SAM modello che non è stato impacchettato utilizzando il `sam package` comando può avere un riferimento a un file locale per questa proprietà. Tuttavia, per essere pubblicata utilizzando il `sam publish` comando, questa proprietà deve essere un riferimento a un bucket Amazon S3. Dimensione massima: 5 MB.  | 
| Labels | Stringa | FALSE |  Le etichette che migliorano la scoperta delle applicazioni nei risultati di ricerca. Lunghezza minima = 1. Lunghezza massima = 127. Numero massimo di etichette: 10. Modello: `"^[a-zA-Z0-9+\\-_:\\/@]+$";`  | 
| HomePageUrl | Stringa | FALSE | Un URL con ulteriori informazioni sull'applicazione, ad esempio la posizione del GitHub repository dell'applicazione.  | 
| SemanticVersion | Stringa | FALSE |  La versione semantica dell'applicazione. [Per le specifiche di Semantic Versioning, consultate il sito Web Semantic Versioning.](https://semver.org/) È necessario fornire un valore per questa proprietà per rendere pubblica l'applicazione.  | 
| SourceCodeUrl | Stringa | FALSE | Un collegamento a un repository pubblico per il codice sorgente dell'applicazione. | 

## Casi d’uso
<a name="serverless-sam-template-publishing-applications-metadata-properties-cases"></a>

Questa sezione elenca i casi d'uso per le applicazioni di pubblicazione, insieme alle `Metadata` proprietà elaborate per tale caso d'uso. Le proprietà che *non* sono elencate per un determinato caso d'uso vengono ignorate.
+ **Creazione di una nuova applicazione**: viene creata una nuova applicazione se non è presente alcuna applicazione AWS Serverless Application Repository con un nome corrispondente per un account.
  + `Name`
  + `SpdxLicenseId`
  + `LicenseUrl`
  + `Description`
  + `Author`
  + `ReadmeUrl`
  + `Labels`
  + `HomePageUrl`
  + `SourceCodeUrl`
  + `SemanticVersion`
  + Il contenuto del AWS SAM modello (ad esempio, eventuali fonti di eventi, risorse e codice funzione Lambda)

   
+ **Creazione di una versione** dell'applicazione: viene creata una versione dell'applicazione se esiste già un'applicazione AWS Serverless Application Repository con un nome corrispondente per un account *e* questa SemanticVersion *è* in corso di modifica.
  + `Description`
  + `Author`
  + `ReadmeUrl`
  + `Labels`
  + `HomePageUrl`
  + `SourceCodeUrl`
  + `SemanticVersion`
  + Il contenuto del AWS SAM modello (ad esempio, eventuali fonti di eventi, risorse e codice funzione Lambda)

   
+ **Aggiornamento di un'applicazione**: un'applicazione viene aggiornata se esiste già un'applicazione AWS Serverless Application Repository con un nome corrispondente per un account *e* *non SemanticVersion viene modificata*.
  + `Description`
  + `Author`
  + `ReadmeUrl`
  + `Labels`
  + `HomePageUrl`

## Esempio
<a name="serverless-sam-template-publishing-applications-metadata-properties-example"></a>

Di seguito è riportata una `Metadata` sezione di esempio:

```
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
```