Fai riferimento alle risorse esistenti e ai parametri di Systems Manager con i CloudFormation tipi di parametri forniti - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Fai riferimento alle risorse esistenti e ai parametri di Systems Manager con i CloudFormation tipi di parametri forniti

Durante la creazione del modello, è possibile creare parametri che richiedono agli utenti di inserire identificatori di AWS risorse esistenti o parametri di Systems Manager utilizzando i tipi di parametri specializzati forniti da CloudFormation.

Panoramica

In CloudFormation, è possibile utilizzare i parametri per personalizzare gli stack fornendo valori di input durante la creazione o l'aggiornamento degli stack. Questa funzionalità rende i modelli riutilizzabili e flessibili in diversi scenari.

I parametri sono definiti nella Parameters sezione di un CloudFormation modello. Ogni parametro ha un nome e un tipo e può avere impostazioni aggiuntive come un valore predefinito e valori consentiti. Per ulteriori informazioni, consulta CloudFormation modello Parameters sintassi.

Il tipo di parametro determina il tipo di valore di input che il parametro può accettare. Ad esempio, accetta Number solo valori numerici, mentre String accetta l'immissione di testo.

CloudFormation fornisce diversi tipi di parametri aggiuntivi che è possibile utilizzare nei modelli per fare riferimento alle AWS risorse esistenti e ai parametri di Systems Manager.

Questi tipi di parametri si dividono in due categorie:

  • AWS-tipi di parametri specifici: CloudFormation fornisce una serie di tipi di parametri che aiutano a catturare valori non validi durante la creazione o l'aggiornamento di uno stack. Quando utilizzi questi tipi di parametri, chiunque utilizzi il tuo modello deve specificare valori validi dalla regione Account AWS e dalla regione in cui sta creando lo stack.

    Se utilizzano AWS Management Console, CloudFormation fornisce un elenco precompilato di valori esistenti del proprio account e della propria regione. In questo modo, l'utente non deve ricordare e digitare correttamente un nome o un ID specifico. Invece, selezionano semplicemente i valori da un elenco a discesa. In alcuni casi, possono anche cercare valori per ID, nome o valore del Name tag.

  • Tipi di parametri di Systems Manager: fornisce CloudFormation anche tipi di parametri che corrispondono ai parametri esistenti in Systems Manager Parameter Store. Quando si utilizzano questi tipi di parametri, chiunque utilizzi il modello deve specificare una chiave Parameter Store come valore del tipo di parametro Systems Manager, CloudFormation quindi recuperare il valore più recente da Parameter Store da utilizzare nel proprio stack. Ciò può essere utile quando è necessario aggiornare frequentemente le applicazioni con nuovi valori di proprietà, come la nuova Amazon Machine Image (AMI)IDs. Per informazioni su Parameter Store, vedere Systems Manager Parameter Store.

Una volta definiti i parametri nella Parameters sezione, è possibile fare riferimento ai valori dei parametri in tutto il CloudFormation modello utilizzando la Ref funzione.

Esempio

L'esempio seguente mostra un modello che utilizza i seguenti tipi di parametri.

  • AWS::EC2::VPC::Id

  • AWS::EC2::Subnet::Id

  • AWS::EC2::KeyPair::KeyName

  • AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>

Per creare uno stack da questo modello, devi specificare un ID, un VPC ID di sottorete e un nome di key pair esistenti dal tuo account. È inoltre possibile specificare una chiave Parameter Store esistente che faccia riferimento all'AMIID desiderato o mantenere il valore predefinito di. /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 Questo parametro pubblico è un alias per l'AMIID regionale per la versione più recente di Amazon Linux 2AMI. Per ulteriori informazioni sui parametri pubblici, consulta Discovering public parameters in Parameter Store nella Guida per l'AWS Systems Manager utente.

JSON

{ "Parameters": { "VpcId": { "Description": "ID of an existing Virtual Private Cloud (VPC).", "Type": "AWS::EC2::VPC::Id" }, "PublicSubnetId": { "Description": "ID of an existing public subnet within the specified VPC.", "Type": "AWS::EC2::Subnet::Id" }, "KeyName": { "Description": "Name of an existing EC2 key pair to enable SSH access to the instance.", "Type": "AWS::EC2::KeyPair::KeyName" }, "AMIId": { "Description": "Name of a Parameter Store parameter that stores the ID of the Amazon Machine Image (AMI).", "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>", "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" } }, "Resources": { "InstanceSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "Enable SSH access via port 22", "VpcId": { "Ref": "VpcId" }, "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "CidrIp": "0.0.0.0/0" } ] } }, "Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "KeyName": { "Ref": "KeyName" }, "ImageId": { "Ref": "AMIId" }, "NetworkInterfaces": [ { "AssociatePublicIpAddress": "true", "DeviceIndex": "0", "SubnetId": { "Ref": "PublicSubnetId" }, "GroupSet": [{ "Ref": "InstanceSecurityGroup" }] } ] } } }, "Outputs": { "InstanceId": { "Value": { "Ref": "Ec2Instance" } } } }

