Adición de componentes de aplicación sin servidor - AWS Marketplace

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.

Adición de componentes de aplicación sin servidor

Puede crear un producto que incluya una o más Amazon Machine Images (AMI), entregadas mediante una o más AWS CloudFormation plantillas, con componentes sin servidor incorporados al producto. Por ejemplo, cree un producto con una AMI configurada como servidor controlador y otra AMI configurada como servidor de trabajo, entregadas como una AWS CloudFormation pila. La AWS CloudFormation plantilla utilizada para crear la pila puede incluir la definición para configurar una AWS Lambda función que se active por un evento en uno de los servidores.

Al utilizar este enfoque para diseñar su producto, puede simplificar la arquitectura y facilitar el lanzamiento para los compradores. Este enfoque también permite facilitar la actualización del producto.

Para obtener información acerca de la creación de AMI para su producto, consulte Productos basados en AMI. Para obtener información sobre cómo completar AWS CloudFormation las plantillas para su producto, consulteEntrega basada en AMI mediante AWS CloudFormation.

Al definir la aplicación sin servidor, se utiliza una plantilla AWS Serverless Application Model (AWS SAM) que se almacena en. AWS Serverless Application Repository AWS SAM es un marco de código abierto para crear aplicaciones sin servidor. Durante la implementación, AWS SAM transforma y expande la AWS Serverless Application Model sintaxis en AWS CloudFormation sintaxis. El AWS Serverless Application Repository es un repositorio administrado para aplicaciones sin servidor. Le permite almacenar y compartir aplicaciones reutilizables para que los compradores puedan montar e implementar arquitecturas sin servidor. Para crear y ofrecer este tipo de producto, siga los pasos que se describen a continuación:

AWS Marketplace revisa y valida el producto antes de crear el listado. Si hay algún problema que deba resolver antes de que aparezca la oferta, le enviaremos un correo electrónico.

Como parte de la suscripción, copiamos las AMI, las aplicaciones sin servidor y las AWS CloudFormation plantillas a un repositorio propio en cada una AWS Marketplace de ellas. Región de AWS Cuando un comprador se suscribe a su producto, le proporcionamos acceso y también se lo notificamos cuando actualice el software.

Crear una aplicación sin servidor

El primer paso es empaquetar las AWS Lambda funciones utilizadas para crear la aplicación sin servidor. Su aplicación es una combinación de funciones, fuentes de eventos y otros recursos de Lambda que se combinan para realizar tareas. Una aplicación sin servidor puede ser tan sencilla como una función de Lambda o contener varias funciones con otros recursos, como API, bases de datos y mapeos de orígenes de eventos.

Úselo AWS SAM para definir un modelo para su aplicación sin servidor. Para obtener descripciones de los nombres y tipos de propiedades, consulte AWS::Serverless::Application AWS Labs on GitHub. A continuación se muestra un ejemplo de una AWS SAM plantilla con una sola función de Lambda y un único rol 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"

Publicar la aplicación en el repositorio

Para publicar una aplicación, primero hay que cargar su código. Almacene los artefactos de código (por ejemplo, funciones de Lambda, scripts y archivos de configuración) en un bucket de Amazon S3 propiedad de su cuenta. Al cargar la aplicación, inicialmente se establece como privada, lo que significa que solo está disponible para quien la Cuenta de AWS creó. Debes crear una política de IAM que conceda AWS Serverless Application Repository permisos para acceder a los artefactos que has subido.

