Adicionar componentes de aplicativo sem servidor - AWS Marketplace

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

Adicionar componentes de aplicativo sem servidor

Você pode criar um produto que inclua uma ou mais Amazon Machine Images (AMIs), entregues usando um ou mais AWS CloudFormation modelos, com componentes sem servidor incorporados ao produto. Por exemplo, crie um produto com uma AMI configurada como servidor controlador e outra AMI configurada como servidor de trabalho, entregue como uma AWS CloudFormation pilha. O AWS CloudFormation modelo usado para criar a pilha pode incluir a definição para configurar uma AWS Lambda função que é acionada por um evento em um dos servidores.

Ao usar essa abordagem para projetar seu produto, você pode simplificar a arquitetura e facilitar o lançamento para seus compradores. Essa abordagem também pode facilitar a atualização do produto.

Para obter informações sobre como criar AMIs para o produto, consulte Produtos baseados em AMI. Para obter informações sobre como preencher AWS CloudFormation modelos para seu produto, consulteEntrega baseada em AMI usando AWS CloudFormation.

Ao definir seu aplicativo sem servidor, você usa um modelo AWS Serverless Application Model (AWS SAM) que você armazena no. AWS Serverless Application Repository AWS SAM é uma estrutura de código aberto para criar aplicativos sem servidor. Durante a implantação, AWS SAM transforma e expande a sintaxe em AWS Serverless Application Model sintaxe. AWS CloudFormation O AWS Serverless Application Repository é um repositório gerenciado para aplicativos sem servidor. Ele possibilita armazenar e compartilhar aplicativos reutilizáveis para que os compradores possam montar e implantar arquiteturas sem servidor. Para criar e oferecer esse tipo de produto, conclua as seguintes etapas:

AWS Marketplace analisa e valida seu produto antes da criação do anúncio. Enviaremos um e-mail se houver problemas a serem resolvidos antes que a oferta seja listada.

Como parte do cumprimento de uma assinatura, copiamos as AMIs, os aplicativos sem servidor e os AWS CloudFormation modelos para um repositório próprio em cada um AWS Marketplace. Região da AWS Quando um comprador assina o seu produto, damos acesso ao comprador e também o notificamos quando você atualiza o software.

Criar um aplicativo sem servidor

Sua primeira etapa é empacotar as AWS Lambda funções usadas para criar seu aplicativo sem servidor. O aplicativo é uma combinação de funções do Lambda, fontes de eventos e outros recursos que trabalham juntos para realizar tarefas. Um aplicativo com tecnologia sem servidor pode ser tão simples quanto uma função do Lambda ou conter várias funções com outros recursos, como APIs, bancos de dados e mapeamentos da fonte de eventos.

Use o AWS SAM para definir um modelo para seu aplicativo sem servidor. Para obter descrições de nomes e tipos de propriedades, consulte AWS::Serverless::Applicationem AWS Labs on GitHub. Veja a seguir um exemplo de um AWS SAM modelo com uma única função e função AWS Identity and Access Management (IAM) do Lambda.

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"

Publicar o aplicativo no repositório

Para publicar um aplicativo, você precisa primeiro fazer upload do código dele. Armazene seus artefatos de código (por exemplo, funções do Lambda, scripts, arquivos de configuração) em um bucket do Amazon S3 da sua conta. Quando você carrega seu aplicativo, ele é inicialmente definido como privado, o que significa que só está disponível para Conta da AWS quem o criou. Você deve criar uma política do IAM que conceda AWS Serverless Application Repository permissões para acessar os artefatos que você enviou.

