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 (AMI), diffusé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 avec une AMI configurée en tant que serveur contrôleur et une autre AMI configurée en tant que serveur de travail, livrée 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 la création d'AMI pour votre produit, consultez Produits AMI. Pour plus d'informations sur la AWS CloudFormation façon de remplir des modèles pour votre produit, consultezLivraison basée sur l'AMI à l'aide de 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 passe en revue 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 AMI, les 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, telles que des API, 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, reportez-vous AWS::Serverless::Applicationà la section AWS Laboratoires sur 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://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"

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 politique IAM qui accorde AWS Serverless Application Repository les autorisations d'accès aux artefacts que vous avez chargés.

Pour publier votre application sans serveur dans le référentiel d'applications sans serveur
  1. Ouvrez la console Amazon S3 sur 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:::DOC-EXAMPLE-BUCKET/*", "Condition" : { "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }
    1. Remplacez DOC-EXAMPLE-BUCKET dans la valeur de la Resource propriété par le nom du bucket de votre bucket.

    2. Remplacez 123456789012 dans l'élément par votre identifiant. Condition Compte AWS 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 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

    • Source code URL (URL du code source)

    • SAM template (Modèle SAM)

  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 de la AWS SAM CLI.

Création du modèle CloudFormation

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 votre AMI. 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 (ARN) de votre application. 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:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-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 à AWS Serverless 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

Partage de votre AMI

Toutes les AMI créées et soumises AWS Marketplace doivent respecter toutes les politiques relatives aux produits. L'analyse des AMI en libre-service est disponible dans Portail de gestion AWS Marketplace. Grâce à cette fonctionnalité, vous pouvez lancer des analyses de vos AMI. 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 AMI a été scannée avec succès, soumettez-la 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 et une 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 des métadonnées pour les services. Pour télécharger nos icônes d' AWS architecture officielles, consultez la section Icônes d'architecture AWS.

  • 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 produits AMI uniques et les produits AMI multiples. Dans le formulaire de chargement du produit, vous fournirez une URL publique vers votre CloudFormation modèle. CloudFormation les modèles doivent être soumis sous la forme d'une URL publique.

  • 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). Une fois que nous avons reçu votre modèle et vos métadonnées, nous commençons AWS à 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 AMI et les 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.