YAML

Parameters: VpcId: Description: ID of an existing Virtual Private Cloud (VPC). Type: 'AWS::EC2::VPC::Id' PublicSubnetId: Description: ID of an existing public subnet within the specified VPC. Type: 'AWS::EC2::Subnet::Id' KeyName: Description: Name of an existing EC2 KeyPair to enable SSH access to the instance. Type: 'AWS::EC2::KeyPair::KeyName' AMIId: Description: Name of a Parameter Store parameter that stores the ID of the Amazon Machine Image (AMI). Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' Resources: InstanceSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable SSH access via port 22 VpcId: !Ref VpcId SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0 Ec2Instance: Type: 'AWS::EC2::Instance' Properties: KeyName: !Ref KeyName ImageId: !Ref AMIId NetworkInterfaces: - AssociatePublicIpAddress: "true" DeviceIndex: "0" SubnetId: !Ref PublicSubnetId GroupSet: - !Ref InstanceSecurityGroup Outputs: InstanceId: Value: !Ref Ec2Instance

AWS CLI comando per creare lo stack

Quanto segue create-stackil comando crea uno stack basato sul modello di esempio.

aws cloudformation create-stack --stack-name MyStack \ --template-body file://sampletemplate.json \ --parameters \ ParameterKey="VpcId",ParameterValue="vpc-a123baa3" \ ParameterKey="PublicSubnetId",ParameterValue="subnet-123a351e" \ ParameterKey="KeyName",ParameterValue="MyKeyName" \ ParameterKey="AMIId",ParameterValue="MyParameterKey"

Per utilizzare un tipo di parametro che accetta un elenco di stringhe, ad esempioList<AWS::EC2::Subnet::Id>, è necessario evitare le virgole all'interno di ParameterValue con una doppia barra rovesciata, come illustrato nell'esempio seguente.

--parameters ParameterKey="SubnetIDs",ParameterValue="subnet-5ea0c127\\,subnet-6194ea3b\\,subnet-c87f2be0"

Considerazioni

Si consiglia vivamente di utilizzare riferimenti dinamici per limitare l'accesso a definizioni di configurazione riservate, come le credenziali di terze parti. Per ulteriori informazioni, consulta Ottieni valori archiviati in altri servizi utilizzando riferimenti dinamici.

Se desideri consentire agli utenti del modello di specificare valori diversi Account AWS, non utilizzare tipi di parametri AWS specifici. Definite invece parametri di tipo String oCommaDelimitedList.

Ci sono alcune cose da tenere a mente con i tipi di parametri di Systems Manager:

  • È possibile visualizzare i valori dei parametri risolti nella scheda Parametri dello stack nella console o eseguendo describe-stacks o describe-change-set. Ricorda che questi valori vengono impostati quando lo stack viene creato o aggiornato, quindi potrebbero essere diversi dai valori più recenti in Parameter Store.

  • Per gli aggiornamenti dello stack, quando utilizzate l'opzione Use existing value (o impostata su UsePreviousValue true), ciò significa che desiderate continuare a utilizzare la stessa chiave Parameter Store, non il relativo valore. CloudFormation recupera sempre il valore più recente.

  • Se specificate valori consentiti o altri vincoli, li CloudFormation convalida in base alle chiavi dei parametri specificate, ma non ai relativi valori. È necessario convalidare i valori nel Parameter Store stesso.

  • Quando crei o aggiorni pile e crei set di modifiche, CloudFormation utilizza qualsiasi valore esistente in Parameter Store in quel momento. Se un parametro specificato non esiste in Parameter Store sotto quello del chiamante Account AWS, CloudFormation restituisce un errore di convalida.

  • Quando si esegue un set di modifiche, CloudFormation utilizza i valori specificati nel set di modifiche. Esamina questi valori prima di eseguire il set di modifiche perché potrebbero variare in Archivio parametri tra il momento in cui crei il set di modifiche e l'esecuzione dello stesso.

  • Per i parametri Parameter Store memorizzati nello stesso Account AWS, è necessario fornire il nome del parametro. Per i parametri Parameter Store condivisi da un altro utente Account AWS, è necessario fornire il parametro completoARN.

Tipi AWS di parametri specifici supportati

CloudFormation supporta i seguenti tipi AWS specifici:

AWS::EC2::AvailabilityZone::Name

Zona di disponibilità, ad esempio us-west-2a.

AWS::EC2::Image::Id

