Ajout de composants d'application sans serveur - AWS Marketplace

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Ajout de composants d'application sans serveur

Vous pouvez créer un produit qui inclut une ou plusieurs Amazon Machine Images (AMIs), livrées à l'aide d'un ou de plusieurs AWS CloudFormation modèles, avec des composants sans serveur intégrés au produit. Par exemple, créez un produit dont l'un est AMI configuré en tant que serveur contrôleur et l'autre AMI en tant que serveur de travail, livré sous forme de AWS CloudFormation pile. Le AWS CloudFormation modèle utilisé pour créer la pile peut inclure la définition permettant de configurer une AWS Lambda fonction déclenchée par un événement sur l'un des serveurs.

Lorsque vous utilisez cette approche pour concevoir votre produit, vous pouvez en simplifier l'architecture et en faciliter le lancement pour vos acheteurs. Cette approche peut également faciliter la mise à jour de votre produit.

Pour plus d'informations sur AMIs la création pour votre produit, consultezAMIproduits à base de. Pour plus d'informations sur la AWS CloudFormation façon de remplir des modèles pour votre produit, consultezAMIlivraison basée sur AWS CloudFormation.

Lorsque vous définissez votre application sans serveur, vous utilisez un modèle AWS Serverless Application Model (AWS SAM) que vous stockez dans le AWS Serverless Application Repository. AWS SAM est un framework open source permettant de créer des applications sans serveur. Lors du déploiement, AWS SAM transforme et développe la AWS Serverless Application Model syntaxe en AWS CloudFormation syntaxe. AWS Serverless Application Repository est un référentiel géré pour les applications sans serveur. Il vous permet de stocker et de partager des applications réutilisables afin que les acheteurs puissent assembler et déployer des architectures sans serveur. Pour créer et proposer ce type de produit, procédez comme suit :

AWS Marketplace examine et valide votre produit avant la création de votre annonce. S'il y a des problèmes que vous devez résoudre avant que l'offre ne soit répertoriée, nous vous enverrons un e-mail.

Dans le cadre de l'exécution d'un abonnement, nous copions les AMIs applications sans serveur et les AWS CloudFormation modèles dans un référentiel AWS Marketplace appartenant à chacun d'entre eux. Région AWS Lorsqu'un acheteur s'abonne à votre produit, nous lui accordons l'accès et l'informons lorsque vous mettez à jour votre logiciel.

Création d'une application sans serveur

La première étape consiste à regrouper les AWS Lambda fonctions utilisées pour créer votre application sans serveur. Votre application est une combinaison de fonctions Lambda, de sources d'événements et d'autres ressources qui fonctionnent ensemble pour effectuer des tâches. Une application sans serveur peut être aussi simple qu'une fonction Lambda ou contenir plusieurs fonctions associées à d'autres ressources, APIs telles que des bases de données et des mappages de sources d'événements.

Utilisez le AWS SAM pour définir un modèle pour votre application sans serveur. Pour une description des noms et des types de propriétés, voir AWS: :Serverless : :Application in AWS Labs on. GitHub Voici un exemple de AWS SAM modèle avec une seule fonction Lambda et un seul rôle 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://amzn-s3-demo-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"

Publication de votre application dans le référentiel

Pour publier une application, vous chargez d'abord le code de l'application. Stockez vos artefacts de code (par exemple, les fonctions Lambda, les scripts, les fichiers de configuration) dans un compartiment Amazon S3 appartenant à votre compte. Lorsque vous téléchargez votre application, elle est initialement définie comme privée, ce qui signifie qu'elle n'est accessible qu'à Compte AWS celui qui l'a créée. Vous devez créer une IAM politique qui accorde des AWS Serverless Application Repository autorisations pour accéder aux artefacts que vous avez téléchargés.

