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.
Argomenti
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.
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./aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
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-bodyfile://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 esempio
ami-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 esempio
i-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 esempio
my-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 esempio
vol-3cdd3f56
. AWS::EC2::VPC::Id
-
Un VPC ID, ad esempio
vpc-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 esempio
ami-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 esempio
i-1e731a32, i-1e731a34
. List<AWS::EC2::SecurityGroup::GroupName>
-
Una matrice di nomi di gruppi VPC di sicurezza predefiniti, ad esempio
my-sg-abc, my-sg-def
. List<AWS::EC2::SecurityGroup::Id>
-
Una matrice di gruppi di sicurezzaIDs, ad esempio
sg-a123fd85, sg-b456fd85
. List<AWS::EC2::Subnet::Id>
-
Un array di sottoretiIDs, ad esempio
subnet-123a351e, subnet-456b351e
. List<AWS::EC2::Volume::Id>
-
Una matrice di EBS volumi AmazonIDs, ad esempio
vol-3cdd3f56, vol-4cdd3f56
. List<AWS::EC2::VPC::Id>
-
Una serie di VPCIDs, ad esempio
vpc-a123baa3, vpc-b456baa3
. List<AWS::Route53::HostedZone::Id>
-
Una serie di zone ospitate su Amazon Route 53IDs, ad esempio
Z23YXV4OVPL04A, 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>>
oAWS::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.