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à.
Resources
La Resources
sezione è una sezione obbligatoria di primo livello in un CloudFormation modello. Dichiara le AWS risorse che desideri CloudFormation fornire e configurare come parte del tuo stack.
Sintassi
La Resources
sezione utilizza la seguente sintassi:
JSON
"Resources" : { "
LogicalResourceName1
" : { "Type" : "AWS::ServiceName::ResourceType
", "Properties" : {"PropertyName1" : "PropertyValue1"
,...
} }, "LogicalResourceName2
" : { "Type" : "AWS::ServiceName::ResourceType
", "Properties" : {"PropertyName1" : "PropertyValue1"
,...
} } }
YAML
Resources:
LogicalResourceName1
: Type: AWS::ServiceName::ResourceType
Properties:PropertyName1: PropertyValue1
...
LogicalResourceName2
: Type: AWS::ServiceName::ResourceType
Properties:PropertyName1: PropertyValue1
...
ID logico (chiamato anche nome logico)
All'interno di un CloudFormation modello, le risorse sono identificate dai rispettivi nomi di risorse logiche. Questi nomi devono essere alfanumerici (a-zA-Z0-9) e univoci all'interno del modello. I nomi logici vengono utilizzati per fare riferimento a risorse provenienti da altre sezioni del modello.
Tipo di risorsa
Ogni risorsa deve avere un Type
attributo che definisce il tipo di AWS
risorsa. L'Type
attributo ha il formatoAWS::
. Ad esempio, l'ServiceName
::ResourceType
Type
attributo per un bucket Amazon S3 è. AWS::S3::Bucket
Per l'elenco completo dei tipi di risorse supportati, consulta la. AWS riferimento ai tipi di risorse e proprietà
Proprietà delle risorse
Le proprietà delle risorse sono opzioni aggiuntive che è possibile specificare per definire i dettagli di configurazione per il tipo di risorsa specifico. Alcune proprietà sono obbligatorie, mentre altre sono opzionali. Alcune proprietà hanno valori predefiniti, pertanto la specificazione di tali proprietà è facoltativa.
Per informazioni dettagliate sulle proprietà supportate per ogni tipo di risorsa, vedere gli argomenti inAWS riferimento ai tipi di risorse e proprietà.
I valori delle proprietà possono essere stringhe letterali, elenchi di stringhe, valori booleani, riferimenti dinamici, riferimenti a parametri, pseudo riferimenti o valori restituiti da una funzione. Gli esempi seguenti mostrano come dichiarare diversi tipi di valori di proprietà:
JSON
"Properties" : { "
String
" : "A string value
", "Number
" :123
, "LiteralList
" : [ "first-value
", "second-value
" ], "Boolean
" :true
}
YAML
Properties:
String
:A string value
Number
:123
LiteralList
: -first-value
-second-value
Boolean
:true
ID fisico
Oltre all'ID logico, alcune risorse hanno anche un ID fisico, che è il nome effettivamente assegnato a quella risorsa, ad esempio un ID di EC2 istanza o un nome di bucket S3. Usa quello fisico IDs per identificare le risorse al di fuori dei CloudFormation modelli, ma solo dopo che le risorse sono state create. Ad esempio, supponete di assegnare a una risorsa di EC2 istanza un ID logico diMyEC2Instance
. Quando CloudFormation crea l'istanza, genera e assegna CloudFormation automaticamente un ID fisico (ad esempioi-1234567890abcdef0
) all'istanza. Puoi utilizzare questo ID fisico per identificare l'istanza e visualizzarne le proprietà (come il DNS nome) utilizzando la EC2 console Amazon.
Per i bucket Amazon S3 e molte altre risorse, genera CloudFormation automaticamente un nome fisico univoco per la risorsa se non ne specifichi uno esplicitamente. Questo nome fisico si basa su una combinazione del nome dello CloudFormation stack, del nome logico della risorsa specificato nel CloudFormation modello e di un ID univoco. Ad esempio, se hai un bucket Amazon S3 con il nome logico MyBucket
in uno stack denominatoMyStack
, CloudFormation potresti denominare il bucket con il seguente nome fisico. MyStack-MyBucket-abcdefghijk1
Per le risorse che supportano nomi personalizzati, puoi assegnare i tuoi nomi fisici per aiutarti a identificare rapidamente le risorse. Ad esempio, puoi denominare un bucket S3 che memorizza i log con il nome MyPerformanceLogs
. Per ulteriori informazioni, consulta Tipo di nome.
Risorse di riferimento
Spesso è necessario impostare le proprietà di una risorsa in base al nome o alla proprietà di un'altra risorsa. Ad esempio, potresti creare un'EC2istanza che utilizza gruppi EC2 di sicurezza o una CloudFront distribuzione supportata da un bucket S3. Tutte queste risorse possono essere create nello stesso CloudFormation modello.
CloudFormation fornisce funzioni intrinseche che è possibile utilizzare per fare riferimento ad altre risorse e alle relative proprietà. Queste funzioni consentono di creare dipendenze tra le risorse e di passare valori da una risorsa all'altra.
La funzione Ref
La Ref
funzione viene comunemente utilizzata per recuperare una proprietà identificativa delle risorse definite all'interno dello stesso CloudFormation modello. Ciò che restituisce dipende dal tipo di risorsa. Per la maggior parte delle risorse, restituisce il nome fisico della risorsa. Tuttavia, per alcuni tipi di risorse, potrebbe restituire un valore diverso, ad esempio un indirizzo IP per una AWS::EC2::EIP
risorsa o un Amazon Resource Name (ARN) per un SNS argomento Amazon.
Gli esempi seguenti mostrano come utilizzare la Ref
funzione nelle proprietà. In ognuno di questi esempi, la Ref
funzione restituirà il nome effettivo della LogicalResourceName
risorsa dichiarata altrove nel modello. L'esempio di !Ref
sintassi dell'YAMLesempio è solo un modo più breve per scrivere la Ref
funzione.
JSON
"Properties" : { "
PropertyName
" : { "Ref" : "LogicalResourceName
" } }
YAML
Properties:
PropertyName1
: Ref:LogicalResourceName
PropertyName2
: !RefLogicalResourceName
Per informazioni più dettagliate sulla Ref
funzione, vedere Funzione Ref.
La funzione Fn::GetAtt
La Ref
funzione è utile se il parametro o il valore restituito per una risorsa è esattamente quello desiderato. Tuttavia, potrebbero essere necessari altri attributi di una risorsa. Ad esempio, se desideri creare una CloudFront distribuzione con un'origine S3, devi specificare la posizione del bucket utilizzando un indirizzo in DNS stile. Una serie di risorse dispongono di attributi aggiuntivi i cui valori possono essere utilizzati nel modello. Per ottenere questi attributi, si utilizza la funzione. Fn::GetAtt
Gli esempi seguenti mostrano come utilizzare la GetAtt
funzione nelle proprietà. La Fn::GetAtt
funzione accetta due parametri, il nome logico della risorsa e il nome dell'attributo da recuperare. L'esempio di !GetAtt
sintassi dell'YAMLesempio è solo un modo più breve per scrivere la GetAtt
funzione.
JSON
"Properties" : { "
PropertyName
" : { "Fn::GetAtt" : [ "LogicalResourceName
", "AttributeName
" ] } }
YAML
Properties:
PropertyName1
: Fn::GetAtt: -LogicalResourceName
-AttributeName
PropertyName2
: !GetAttLogicalResourceName
.AttributeName
Per informazioni più dettagliate sulla GetAtt
funzione, vedere Fn::. GetAtt
Esempi
Gli esempi seguenti illustrano come dichiarare le risorse e come i CloudFormation modelli possono fare riferimento ad altre risorse definite nello stesso modello e alle risorse esistenti. AWS
Argomenti
Dichiarazione di una singola risorsa con un nome personalizzato
L'esempio seguente dichiara una singola risorsa di tipo AWS::S3::Bucket
con il nome logico. MyBucket
La BucketName
proprietà è impostata su amzn-s3-demo-bucket
, che deve essere sostituito con il nome desiderato per il bucket S3.
Se utilizzi questa dichiarazione di risorse per creare uno stack, CloudFormation creerà un bucket Amazon S3 con impostazioni predefinite. Per altre risorse, come un'EC2istanza Amazon o un gruppo Auto Scaling, sono CloudFormation necessarie ulteriori informazioni.
JSON
{ "Resources": { "MyBucket": { "Type": "AWS::S3::Bucket", "Properties": { "BucketName": "
amzn-s3-demo-bucket
" } } } }
YAML
Resources: MyBucket: Type: 'AWS::S3::Bucket' Properties: BucketName:
amzn-s3-demo-bucket
Fare riferimento ad altre risorse con la funzione Ref
Gli esempi seguenti mostrano una dichiarazione di risorse che definisce un'EC2istanza e un gruppo di sicurezza. La Ec2Instance
risorsa fa riferimento alla InstanceSecurityGroup
risorsa come parte della sua SecurityGroupIds
proprietà utilizzando la Ref
funzione. Include anche un gruppo di sicurezza esistente (sg-12a4c434
) che non è dichiarato nel modello. Utilizza stringhe letterali per fare riferimento alle risorse AWS
esistenti.
JSON
{ "Resources": { "Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "SecurityGroupIds": [ { "Ref": "InstanceSecurityGroup" }, "sg-12a4c434" ], "KeyName": "MyKey", "ImageId": "ami-1234567890abcdef0" } }, "InstanceSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "Enable SSH access via port 22", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "CidrIp": "0.0.0.0/0" } ] } } } }
YAML
Resources: Ec2Instance: Type: 'AWS::EC2::Instance' Properties: SecurityGroupIds: - !Ref InstanceSecurityGroup - sg-12a4c434 KeyName: MyKey ImageId: ami-1234567890abcdef0 InstanceSecurityGroup: Type: 'AWS::EC2::SecurityGroup' Properties: GroupDescription: Enable SSH access via port 22 SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0
Riferimento agli attributi delle risorse utilizzando la funzione Fn::GetAtt
Gli esempi seguenti mostrano una dichiarazione di risorsa che definisce una risorsa di CloudFront distribuzione e un bucket S3. La MyDistribution
risorsa specifica il DNS nome della MyBucket
risorsa utilizzando la Fn::GetAtt
funzione per ottenere l'attributo del bucket. DomainName
Noterai che la Fn::GetAtt
funzione elenca i suoi due parametri in un array. Per le funzioni che richiedono più parametri, puoi utilizzare un array per specificare i parametri.
JSON
{ "Resources": { "MyBucket": { "Type": "AWS::S3::Bucket" }, "MyDistribution": { "Type": "AWS::CloudFront::Distribution", "Properties": { "DistributionConfig": { "Origins": [ { "DomainName": { "Fn::GetAtt": [ "MyBucket", "DomainName" ] }, "Id": "MyS3Origin", "S3OriginConfig": {} } ], "Enabled": "true", "DefaultCacheBehavior": { "TargetOriginId": "MyS3Origin", "ForwardedValues": { "QueryString": "false" }, "ViewerProtocolPolicy": "allow-all" } } } } } }
YAML
Resources: MyBucket: Type: 'AWS::S3::Bucket' MyDistribution: Type: 'AWS::CloudFront::Distribution' Properties: DistributionConfig: Origins: - DomainName: !GetAtt - MyBucket - DomainName Id: MyS3Origin S3OriginConfig: {} Enabled: 'true' DefaultCacheBehavior: TargetOriginId: MyS3Origin ForwardedValues: QueryString: 'false' ViewerProtocolPolicy: allow-all