Come fare riferimento alle risorse dei moduli nei modelli CloudFormation
Nei modelli CloudFormation è spesso necessario impostare le proprietà su una risorsa in base al nome o alla proprietà di un’altra risorsa. Per ulteriori informazioni, consulta Riferimento delle risorse.
Per fare riferimento a una risorsa contenuta in un modulo nel modello CloudFormation, devi combinare due nomi logici:
-
Il nome logico che hai dato al modulo stesso quando lo hai incluso nel modello.
-
Il nome logico della risorsa specifica all’interno del modulo.
Puoi combinare questi due nomi logici utilizzando o meno un punto (.) tra di loro. Ad esempio, se il nome logico del modulo è MyModule e il nome logico della risorsa è MyBucket, puoi fare riferimento a tale risorsa come MyModule.MyBucket o MyModuleMyBucket.
Per trovare i nomi logici delle risorse all’interno di un modulo, puoi consultare lo schema del modulo, disponibile nel registro CloudFormation o utilizzando l’operazione DescribeType. Lo schema elenca tutte le risorse e i relativi nomi logici che fanno parte del modulo.
Una volta ottenuto il nome logico completo, puoi utilizzare funzioni come GetAtt e Ref di CloudFormation per accedere ai valori delle proprietà sulle risorse del modulo.
Mettiamo, ad esempio, che tu abbia un modulo My::S3::SampleBucket::MODULE che contiene una risorsa AWS::S3::Bucket con il nome logico S3Bucket. Per fare riferimento al nome di questo bucket utilizzando la funzione Ref, combina il nome del modulo nel modello (MyBucket) con il nome logico della risorsa nel modulo (S3Bucket). Il nome logico completo è MyBucket.S3Bucket o MyBucketS3Bucket.
Modello di esempio
Il modello di esempio seguente crea un bucket S3 utilizzando il modulo My::S3::SampleBucket::MODULE. Inoltre, crea una coda Amazon SQS e ne imposta il nome in modo che sia lo stesso del nome del bucket del modulo. Inoltre, il modello genera il nome della risorsa Amazon (ARN) del bucket S3 creato.
# Template that uses My::S3::SampleBucket::MODULE Parameters: BucketName: Description: Name for your sample bucket Type: String Resources: MyBucket: Type: My::S3::SampleBucket::MODULE Properties: BucketName: !Ref BucketName exampleQueue: Type: AWS::SQS::Queue Properties: QueueName: !Ref MyBucket.S3Bucket Outputs: BucketArn: Value: !GetAtt MyBucket.S3Bucket.Arn