Un ID EC2 immagine Amazon, ad esempioami-0ff8a91507f77f867. Tieni presente che la CloudFormation console non mostra un elenco a discesa di valori per questo tipo di parametro.

AWS::EC2::Instance::Id

Un ID di EC2 istanza Amazon, ad esempioi-1e731a32.

AWS::EC2::KeyPair::KeyName

Un nome per una coppia di EC2 chiavi Amazon.

AWS::EC2::SecurityGroup::GroupName

Un nome VPC di gruppo di sicurezza predefinito, ad esempiomy-sg-abc.

AWS::EC2::SecurityGroup::Id

ID del gruppo di sicurezza, ad esempio sg-a123fd85.

AWS::EC2::Subnet::Id

ID della sottorete, ad esempio subnet-123a351e.

AWS::EC2::Volume::Id

Un ID di EBS volume Amazon, ad esempiovol-3cdd3f56.

AWS::EC2::VPC::Id

Un VPC ID, ad esempiovpc-a123baa3.

AWS::Route53::HostedZone::Id

ID della zona ospitata Amazon Route 53, ad esempio Z23YXV4OVPL04A.

List<AWS::EC2::AvailabilityZone::Name>

Matrice di zone di disponibilità per una Regione, ad esempio us-west-2a, us-west-2b.

List<AWS::EC2::Image::Id>

Una serie di EC2 immagini AmazonIDs, ad esempioami-0ff8a91507f77f867, ami-0a584ac55a7631c0c. Tieni presente che la CloudFormation console non mostra un elenco a discesa di valori per questo tipo di parametro.

List<AWS::EC2::Instance::Id>

Una serie di EC2 istanze AmazonIDs, ad esempioi-1e731a32, i-1e731a34.

List<AWS::EC2::SecurityGroup::GroupName>

Una matrice di nomi di gruppi VPC di sicurezza predefiniti, ad esempiomy-sg-abc, my-sg-def.

List<AWS::EC2::SecurityGroup::Id>

Una matrice di gruppi di sicurezzaIDs, ad esempiosg-a123fd85, sg-b456fd85.

List<AWS::EC2::Subnet::Id>

Un array di sottoretiIDs, ad esempiosubnet-123a351e, subnet-456b351e.

List<AWS::EC2::Volume::Id>

Una matrice di EBS volumi AmazonIDs, ad esempiovol-3cdd3f56, vol-4cdd3f56.

List<AWS::EC2::VPC::Id>

Una serie di VPCIDs, ad esempiovpc-a123baa3, vpc-b456baa3.

List<AWS::Route53::HostedZone::Id>

Una serie di zone ospitate su Amazon Route 53IDs, ad esempioZ23YXV4OVPL04A, Z23YXV4OVPL04B.

Tipi di parametri Systems Manager supportati

CloudFormation supporta i seguenti tipi di parametri Systems Manager:

AWS::SSM::Parameter::Name

Nome di una chiave di parametro Systems Manager. Utilizzate questo tipo di parametro solo per verificare che esista un parametro richiesto. CloudFormation non recupererà il valore effettivo associato al parametro.

AWS::SSM::Parameter::Value<String>

Parametro Systems Manager il cui valore è una stringa. Corrisponde al tipo di parametro String in Archivio parametri.

AWS::SSM::Parameter::Value<List<String>> o AWS::SSM::Parameter::Value<CommaDelimitedList>

Parametro Systems Manager il cui valore è un elenco di stringhe. Corrisponde al tipo di parametro StringList in Archivio parametri.

AWS::SSM::Parameter::Value<AWS-specific parameter type>

Un parametro Systems Manager il cui valore è un tipo AWS di parametro specifico.

L'esempio seguente specifica il tipo AWS::EC2::KeyPair::KeyName:

  • AWS::SSM::Parameter::Value<AWS::EC2::KeyPair::KeyName>

AWS::SSM::Parameter::Value<List<AWS-specific parameter type>>

Un parametro Systems Manager il cui valore è un elenco di tipi AWS di parametri specifici.

L'esempio seguente specifica un elenco di tipi AWS::EC2::KeyPair::KeyName:

  • AWS::SSM::Parameter::Value<List<AWS::EC2::KeyPair::KeyName>>

Tipi di parametri di Systems Manager non supportati

CloudFormation non supporta il seguente tipo di parametro Systems Manager:

  • Elenchi di tipi di parametri di Systems Manager, ad esempio: List<AWS::SSM::Parameter::Value<String>>

Inoltre, CloudFormation non supporta la definizione dei parametri del modello come tipi di parametri SecureString Systems Manager. Tuttavia, è possibile specificare stringhe sicure come valori dei parametri per determinate risorse. Per ulteriori informazioni, consulta Ottieni valori archiviati in altri servizi utilizzando riferimenti dinamici.