Aggiungere componenti applicativi serverless - Marketplace AWS

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

Aggiungere componenti applicativi serverless

Puoi creare un prodotto che includa una o più Amazon Machine Images (AMI), fornito utilizzando uno o più AWS CloudFormation modelli, con componenti serverless incorporati nel prodotto. Ad esempio, crea un prodotto con un'AMI configurata come server di controllo e un'altra AMI configurata come server di lavoro, fornita come AWS CloudFormation stack. Il AWS CloudFormation modello utilizzato per creare lo stack può includere la definizione per impostare una AWS Lambda funzione attivata da un evento in uno dei server.

Quando utilizzi questo approccio per progettare il tuo prodotto, puoi semplificare l'architettura e facilitarne il lancio per i tuoi acquirenti. Questo approccio può anche semplificare l'aggiornamento del prodotto.

Per informazioni sulla creazione di AMI per il tuo prodotto, consultaProdotti basati su AMI. Per informazioni sulla compilazione dei AWS CloudFormation modelli per il prodotto, consultaDistribuzione basata su AMI tramite AWS CloudFormation.

Quando definisci un'applicazione serverless, utilizzi un modello AWS Serverless Application Model (AWS SAM) archiviato in. AWS Serverless Application Repository AWS SAM è un framework open source per la creazione di applicazioni serverless. Durante la distribuzione, AWS SAM trasforma ed espande la sintassi in sintassi. AWS Serverless Application Model AWS CloudFormation AWS Serverless Application Repository È un repository gestito per applicazioni serverless. Consente di archiviare e condividere applicazioni riutilizzabili in modo che gli acquirenti possano assemblare e implementare architetture serverless. Per creare e offrire questo tipo di prodotto, completa i seguenti passaggi:

Marketplace AWS esamina e convalida il prodotto prima della creazione dell'offerta. Se ci sono problemi che devi risolvere prima che l'offerta venga pubblicata, ti invieremo un messaggio e-mail.

Come parte dell'adempimento di un abbonamento, copiamo le AMI, le applicazioni serverless e i AWS CloudFormation modelli in un archivio di Marketplace AWS proprietà di ciascuno di essi. Regione AWS Quando un acquirente si abbona al tuo prodotto, gli concediamo l'accesso e lo informiamo anche quando aggiorni il software.

Creazione di un'applicazione serverless

Il primo passaggio consiste nel creare un pacchetto delle AWS Lambda funzioni utilizzate per creare l'applicazione serverless. L'applicazione è una combinazione di funzioni Lambda, sorgenti di eventi e altre risorse che collaborano per eseguire attività. Un'applicazione serverless può essere semplice come una funzione Lambda o contenere più funzioni con altre risorse, come API, database e mappature delle sorgenti degli eventi.

Usa il AWS SAM per definire un modello per la tua applicazione serverless. Per le descrizioni dei nomi e dei tipi di proprietà, vedi AWS::Serverless::Applicationin AWS Labs on. GitHub Di seguito è riportato un esempio di AWS SAM modello con una sola funzione Lambda e un ruolo AWS Identity and Access Management (IAM).

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An example of SAM template with Lambda function and IAM role Resources: SampleFunction: Type: AWS::Serverless::Function Properties: Handler: 'com.sampleproject.SampleHandler::handleRequest' Runtime: java8 CodeUri: 's3://DOC-EXAMPLE-BUCKET/2EXAMPLE-1234-4b12-ac37-515EXAMPLEe5-lambda.zip' Description: Sample Lambda function Timeout: 120 MemorySize: 1024 Role: Fn::GetAtt: [SampleFunctionRole, Arn] # Role to execute the Lambda function SampleFunctionRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Statement: - Effect: "Allow" Principal: Service: - "lambda.amazonaws.com" Action: "sts:AssumeRole" ManagedPolicyArns: - "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" Policies: - PolicyName: SFNXDeployWorkflowDefinitionPolicy PolicyDocument: Statement: - Effect: "Allow" Action: - "s3:Get*" Resource: "*" RoleName: "SampleFunctionRole"

Pubblica la tua applicazione nel repository

Per pubblicare un'applicazione, caricare innanzi tutto il suo codice. Archivia i tuoi artefatti di codice (ad esempio funzioni Lambda, script, file di configurazione) in un bucket Amazon S3 di proprietà del tuo account. Quando carichi l'applicazione, questa è inizialmente impostata come privata, il che significa che è disponibile solo per chi l'ha creata. Account AWS Devi creare una policy IAM che conceda AWS Serverless Application Repository le autorizzazioni per accedere agli artefatti che hai caricato.