Para publicar la aplicación sin servidor en el repositorio de aplicaciones sin servidor
  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. Elija el bucket de Amazon S3 que usó para empaquetar su aplicación.

  3. Elija la pestaña Permissions (Permisos).

  4. Elija Bucket Policy (Política de bucket).

  5. Copie y pegue la siguiente declaración de política de ejemplo.

    nota

    La declaración de política de ejemplo generará un error hasta que los valores de aws:SourceAccount y Resource se actualicen en los pasos siguientes.

    { "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. Sustituya DOC-EXAMPLE-BUCKET en el valor de la Resource propiedad por el nombre de su depósito.

    2. Sustituya 123456789012 en el elemento por su ID. Condition Cuenta de AWS El Condition elemento garantiza que AWS Serverless Application Repository solo tenga permiso para acceder a las aplicaciones especificadas. Cuenta de AWS

  6. Seleccione Guardar.

  7. Abra la AWS Serverless Application Repository consola enhttps://console.aws.amazon.com/serverlessrepo.

  8. En la página My Applications (Mis aplicaciones), elija Publish application (Publicar aplicación).

  9. Complete los campos obligatorios y todos los campos opcionales, según corresponda. Los campos obligatorios son:

    • Nombre de la aplicación

    • Autor

    • Descripción

    • Source code URL (URL de código fuente)

    • SAM template (Plantilla de SAM)

  10. Elija Publish application (Publicar aplicación).

Para publicar versiones posteriores de la aplicación
  1. Abra la AWS Serverless Application Repository consola enhttps://console.aws.amazon.com/serverlessrepo.

  2. En el panel de navegación, en My Applications (Mis aplicaciones), elija la aplicación.

  3. Elija Publicar nueva versión.

Para obtener más información, consulte Publicar aplicaciones sin servidor mediante la AWS SAM CLI.

Crear la plantilla de CloudFormation

Para crear CloudFormation las plantillas, debe cumplir los requisitos previos de la plantilla y proporcionar los parámetros de entrada y seguridad necesarios. Para obtener más información, consulte Anatomía de la plantilla en la Guía del usuario de AWS CloudFormation .

En la CloudFormation plantilla, puede hacer referencia a la aplicación sin servidor y a la AMI. También puede utilizar CloudFormation plantillas anidadas y hacer referencia a aplicaciones sin servidor tanto en la plantilla raíz como en las plantillas anidadas. Para hacer referencia a la aplicación sin servidor, utilice la plantilla de AWS SAM . Puede generar automáticamente la AWS SAM plantilla para su aplicación desde. AWS Serverless Application Repository La siguiente es una plantilla de ejemplo.

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

La AWS SAM plantilla contiene los siguientes elementos:

  • ApplicationID: el nombre de recurso de Amazon (ARN) de su aplicación. Esta información se encuentra en la sección Mis aplicaciones de AWS Serverless Application Repository.

  • SemanticVersion: versión de la aplicación sin servidor. Puede encontrarlo en la sección My Applications (Mis aplicaciones) de la AWS Serverless Application Repository.

  • Parameter (opcional): parámetros de aplicación.

nota

Para ApplicationID y SemanticVersion, no se admiten las funciones intrínsecas. Debe codificar esas cadenas. ApplicationIDSe actualiza cuando se clona con. AWS Marketplace

Si planea hacer referencia a los archivos de configuración y de script de su CloudFormation plantilla, utilice el siguiente formato. En el caso de las plantillas anidadas (AWS::Cloudformation::Stack), solo se admiten funciones TemplateURLs sin funciones intrínsecas. Anote el contenido de Parameters en la plantilla.

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

Envíe sus archivos CloudFormation de plantilla y configuración

Para enviar la CloudFormation plantilla y los archivos de configuración y scripts, conceda AWS Marketplace permisos para leer el bucket de Amazon S3 en el que se almacenan estos archivos. Para ello, actualice la política del bucket para incluir los siguientes permisos.

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

Actualizar los permisos de la aplicación de AWS Serverless Application Repository

Para enviar su AWS Serverless Application Repository solicitud a AWS Marketplace, debe conceder AWS Marketplace permisos para leerla. Para ello, añada permisos a una política asociada a su aplicación sin servidor. Hay dos formas de actualizar la política de la aplicación:

  • Vaya a AWS Serverless Application Repository. Elija la aplicación sin servidor de la lista. Seleccione la pestaña Compartir y elija Crear declaración. En la página Configuración de declaración, introduzca la siguiente entidad principal de servicio, assets.marketplace.amazonaws.com, en el campo ID de cuenta. A continuación, elija Guardar.

  • Use el siguiente AWS CLI comando para actualizar la política de su solicitud.

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

Compartir la AMI

Todas las AMI creadas y enviadas a las que se envíen AWS Marketplace deben cumplir todas las políticas del producto. El análisis de AMI de autoservicio está disponible en AWS Marketplace Management Portal. Con esta función, puede iniciar el escaneo de sus AMI. Recibe rápidamente los resultados (normalmente en menos de una hora) con comentarios claros expuestos en una sola ubicación. Una vez que tu AMI se haya escaneado correctamente, envía la AMI para que el equipo de operaciones de AWS Marketplace vendedores la procese cargando el formulario de carga de productos.

Envíe su CloudFormation producto con una AMI y una aplicación sin servidor

Tenga en cuenta lo siguiente antes de enviar su producto:

  • Debe proporcionar un diagrama de arquitectura para cada plantilla. El diagrama debe usar los íconos de los AWS productos de cada AWS servicio implementado a través de la CloudFormation plantilla. Además, el diagrama debe incluir los metadatos de los servicios. Para descargar nuestros iconos oficiales de arquitectura de AWS , consulte AWS Architecture Icons.

  • La estimación del costo de la infraestructura de cada plantilla que se muestra a los compradores se basa en la estimación que usted proporciona a través de la Calculadora de precios de AWS. En la estimación, incluya la lista de servicios que se van a implementar formando parte de la plantilla, junto con los valores predeterminados para una implementación típica.

  • Complete el formulario de carga del producto. Puede encontrar el formulario de carga del producto en la AWS Marketplace Management Portal. Se requiere un formulario de carga de producto distinto para los productos de una sola AMI y varios productos de AMI. En el formulario de carga del producto, proporcionarás una URL pública a tu CloudFormation plantilla. CloudFormation las plantillas deben enviarse en forma de URL pública.

  • Usa la AWS Marketplace Management Portal para enviar tu anuncio. En Assets (Recursos), elija File upload (Carga de archivo), adjunte el archivo y, a continuación, elija Upload (Cargar). Una vez que recibamos tu plantilla y tus metadatos, AWS empezaremos a procesar tu solicitud.

Tras enviar tu anuncio, AWS Marketplace revisa y valida el formulario de carga de productos. Además, AWS Marketplace regionaliza las AMI y las aplicaciones sin servidor, y actualiza el mapeo regional de la AWS CloudFormation plantilla en tu nombre. Si se produce algún problema, el equipo de operaciones AWS Marketplace de venta se pondrá en contacto contigo por correo electrónico.