Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Fügen Sie Ihrem Produkt CloudFormation Vorlagen hinzu
AWS Marketplace Verkäufer können mithilfe von AWS CloudFormation Vorlagen AMI-based Produkte anbieten, die an AWS Marketplace Käufer geliefert werden. Wenn Sie Ihrem AMI-based Produkt eine CloudFormation Vorlage hinzufügen, können Ihre Käufer Ihre Lösung bereitstellen, ohne die Ressourcen und Abhängigkeiten manuell konfigurieren zu müssen. Sie können die Vorlagen dafür verwenden, einen Cluster oder verteilte Architektur für die Produkte zu definieren oder andere AMI-Kombinationen oder Produktkonfigurationen auszuwählen. Einzelne AMI-Lösungen können maximal drei CloudFormation Vorlagen enthalten.
Die CloudFormation Vorlagen können so konfiguriert werden, dass sie ein einzelnes Amazon Machine Image (AMI) mit zugehörigen Konfigurationsdateien und Lambda-Funktionen bereitstellen. Darüber hinaus müssen Sie für jede Vorlage ein Architekturdiagramm hinzufügen.
Themen
Ihre CloudFormation Vorlage wird vorbereitet
Um Ihre CloudFormation Vorlagen zu erstellen, müssen Sie die Vorlagenvoraussetzungen erfüllen und die erforderlichen Eingabe- und Sicherheitsparameter angeben. Beachten Sie beim Einreichen Ihrer CloudFormation Vorlage die Richtlinien in den folgenden Abschnitten.
Voraussetzungen für Vorlagen
-
Stellen Sie sicher, dass die Vorlage erfolgreich über die CloudFormation Konsole gestartet wurde, sofern alle für Ihr Produkt AWS-Regionen aktiviert sind. Sie können das TaskCat Tool verwenden
, um Ihre Vorlagen zu testen. -
Die in Ihrer CloudFormation Vorlage enthaltenen AMIs müssen entweder das AMI des Produkts sein, das Sie veröffentlichen, oder ein AWS-managed AMI wie das neueste Amazon Linux 2. Schließen Sie keine Community-AMI oder AMI ein, die Ihnen oder einem anderen Drittanbieter gehören und von diesen geteilt werden. Um ein AWS-managed AMI zu verwenden, verwenden Sie öffentliche Parameter im AWS Systems Manager Parameter Store, anstatt AMI-IDs fest zu codieren. Beispielsweise verwenden Sie in Ihrer CloudFormation Vorlage, in der Sie die AMI-ID angeben, eine dynamische Referenz.
ImageId: '{{resolve:ssm:/aws/service/ecs/optimized-ami/amazon-linux-2/recommended/image_id}}' -
Erstellen Sie Vorlagen so, dass sie nicht von der Verwendung in einer bestimmten Availability Zone (AZ) abhängig sind. Nicht alle Kunden haben Zugriff auf alle AZs, und AZs sind für verschiedene Konten unterschiedlich zugeordnet.
-
Wenn Sie eine geclusterte Lösung mithilfe einer Auto Scaling-Gruppe erstellen, empfehlen wir, ein Skalierungsereignis zu berücksichtigen. Der neue Knoten sollte dem aktiven Cluster automatisch beitreten.
-
Sogar für Einzelknoten-Produkte raten wir zur Verwendung einer Auto Scaling-Gruppe.
-
Wenn Ihre Lösung einen Cluster mehrerer Instances beinhaltet, empfiehlt sich die Verwendung von Platzierungsgruppen, wenn zwischen den Instances niedrige Netzwerklatenz, hoher Netzwerkdurchsatz oder beides angestrebt wird.
-
Aus Gründen der Übersichtlichkeit durch das AWS Marketplace Team und der Transparenz für den Kunden empfehlen wir Ihnen, Kommentare in Ihrem UserData Abschnitt hinzuzufügen.
Anforderungen an AMI-Angaben
Anmerkung
Wenn Sie CloudFormation auf der https://aws.amazon.com/marketplace/management/products/server
Wenn Sie die ImageId Eigenschaft von Ressourcen angeben, die Ihr AMI für EC2-Instances wie AWS: :EC2: :Instance,:: und AWS AWS::AutoScaling: :EC2:: LaunchTemplate -Ressourcen bereitstellen LaunchConfiguration, müssen Sie auf einen Vorlagenparameter verweisen. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html Der Parametertyp muss entweder ein AWS::EC2::Image::IdAWS::SSM::Parameter::Value<AWS::EC2::Image::Id>, oder seinString.
Sie können diesem Vorlagenparameter einen beliebigen gültigen Parameternamen geben. AWS Marketplace kopiert Ihre Vorlage in seine eigenen Amazon S3-Buckets und ersetzt den angegebenen Parameter durch einen AWS Systems Manager Parameter Store-Parameter. AWS Marketplace aktualisiert außerdem die Beschreibung und den Beschränkungstext, um Käufern, die die Vorlage bereitstellen, den richtigen Wert zu verdeutlichen. Wenn Käufer Ihre Vorlage bereitstellen, wird dieser Parameter in die AWS-Region-spezifische AMI-ID Ihres veröffentlichten Produkts aufgelöst.
Die folgenden Vorlagenbeispiele veranschaulichen die ImageId Eigenschaften, die auf Vorlagenparameter verweisen, mithilfe der systemeigenen Funktion Ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html
YAML-Beispiel:
Parameters: ImageId: Type: AWS::EC2::Image::Id Default: ami-example1234567890 Resources: MyInstance: Type: AWS::EC2::Instance Properties: ImageId: !Ref ImageId
JSON-Beispiel:
{ "Parameters": { "ImageId": { "Type": "AWS::EC2::Image::Id", "Default": "ami-example1234567890" } }, "Resources": { "MyInstance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Ref": "ImageId" } } } } }
Wenn Sie EC2-Instances in einem verschachtelten Stack statt im Root-Stack bereitstellen, muss die AMI-ID ihren Wert dynamisch vom Root-Stack erben. Bearbeiten Sie Ihren Stammstapel und Ihre verschachtelten Stacks so, dass im Root-Stack durch das Festlegen des Werts Ihres Vorlagenparameters die in diesem verschachtelten Stack verwendete AMI-ID überschrieben wird.
Anforderungen für AMI-Details mithilfe des Produktladeformulars
Anmerkung
Wenn Sie CloudFormation auf der https://aws.amazon.com/marketplace/management/products/server
AMIs müssen in einer Zuordnungstabelle für jede Region enthalten sein. Das AWS Marketplace Team aktualisiert die AMI-IDs, nachdem sie geklont wurden. Ihr Quell-AMI muss sich in der us-east-1 Region befinden. Die anderen Regionen können Platzhalter verwenden.
YAML-Beispiel:
Mappings: RegionMap: us-east-1: ImageId: ami-0123456789abcdef0 us-west-1: ImageId: ami-xxxxxxxxxxxxxxxxx eu-west-1: ImageId: ami-xxxxxxxxxxxxxxxxx ap-southeast-1: ImageId: ami-xxxxxxxxxxxxxxxxx Resources: EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap - RegionMap - !Ref AWS::Region - ImageId
Anforderungen für verschachtelte Stack-Vorlagen
Anmerkung
Dieser Abschnitt gilt nur für Preismodelle, die das Produktladeformular nicht verwenden. Bei Preismodellen, die das Produktladeformular verwenden, ist für die TemplateURL Nested-Stack-Eigenschaft nur eine feste Zeichenfolge zulässig.
Wenn Ihre Vorlage verschachtelte Stacks enthält, muss die TemplateURL Eigenschaft verschachtelter Stack-Ressourcen auf die Vorlagenparameter für den Amazon S3-Bucket-Namen, die Bucket-Region und das Amazon S3-Objektschlüsselpräfix verweisen. Die Parameternamen für den Bucket-Namen müssen lautenMPS3BucketName, die Bucket-Region muss MPS3BucketRegion lauten und für das Objekt muss das Schlüsselpräfix lauten. MPS3KeyPrefix
Stellen Sie die Standardwerte für diese Parameter so ein, dass sie Ihrem Amazon S3-Bucket entsprechen, in dem Ihre verschachtelten Vorlagen gespeichert sind. Alle verschachtelten Vorlagen müssen öffentlich zugänglich sein. Wenn Sie Ihre Vorlage zur Veröffentlichung einreichen, AWS Marketplace kopiert Ihre Vorlagen in ihre eigenen Amazon S3-Buckets und ändert die Eigenschaften dieser drei Parameter, sodass der Standardwert und der zulässige Wert so eingestellt sind, dass sie dem Speicherort der Kopien entsprechen. AWS Marketplace aktualisiert außerdem die Beschreibung und den Beschränkungstext, um Käufern, die die Vorlage bereitstellen, die richtigen Werte klar zu machen.
Wenn Sie mehrere Ebenen verschachtelter Stacks haben, müssen alle verschachtelten Stacks, die zusätzliche verschachtelte Stacks erstellen, so konfiguriert werden, dass die TemplateURL Eigenschaft die Werte des Amazon S3-Bucket-Namens, der Amazon S3-Bucket-Region und des Amazon S3-Objektschlüssels dynamisch vom Root-Stack erbt. Bearbeiten Sie Ihre Stamm- und verschachtelten Stacks so, dass sie im Stammstapel den Wert des Template-Parameters festlegen und ihre jeweiligen Werte in der URL MPS3KeyPrefix überschreiben MPS3BucketNameMPS3BucketRegion, die in diesem verschachtelten Stack verwendet wird, um zusätzliche verschachtelte Stapel zu erstellen.
Die folgenden Vorlagenbeispiele veranschaulichen die TemplateURL Eigenschaften, die auf Vorlagenparameter verweisen, mithilfe der systemeigenen Funktion Fn: :Sub. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html
YAML-Beispiel:
AWSTemplateFormatVersion: '2010-09-09' Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Label: default: AWS Marketplace Parameters Parameters: - ImageId - MPS3BucketName - MPS3BucketRegion - MPS3KeyPrefix Parameters: ImageId: Type: AWS::EC2::Image::Id Default: ami-example1234567890 Description: The AMI that will be used to launch EC2 resources. MPS3BucketName: Type: String Default: sellerbucket Description: Name of the S3 bucket for your copy of the nested templates. MPS3BucketRegion: Type: String Default: us-east-1 Description: AWS Region where the S3 bucket for your copy of the nested templates is hosted. MPS3KeyPrefix: Type: String Default: sellerproductfolder/ Description: S3 key prefix that is used to simulate a folder for your copy of the nested templates. Resources: EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !Ref ImageId NestedStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: !Sub https://${MPS3BucketName}.s3.${MPS3BucketRegion}.${AWS::URLSuffix}/${MPS3KeyPrefix}nested-template.yaml
JSON-Beispiel:
{ "AWSTemplateFormatVersion": "2010-09-09", "Metadata": { "AWS::CloudFormation::Interface": { "ParameterGroups": [ { "Label": { "default": "AWS Marketplace Parameters" }, "Parameters": [ "ImageId", "MPS3BucketName", "MPS3BucketRegion", "MPS3KeyPrefix" ] } ] } }, "Parameters": { "ImageId": { "Type": "AWS::EC2::Image::Id", "Default": "ami-example1234567890", "Description": "The AMI that will be used to launch EC2 resources." }, "MPS3BucketName": { "Type": "String", "Default": "sellerbucket", "Description": "Name of the S3 bucket for your copy of the nested templates." }, "MPS3BucketRegion": { "Type": "String", "Default": "us-east-1", "Description": "AWS Region where the S3 bucket for your copy of the nested templates is hosted." }, "MPS3KeyPrefix": { "Type": "String", "Default": "sellerproductfolder/", "Description": "S3 key prefix that is used to simulate a folder for your copy of the nested templates." } }, "Resources": { "EC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Ref": "ImageId" } } }, "NestedStack": { "Type": "AWS::CloudFormation::Stack", "Properties": { "TemplateURL": { "Fn::Sub": "https://${MPS3BucketName}.s3.${MPS3BucketRegion}.${AWS::URLSuffix}/${MPS3KeyPrefix}nested-template.yaml" } } } } }
Anmerkung
AWS::CloudFormation: :Interface wird verwendet, um zu definieren, wie Parameter in der AWS CloudFormation Konsole gruppiert und sortiert werden, wenn Käufer Ihre Vorlage bereitstellen.
Eingabeparameter für die Vorlage
-
Die Eingabeparameter für die Vorlage dürfen keine AWS Anmeldeinformationen des AWS Marketplace Kunden enthalten (wie Passwörter, öffentliche Schlüssel, private Schlüssel oder Zertifikate).
-
Wählen Sie für vertrauliche Eingabeparameter wie Passwörter die
NoEchoEigenschaft aus und aktivieren Sie stärkere reguläre Ausdrücke. Legen Sie für andere Eingabeparameter die gängigsten Eingaben zusammen mit dem entsprechenden Hilfstext fest. -
Verwenden Sie CloudFormation Parametertypen für Eingaben, sofern verfügbar.
-
Verwenden Sie zum Gruppieren und Sortieren von Eingabeparametern
AWS::CloudFormation::Interface. -
Legen Sie keine Standardwerte für die folgenden Eingabeparameter fest:
Anmerkung
Kunden müssen diese als Eingabeparameter angeben.
-
Standard-CIDR-Bereiche, die den Zugriff auf RAS-Ports aus dem öffentlichen Internet ermöglichen
-
Standard-CIDR-Bereiche, die den Zugriff auf Datenbankverbindungsports aus dem öffentlichen Internet ermöglichen
-
Standardkennwörter für Benutzer oder Datenbanken
-
Netzwerk- und Sicherheitsparameter
-
Stellen Sie sicher, dass der Standard-SSH-Port (22) oder RDP-Port (3389) nicht für 0.0.0.0 geöffnet ist.
-
Anstelle der Verwendung der Standard-VPC (Virtual Private Cloud) empfehlen wir, eine VPC mit den entsprechenden ACLs (Access Control Lists, Zugriffskontrolllisten) und Sicherheitsgruppen zu erstellen.
-
Ihre Vorlage kann keine langfristigen Zugriffsschlüssel von Benutzern anfordern oder sie für den Zugriff auf AWS Ressourcen erstellen. Wenn Ihre AMI-Anwendung Zugriff auf die AWS Dienste im Konto des Käufers erfordert, muss sie die IAM-Rollen für Amazon EC2 verwenden.
-
Richten Sie IAM-Rollen und -Richtlinien so ein, dass die geringsten Rechte gewährt werden, und aktivieren Sie den Schreibzugriff nur, wenn dies unbedingt erforderlich ist. Wenn für Ihre Anwendung z. B. nur
S3:GET-,PUT- undDELETE-Operationen benötigt werden, geben Sie nur diese Aktionen an. Wir raten in diesem Fall von der Verwendung vonS3:*ab.
AWS Marketplace Validiert nach Erhalt Ihrer Vorlage die Produktkonfiguration und die Informationen und gibt Feedback für alle erforderlichen Änderungen.
Architektonisches Diagramm
Sie müssen für jede Vorlage ein Architekturdiagramm angeben. Weitere Informationen zur Diagrammerstellung finden Sie unter Was ist Architekturdiagramme?
Das Diagramm muss die folgenden Kriterien erfüllen:
-
Veranschaulichen Sie eine Standardbereitstellung auf AWS.
-
Stellen Sie logisch dar, wo Ressourcen eingesetzt werden. Beispielsweise befinden sich Ressourcen wie Amazon EC2-Instances im richtigen Subnetz.
-
Verwenden Sie die aktuellsten AWS Produktsymbole für jedes Produkt, das über die AWS-Service CloudFormation Vorlage bereitgestellt wird. Informationen zum Herunterladen der aktuellen Architektursymbole finden Sie unter AWS Architektursymbole
. -
Fügen Sie Metadaten für alle Dienste hinzu, die von der CloudFormation Vorlage bereitgestellt werden.
-
Schließt alle Netzwerke, VPCs und Subnetze ein, die von der CloudFormation Vorlage bereitgestellt werden.
-
Zeigen Sie Integrationspunkte an, einschließlich Ressourcen von Drittanbietern, APIs und lokalen, hybriden Ressourcen.
-
Diagramme müssen 1100 x 700 Pixel groß sein. Behalten Sie die ursprünglichen Diagrammproportionen bei, ohne sie zu dehnen oder zu beschneiden.
CloudFormation Vorlagen vorhandener Produkte konvertieren
Anmerkung
Dieser Abschnitt richtet sich an Verkäufer mit einem vorhandenen AMI mit einem CloudFormation Produkt, die das Produktladeformular zur Veröffentlichung ihrer Vorlagen verwendet haben und diese Vorlage nun aktualisieren möchten, ohne das Produktladeformular zu verwenden. Wenn Sie ein neues Produkt veröffentlichen, finden Sie weitere Informationen unter Vorbereiten Ihrer CloudFormation Vorlagen.
Wenn Sie CloudFormation auf der https://aws.amazon.com/marketplace/management/products/server
Wenn Sie die Self-Service-Oberfläche nutzen möchten, um ein vorhandenes Produkt zu aktualisieren, für dessen Veröffentlichung zuvor das Produktladeformular verwendet wurde, müssen Sie Änderungen an Ihrer vorhandenen CloudFormation Vorlage vornehmen.
In der folgenden Tabelle wird der Unterschied zwischen der Verwendung des Produktladeformulars und der Self-Service-Erfahrung beschrieben:
| Formular zum Laden des Produkts | Self-service Erfahrung | |
|---|---|---|
Wert der ImageId Immobilie für EC2-Ressourcen |
Verweist auf eine Zuordnungstabelle für Ihre AMI-ID. Weitere Informationen finden Sie unter Anforderungen für AMI-Details mithilfe des Produktladeformulars. | Verweist auf einen Vorlagenparameter für Ihre AMI-ID. Weitere Informationen finden Sie unter Anforderungen an AMI-Angaben. |
Wert der TemplateURL Eigenschaft für verschachtelte Stapel |
Muss eine feste Zeichenfolge sein und kann keine systeminternen Funktionen verwenden. | Kann mithilfe intrinsischer Funktionen dynamisch sein. Muss auf eine Reihe von Vorlagenparametern verweisen. Weitere Informationen finden Sie unter Anforderungen für verschachtelte Stack-Vorlagen. |
Die folgenden Beispielvorlagen veranschaulichen ein Beispiel für ein vorhandenes Produkt, das das Produktladeformular verwendet hat, um die Vorlage zu veröffentlichen. In diesem Beispiel lautet die AMI-ID ami-example123456 und eine verschachtelte Vorlage befindet sich im S3-Bucket eines Verkäufers am Standorthttps://sellerbucket.s3.us-east-1.amazonaws.com/sellerproductfolder/nested-template.yaml.
YAML-Beispiel, das mit dem Produktladeformular veröffentlicht wurde:
AWSTemplateFormatVersion: '2010-09-09' Mappings: RegionMap: us-east-1: AMI: ami-example123456 Resources: EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap - RegionMap - !Ref AWS::Region - AMI NestedStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: https://sellerbucket.s3.us-east-1.amazonaws.com/sellerproductfolder/nested-template.yaml
JSON-Beispiel, das mit dem Produktladeformular veröffentlicht wurde:
{ "AWSTemplateFormatVersion": "2010-09-09", "Mappings": { "RegionMap": { "us-east-1": { "AMI": "ami-example123456" } } }, "Resources": { "EC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Fn::FindInMap": [ "RegionMap", { "Ref": "AWS::Region" }, "AMI" ] } } }, "NestedStack": { "Type": "AWS::CloudFormation::Stack", "Properties": { "TemplateURL": "https://sellerbucket.s3.us-east-1.amazonaws.com/sellerproductfolder/nested-template.yaml" } } } }
Die folgenden Vorlagenbeispiele veranschaulichen die Änderungen, die erforderlich sind, um das Produkt mithilfe der Self-Service-Oberfläche zu aktualisieren.
Ein YAML-Beispiel, das zusammen mit der Self-Service-Erfahrung veröffentlicht wurde:
AWSTemplateFormatVersion: '2010-09-09' Metadata: AWS::CloudFormation::Interface: ParameterGroups: - Label: default: AWS Marketplace Parameters Parameters: - ImageId - MPS3BucketName - MPS3BucketRegion - MPS3KeyPrefix Parameters: ImageId: Type: AWS::EC2::Image::Id Default: ami-example123456 Description: The AMI that will be used to launch EC2 resources. MPS3BucketName: Type: String Default: sellerbucket Description: Name of the S3 bucket for your copy of the nested templates. MPS3BucketRegion: Type: String Default: us-east-1 Description: AWS Region where the S3 bucket for your copy of the nested templates is hosted. MPS3KeyPrefix: Type: String Default: sellerproductfolder/ Description: S3 key prefix that is used to simulate a folder for your copy of the nested templates. Resources: EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !Ref ImageId NestedStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: !Sub https://${MPS3BucketName}.s3.${MPS3BucketRegion}.${AWS::URLSuffix}/${MPS3KeyPrefix}nested-template.yaml
JSON-Beispiel, das mit der Self-Service-Erfahrung veröffentlicht wurde:
{ "AWSTemplateFormatVersion": "2010-09-09", "Metadata": { "AWS::CloudFormation::Interface": { "ParameterGroups": [ { "Label": { "default": "AWS Marketplace Parameters" }, "Parameters": [ "ImageId", "MPS3BucketName", "MPS3BucketRegion", "MPS3KeyPrefix" ] } ] } }, "Parameters": { "ImageId": { "Type": "AWS::EC2::Image::Id", "Default": "ami-example123456", "Description": "The AMI that will be used to launch EC2 resources." }, "MPS3BucketName": { "Type": "String", "Default": "sellerbucket", "Description": "Name of the S3 bucket for your copy of the nested templates." }, "MPS3BucketRegion": { "Type": "String", "Default": "us-east-1", "Description": "AWS Region where the S3 bucket for your copy of the nested templates is hosted." }, "MPS3KeyPrefix": { "Type": "String", "Default": "sellerproductfolder/", "Description": "S3 key prefix that is used to simulate a folder for your copy of the nested templates." } }, "Resources": { "EC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Ref": "ImageId" } } }, "NestedStack": { "Type": "AWS::CloudFormation::Stack", "Properties": { "TemplateURL": { "Fn::Sub": "https://${MPS3BucketName}.s3.${MPS3BucketRegion}.${AWS::URLSuffix}/${MPS3KeyPrefix}nested-template.yaml" } } } } }