Per pubblicare la tua applicazione serverless nel repository di applicazioni serverless
  1. Apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Scegli il bucket Amazon S3 che hai usato per impacchettare la tua applicazione.

  3. Scegli la scheda Autorizzazioni.

  4. Scegli Bucket Policy (Policy del bucket).

  5. Copia e incolla il seguente esempio di dichiarazione politica.

    Nota

    L'istruzione politica di esempio produrrà un errore fino a quando i valori di aws:SourceAccount e Resource non verranno aggiornati nei passaggi seguenti.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "serverlessrepo.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition" : { "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }
    1. Sostituisci DOC-EXAMPLE-BUCKET nel valore della Resource proprietà con il nome del bucket.

    2. Sostituisci 123456789012 nell'elemento con il tuo ID. Condition Account AWS L'Conditionelemento garantisce che AWS Serverless Application Repository solo l'utente disponga del permesso di accedere alle applicazioni specificate. Account AWS

  6. Selezionare Salva.

  7. Apri la AWS Serverless Application Repository console all'indirizzohttps://console.aws.amazon.com/serverlessrepo.

  8. Nella pagina Le mie applicazioni, scegli Pubblica applicazione.

  9. Compila i campi obbligatori e tutti i campi facoltativi, a seconda dei casi. I campi obbligatori sono:

    • Application name (Nome applicazione)

    • Autore

    • Descrizione

    • URL del codice sorgente

    • Modello SAM

  10. Scegli Pubblica applicazione.

Per pubblicare le versioni successive dell'applicazione
  1. Apri la AWS Serverless Application Repository console all'indirizzohttps://console.aws.amazon.com/serverlessrepo.

  2. Nel riquadro di navigazione, da Le mie applicazioni, scegli l'applicazione.

  3. Selezionare Publish new version (Pubblica nuova versione).

Per ulteriori informazioni, consulta Pubblicazione di applicazioni serverless tramite la AWS SAM CLI.

Create il modello CloudFormation

Per creare i CloudFormation modelli, è necessario soddisfare i prerequisiti del modello e fornire i parametri di input e sicurezza richiesti. Per ulteriori informazioni, consulta Anatomia del modello nella Guida per l'AWS CloudFormation utente.

Nel tuo CloudFormation modello, puoi fare riferimento alla tua applicazione serverless e alla tua AMI. È inoltre possibile utilizzare CloudFormation modelli nidificati e fare riferimento ad applicazioni serverless sia nel modello radice che nei modelli nidificati. Per fare riferimento all'applicazione serverless, si utilizza il modello. AWS SAM È possibile generare automaticamente il AWS SAM modello per l'applicazione da. AWS Serverless Application Repository Di seguito è riportato un modello di esempio.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An example root template for a SAR application Resources: SampleSARApplication: Type: AWS::Serverless::Application Properties: Location: ApplicationId: arn:aws:serverlessrepo:us-east-1:1234567890:applications/TestApplication SemanticVersion: 1.0.0 SampleEC2Instance: Type: AWS::EC2::Instance Properties: ImageId: "ami-79fd7eee" KeyName: "testkey" BlockDeviceMappings: - DeviceName: "/dev/sdm" Ebs: VolumeType: "io1" Iops: "200" DeleteOnTermination: "false" VolumeSize: "20" - DeviceName: "/dev/sdk" NoDevice: {}

Il AWS SAM modello contiene i seguenti elementi:

  • ApplicationID— Amazon Resource Name (ARN) dell'applicazione. Queste informazioni si trovano nella sezione Le mie applicazioni di AWS Serverless Application Repository.

  • SemanticVersion— La versione della tua applicazione serverless. Puoi trovarla nella sezione Le mie applicazioni di AWS Serverless Application Repository.

  • Parameter(opzionale) — Parametri dell'applicazione.

Nota

Per ApplicationID eSemanticVersion, le funzioni intrinseche non sono supportate. È necessario codificare tali stringhe. ApplicationIDViene aggiornato quando viene clonato da. Marketplace AWS

Se hai intenzione di fare riferimento ai file di configurazione e di script nel tuo CloudFormation modello, usa il seguente formato. Per i modelli annidati (AWS::Cloudformation::Stack), sono supportate solo le funzioni intrinseche TemplateURLs senza. Annota il Parameters contenuto del modello.