Como publicar o aplicativo sem servidor no repositório de aplicativos sem servidor
  1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. Escolha o bucket do Amazon S3 que você usou para empacotar o aplicativo.

  3. Escolha a aba Permissões.

  4. Escolha Bucket Policy.

  5. Copie e cole o seguinte exemplo de instrução de política.

    nota

    O exemplo de instrução de política produzirá um erro até que os valores de aws:SourceAccount e Resource sejam atualizados nas etapas a seguir.

    { "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. Substitua DOC-EXAMPLE-BUCKET no valor da Resource propriedade pelo nome do bucket do seu bucket.

    2. Substitua 123456789012 no elemento pela sua ID. Condition Conta da AWS O Condition elemento garante que o AWS Serverless Application Repository único tenha permissão para acessar aplicativos a partir do especificado Conta da AWS.

  6. Selecione Save (Salvar).

  7. Abra o AWS Serverless Application Repository console emhttps://console.aws.amazon.com/serverlessrepo.

  8. Na página My Applications (Meus aplicativos), escolha Publish application (Publicar aplicativo).

  9. Preencha os campos obrigatórios e todos os campos opcionais apropriados. Os campos obrigatórios são:

    • Nome do aplicativo

    • Author (Autor)

    • Descrição

    • Source code URL (URL do código-fonte)

    • SAM template (Modelo do SAM)

  10. Escolha Publish application (Publicar aplicativo).

Para publicar versões subsequentes do aplicativo
  1. Abra o AWS Serverless Application Repository console emhttps://console.aws.amazon.com/serverlessrepo.

  2. No painel de navegação, em My Applications (Meus aplicativos), escolha o aplicativo.

  3. Escolha Publicar nova versão.

Para obter mais informações, consulte Publicação de aplicativos sem servidor usando a CLI AWS SAM.

Criar o modelo do CloudFormation

Para criar seus CloudFormation modelos, você deve atender aos pré-requisitos do modelo e fornecer os parâmetros de entrada e segurança necessários. Para obter mais informações, consulte Anatomia do modelo no Guia do usuário do AWS CloudFormation .

Em seu CloudFormation modelo, você pode referenciar seu aplicativo sem servidor e sua AMI. Você também pode usar CloudFormation modelos aninhados e fazer referência a aplicativos sem servidor tanto no modelo raiz quanto nos modelos aninhados. Para fazer referência ao aplicativo com tecnologia sem servidor, use o modelo do AWS SAM . Você pode gerar automaticamente o AWS SAM modelo para seu aplicativo a partir do AWS Serverless Application Repository. Veja um exemplo de modelo a seguir.

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: {}

O AWS SAM modelo contém os seguintes elementos:

  • ApplicationID: o nome do recurso da Amazon (ARN) da aplicação. Essas informações estão localizadas na seção Meus aplicativos do AWS Serverless Application Repository.

  • SemanticVersion: a versão do aplicativo com tecnologia sem servidor. Você pode encontrá-lo na seção My Applications (Meus aplicativos) do AWS Serverless Application Repository.

  • Parameter (opcional): parâmetros de aplicativo.

nota

Para ApplicationID e SemanticVersion, funções intrínsecas não são compatíveis. Você deve codificar essas strings. O ApplicationID é atualizado quando é clonado por AWS Marketplace.

Se você planeja referenciar arquivos de configuração e script em seu CloudFormation modelo, use o formato a seguir. Para modelos aninhados (AWS::Cloudformation::Stack), somente TemplateURLs sem funções intrínsecas são aceitos. Observe o conteúdo de Parameters no modelo.

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

Envie seu CloudFormation modelo e arquivos de configuração

Para enviar seu CloudFormation modelo, arquivos de configuração e scripts, conceda AWS Marketplace permissões para ler o bucket do Amazon S3 em que esses arquivos estão armazenados. Para fazer isso, atualize sua política de bucket para incluir as seguintes permissões.

{ "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/*"] } ] }

Atualizar as permissões do aplicativo do AWS Serverless Application Repository

Para enviar sua AWS Serverless Application Repository inscrição para AWS Marketplace, você deve conceder AWS Marketplace permissões para ler sua inscrição. Para fazer isso, adicione permissões a uma política associada ao aplicativo sem servidor. Há duas maneiras de atualizar sua política de aplicativo:

  • Vá para o AWS Serverless Application Repository. Escolha o aplicativo com tecnologia sem servidor na lista. Selecione a guia Compartilhamento e escolha Criar instrução. Na página Configuração da instrução, insira a seguinte entidade principal de serviço assets.marketplace.amazonaws.com, no campo IDs da conta. Em seguida, escolha Salvar.

  • Use o AWS CLI comando a seguir para atualizar a política do seu aplicativo.

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

Compartilhar sua AMI

Todas as AMIs criadas e enviadas AWS Marketplace devem seguir todas as políticas do produto. A verificação de autoatendimento da AMI está disponível no Portal de gerenciamento do AWS Marketplace. Com esse recurso, você pode iniciar verificações das AMIs. Você recebe os resultados da verificação rapidamente (geralmente em menos de uma hora) com feedback claro em um único lugar. Depois que sua AMI for digitalizada com sucesso, envie a AMI para processamento pela equipe de operações do AWS Marketplace vendedor fazendo o upload do formulário de carregamento do produto.

Envie seu CloudFormation produto com AMI e aplicativo sem servidor

Lembre-se do seguinte antes de enviar o produto:

  • Você deve fornecer um diagrama de arquitetura para cada modelo. O diagrama deve usar os ícones AWS do produto para cada AWS serviço implantado por meio do CloudFormation modelo. Além disso, o diagrama deve incluir metadados para os serviços. Para fazer download de nossos ícones oficiais de arquitetura da AWS , consulte Ícones de arquitetura da AWS.

  • A estimativa de custo da infraestrutura de cada modelo exibida para os compradores é baseada em uma estimativa que você fornece usando a Calculadora de definição de preço da AWS. Na estimativa, inclua a lista de serviços a serem implantados como parte do modelo junto com os valores padrão de uma implantação típica.

  • Preencha o formulário de carregamento do produto. É possível encontrar o formulário de carregamento do produto no Portal de gerenciamento do AWS Marketplace. Um formulário de carregamento de produto diferente é necessário para produtos de uma única AMI e produtos de várias AMIs. No formulário de carregamento do produto, você fornecerá uma URL pública para o seu CloudFormation modelo. CloudFormation os modelos devem ser enviados na forma de um URL público.

  • Use o Portal de gerenciamento do AWS Marketplace para enviar seu anúncio. Em Assets (Ativos), escolha File upload (Upload de arquivo), anexe o arquivo e escolha Upload (Fazer upload). Depois de recebermos seu modelo e metadados, AWS começa a processar sua solicitação.

Depois de enviar seu anúncio, AWS Marketplace revise e valide o formulário de carregamento do produto. Além disso, AWS Marketplace regionaliza AMIs e aplicativos sem servidor e atualiza o mapeamento regional do seu modelo em seu AWS CloudFormation nome. Se ocorrer algum problema, a equipe de operações do AWS Marketplace vendedor entrará em contato com você por e-mail.