Pour publier votre application sans serveur dans le référentiel d'applications sans serveur
  1. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez le compartiment Amazon S3 que vous avez utilisé pour empaqueter votre application.

  3. Choisissez l’onglet Permissions (Autorisations).

  4. Choisissez Stratégie de compartiment.

  5. Copiez et collez l'exemple de déclaration de politique suivant.

    Note

    L'exemple de déclaration de politique produira une erreur jusqu'à ce que les valeurs pour aws:SourceAccount et Resource soient mises à jour dans les étapes suivantes.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "serverlessrepo.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition" : { "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }
    1. Remplacez amzn-s3-demo-bucket dans la valeur de la Resource propriété par le nom du bucket de votre bucket.

    2. Remplacez 123456789012 dans l'Conditionélément avec votre Compte AWS identifiant. L'Conditionélément garantit que le AWS Serverless Application Repository seul est autorisé à accéder aux applications à partir de la valeur spécifiée Compte AWS.

  6. Choisissez Save (Enregistrer).

  7. Ouvrez la AWS Serverless Application Repository console à l'adressehttps://console.aws.amazon.com/serverlessrepo.

  8. Sur la page My Applications (Mes applications) choisissez Publish application (Publier une application).

  9. Remplissez les champs obligatoires et, si vous le souhaitez, les champs facultatifs. Les champs obligatoires sont les suivants :

    • Application name (Nom de l'application)

    • Author (Auteur)

    • Description

    • Code source URL

    • SAMmodèle

  10. Choisissez Publish Application (Publier une application).

Pour publier les versions suivantes de votre application
  1. Ouvrez la AWS Serverless Application Repository console à l'adressehttps://console.aws.amazon.com/serverlessrepo.

  2. Dans le volet de navigation, dans My Applications (Mes applications), choisissez l'application.

  3. Choisissez Publish new version (Publier une nouvelle version).

Pour plus d'informations, consultez la section Publication d'applications sans serveur à l'aide du AWS SAM CLI.

Créez le CloudFormation modèle

Pour créer vos CloudFormation modèles, vous devez répondre aux exigences du modèle et fournir les paramètres d'entrée et de sécurité requis. Pour plus d'informations, consultez la section Anatomie du modèle dans le guide de AWS CloudFormation l'utilisateur.

Dans votre CloudFormation modèle, vous pouvez référencer votre application sans serveur et votreAMI. Vous pouvez également utiliser des CloudFormation modèles imbriqués et référencer des applications sans serveur à la fois dans le modèle racine et dans les modèles imbriqués. Pour référencer l'application sans serveur, vous utilisez le AWS SAM modèle. Vous pouvez générer automatiquement le AWS SAM modèle de votre application à partir du AWS Serverless Application Repository. Voici un exemple de modèle.

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

Le AWS SAM modèle contient les éléments suivants :

  • ApplicationID— Le nom de ressource Amazon de votre application (ARN). Ces informations se trouvent dans la section My Applications (Mes applications) du AWS Serverless Application Repository.

  • SemanticVersion— La version de votre application sans serveur. Vous pouvez le trouver dans la section My Applications (Mes applications) du référentiel AWS Serverless Application Repository.

  • Parameter(facultatif) — Paramètres de l'application.

Note

Pour ApplicationID etSemanticVersion, les fonctions intrinsèques ne sont pas prises en charge. Vous devez coder ces chaînes en dur. Le ApplicationID est mis à jour lorsqu'il est cloné par AWS Marketplace.

Si vous prévoyez de référencer des fichiers de configuration et de script dans votre CloudFormation modèle, utilisez le format suivant. Pour les modèles imbriqués (AWS::Cloudformation::Stack), seules les fonctions TemplateURLs sans fonctions intrinsèques sont prises en charge. Notez le contenu Parameters dans le modèle.

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

Soumettez votre CloudFormation modèle et vos fichiers de configuration

Pour soumettre votre CloudFormation modèle, vos fichiers de configuration et vos fichiers de scripts, accordez AWS Marketplace les autorisations nécessaires pour lire le compartiment Amazon S3 dans lequel ces fichiers sont stockés. Pour ce faire, mettez à jour votre politique de compartiment afin d'inclure les autorisations suivantes.

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

Mise à jour de vos autorisations d'application AWS Serverless Application Repository

Pour soumettre votre AWS Serverless Application Repository candidature à AWS Marketplace, vous devez autoriser AWS Marketplace la lecture de votre candidature. Pour ce faire, ajoutez des autorisations à une stratégie associée à votre application sans serveur. Vous pouvez mettre à jour votre politique d'application de deux manières :

  • Accédez au AWSServerless Application Repository. Choisissez votre application sans serveur dans la liste. Sélectionnez l'onglet Partage, puis choisissez Create Statement. Sur la page de configuration du relevé, entrez le principal de service suivantassets.marketplace.amazonaws.com, dans le champ Identifiants de compte. Ensuite, choisissez Save (Enregistrer).

  • Utilisez la AWS CLI commande suivante pour mettre à jour la politique de votre application.

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

Partagez votre AMI

Tous les produits AMIs fabriqués et soumis AWS Marketplace doivent respecter toutes les politiques relatives aux produits. La AMI numérisation en libre-service est disponible dans le Portail de gestion AWS Marketplace. Grâce à cette fonctionnalité, vous pouvez lancer des scans de votreAMIs. Vous recevez les résultats de numérisation rapidement (généralement en moins d'une heure) avec des commentaires clairs en un seul endroit. Une fois que votre produit AMI a été scanné avec succès, AMI soumettez-le pour traitement par l'équipe chargée des opérations AWS Marketplace vendeurs en téléchargeant votre formulaire de chargement de produit.

Soumettez votre CloudFormation produit avec une AMI application sans serveur

Gardez présent à l'esprit l'élément suivant avant de soumettre votre produit :

  • Vous devez fournir un schéma architectural pour chaque modèle. Le diagramme doit utiliser les icônes AWS du produit pour chaque AWS service déployé via le CloudFormation modèle. Le diagramme doit également inclure les métadonnées des services. Pour télécharger nos icônes d' AWS architecture officielles, consultez la section Icônes AWS d'architecture.

  • L'estimation des coûts d'infrastructure pour chaque modèle présenté aux acheteurs est basée sur une estimation que vous fournissez à l'aide du calculateur de AWS prix. Dans l'estimation, incluez la liste des services à déployer dans le cadre du modèle, ainsi que les valeurs par défaut pour un déploiement typique.

  • Remplissez le formulaire de chargement du produit. Vous pouvez trouver le formulaire de chargement du produit dans Portail de gestion AWS Marketplace. Un formulaire de chargement de produit différent est requis pour les AMI produits uniques et pour les AMI produits multiples. Dans le formulaire de chargement du produit, vous fournirez un public URL à votre CloudFormation modèle. CloudFormation les modèles doivent être soumis sous la forme d'un document publicURL.

  • Utilisez le Portail de gestion AWS Marketplace pour soumettre votre annonce. Dans Assets (Ressources), choisissez File upload (Chargement de fichier), attachez votre fichier, puis choisissez Upload (Charger). Après réception de votre modèle et de vos métadonnées, nous AWS commençons à traiter votre demande.

Après avoir soumis votre offre, passez en AWS Marketplace revue et validez le formulaire de chargement du produit. En outre, AWS Marketplace régionalise les AMIs applications sans serveur, et met à jour le mappage régional de votre AWS CloudFormation modèle en votre nom. En cas de problème, l'équipe chargée des opérations avec les AWS Marketplace vendeurs vous contactera par e-mail.