AWSTemplateFormatVersion: '2010-09-09' Metadata: Name: Seller test product Parameters: CFTRefFilesBucket: Type: String Default: "seller-bucket" CFTRefFilesBucketKeyPrefix: Type: String Default: "cftsolutionFolder/additionCFfiles" Resources: TestEc2: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: addCloudAccount: files: /etc/cfn/set-aia-settings.sh: source: Fn::Sub: - https://${CFTRefFilesBucket}.${S3Region}amazonaws.com/${CFTRefFilesBucketKeyPrefix}/sampleScript.sh - S3Region: !If - GovCloudCondition - s3-us-gov-west-1 - s3 owner: root mode: '000700' authentication: S3AccessCreds .. .. .. SampleNestedStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: 'https://sellerbucket.s3.amazon.com/sellerproductfolder/nestedCft.template' Parameters: SampleParameter: 'test' Transform: AWS::Serverless-2016-10-31

Invia il CloudFormation modello e i file di configurazione

Per inviare il CloudFormation modello e i file di configurazione e script, concedi Marketplace AWS le autorizzazioni per leggere il bucket Amazon S3 in cui sono archiviati questi file. A tale scopo, aggiorna la tua policy sui bucket includendo le seguenti autorizzazioni.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "assets.marketplace.amazonaws.com" }, "Action": ["s3:GetObject", "s3:ListBucket"], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"] } ] }

Aggiorna le autorizzazioni dell'applicazione AWS Serverless Application Repository

Per inviare la tua AWS Serverless Application Repository candidatura a Marketplace AWS, devi concedere Marketplace AWS le autorizzazioni per leggerla. A tale scopo, aggiungi le autorizzazioni a una politica associata all'applicazione serverless. Esistono due modi per aggiornare la politica dell'applicazione:

  • Vai all'AWS Serverless Application Repository. Scegli la tua applicazione serverless dall'elenco. Seleziona la scheda Condivisione e scegli Crea dichiarazione. Nella pagina di configurazione dell'estratto conto, inserisci il seguente responsabile del servizio nel campo Account Ids. assets.marketplace.amazonaws.com Quindi scegli Save (Salva).

  • Utilizzate il AWS CLI comando seguente per aggiornare la politica dell'applicazione.

    aws serverlessrepo put-application-policy \ --region region \ --application-id application-arn \ --statements Principals=assets.marketplace.amazonaws.com,Actions=Deploy

Condividi il tuo AMI

Tutte le AMI create e inviate Marketplace AWS devono rispettare tutte le politiche di prodotto. La scansione AMI self-service è disponibile in. Portale di gestione Marketplace AWS Con questa funzionalità, puoi avviare scansioni delle tue AMI. I risultati della scansione vengono ricevuti rapidamente (in genere, in meno di un'ora) con un feedback chiaro in un'unica posizione. Dopo che la scansione dell'AMI è stata completata correttamente, invia l'AMI per l'elaborazione da parte del team Operazioni del Marketplace AWS venditore caricando il modulo di caricamento del prodotto.

Invia il tuo CloudFormation prodotto con AMI e un'applicazione serverless

Tieni presente quanto segue prima di inviare il prodotto:

  • È necessario fornire un diagramma architettonico per ogni modello. Il diagramma deve utilizzare le icone dei AWS prodotti per ogni AWS servizio distribuito tramite il modello. CloudFormation Inoltre, il diagramma deve includere i metadati per i servizi. Per scaricare le nostre icone di AWS architettura ufficiali, consulta AWS Architecture Icons.

  • La stima dei costi di infrastruttura per ogni modello mostrato agli acquirenti si basa su una stima fornita utilizzando il AWS Pricing Calculator. Nella stima, includi l'elenco dei servizi da distribuire come parte del modello, insieme ai valori predefiniti per una distribuzione tipica.

  • Completa il modulo di caricamento del prodotto. È possibile trovare il modulo di caricamento del prodotto su Portale di gestione Marketplace AWS. È necessario un modulo di caricamento del prodotto diverso per singoli prodotti AMI e più prodotti AMI. Nel modulo di caricamento del prodotto, fornirai un URL pubblico al tuo CloudFormation modello. CloudFormation i modelli devono essere inviati sotto forma di URL pubblico.

  • Usa il Portale di gestione Marketplace AWS per inviare la tua inserzione. Da Risorse, scegli Caricamento file, allega il file, quindi scegli Carica. Dopo aver ricevuto il modello e i metadati, AWS inizia a elaborare la richiesta.

Dopo aver inviato l'inserzione, Marketplace AWS esamina e convalida il modulo di caricamento del prodotto. Inoltre, Marketplace AWS regionalizza le AMI e le applicazioni serverless e aggiorna la mappatura regionale del modello per tuo conto. AWS CloudFormation In caso di problemi, il team operativo del Marketplace AWS venditore ti contatterà tramite e-mail.