AWS RDS · 6 min read · Feb 04, 2026
Utilizzare Cloudformation per creare un'istanza RDS MySql su AWS

Il Servizio di Database Relazionali (AWS RDS) è un servizio web che semplifica la configurazione e l’operazione di un database relazionale nel cloud. Per comprendere meglio RDS cerca l’articolo “Come configurare un’istanza RDS MySql (Database Relazionale MySql) su AWS”.
AWS CloudFormation ci consente di utilizzare linguaggi di programmazione (yaml/json) o un semplice file di testo per modellare e fornire tutte le risorse necessarie per le nostre applicazioni. Questo ci fornisce una singola fonte di verità per le nostre risorse AWS.
In questo articolo, vedremo i passaggi per creare un’istanza RDS MySql utilizzando Cloudformation Stack.
Requisiti
- Account AWS (Crea se non ne hai uno).
- Comprensione di base di Cloudformation Stack.
- Comprensione di base dell’istanza RDS MySql (Database Relazionale MySql) su AWS.
Cosa faremo?
- Accedi ad AWS.
- Crea un’istanza RDS MySql utilizzando Cloudformation Stack
Accedi ad AWS
- Clicca qui per andare alla pagina di accesso di AWS.
Quando clicchiamo sul link sopra, vedremo una pagina web come segue dove siamo tenuti ad accedere utilizzando i nostri dettagli di accesso.

Una volta effettuato l’accesso ad AWS con successo, vedremo la console principale con tutti i servizi elencati.

Crea un’istanza RDS MySql utilizzando Cloudformation.
Prima di creare un’istanza utilizzando Cloudformation Stack, copia il codice dal seguente blocco o scarica il modello da qui e salvalo sul tuo computer locale.
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Questo stack crea un'istanza RDS MySql 5.7
Parameters:
Owner:
Description: Inserisci il nome del proprietario per questo Stack.
Type: String
Default: Nome
VPC:
Description: Seleziona VPC tra le VPC disponibili nel tuo account.
Type: AWS::EC2::VPC::Id
PrivateSubnet1:
Description: Seleziona Subnet Privata 1.
Type: AWS::EC2::Subnet::Id
PrivateSubnet2:
Description: Seleziona Subnet Privata 2.
Type: AWS::EC2::Subnet::Id
PrivateSubnet3:
Description: Seleziona Subnet Privata 3.
Type: AWS::EC2::Subnet::Id
MasterUsername:
Description: Nome dell'amministratore del database.
Type: String
Default: rdsroot
MasterUserPassword:
NoEcho: 'true'
Description: Password dell'amministratore del database.
Type: String
MinLength: '8'
AllowedPattern: "[a-zA-Z0-9!?]*"
ConstraintDescription: Deve contenere solo lettere maiuscole e minuscole e numeri
BackupRetentionPeriod:
Description: Inserisci il periodo di conservazione del backup in giorni.
Type: Number
Default: '5'
MultiAvailabilityZone:
Description: Vuoi abilitare più zone di disponibilità?
Type: String
Default: 'true'
AllowedValues:
- 'true'
- 'false'
TcpPort:
Description: Inserisci il numero di porta TCP di ascolto RDS.
Type: Number
Default: '3306'
PreferredBackupWindow:
Description: Inserisci l'orario della finestra di backup preferita.
Type: String
Default: 15:00-17:00
PreferredMaintenanceWindow:
Description: Inserisci l'orario della finestra di manutenzione preferita.
Type: String
Default: Sun:18:00-Sun:22:00
AllocatedStorage:
Default: '15'
Description: Inserisci la dimensione del database (Gb)
Type: Number
MinValue: '5'
MaxValue: '6144'
ConstraintDescription: Deve essere compreso tra 5-6144
SnapshotOnDelete:
Description: Vuoi creare uno snapshot alla cancellazione dell'istanza?
Type: String
Default: 'true'
AllowedValues:
- 'true'
- 'false'
AutoMinorVersionUpgrade:
Description: Vuoi consentire l'aggiornamento automatico della versione minore?
Type: String
Default: 'true'
AllowedValues:
- 'true'
- 'false'
InstanceType:
Description: Seleziona il tipo di istanza.
Type: String
Default: db.t2.micro
ConstraintDescription: Deve essere un tipo di istanza EC2 valido.
Mappings:
Settings:
MySQL:
Engine: MySQL
Version: '5.7'
Conditions:
ConfigureSnapshotOnDelete:
Fn::Equals:
- Ref: SnapshotOnDelete
- 'true'
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: Proprietà
Parameters:
- Owner
- Label:
default: Configurazione di rete
Parameters:
- VPC
- PrivateSubnet1
- PrivateSubnet2
- PrivateSubnet3
- Label:
default: Configurazione RDS
Parameters:
- InstanceType
- MasterUsername
- MasterUserPassword
- BackupRetentionPeriod
- PreferredBackupWindow
- PreferredMaintenanceWindow
- SnapshotOnDelete
- AllocatedStorage
- AutoMinorVersionUpgrade
- TcpPort
- MultiAvailabilityZone
ParameterLabels:
Owner:
default: Proprietario del team o individuale
InstanceType:
default: Tipo di istanza
PrivateSubnet1:
default: Subnet Privata 1
PrivateSubnet2:
default: Subnet Privata 2
PrivateSubnet3:
default: Subnet Privata 3
MasterUsername:
default: Nome utente principale
MasterUserPassword:
default: Password utente principale
BackupRetentionPeriod:
default: Periodo di conservazione del backup
PreferredBackupWindow:
default: Finestra di backup preferita
PreferredMaintenanceWindow:
default: Finestra di manutenzione preferita
AllocatedStorage:
default: Spazio di archiviazione allocato
AutoMinorVersionUpgrade:
default: Aggiornamento automatico della versione minore
TcpPort:
default: Porta TCP
MultiAvailabilityZone:
default: Zone di disponibilità multiple?
SnapshotOnDelete:
default: Snapshot alla cancellazione?
Resources:
RDSAccessSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Accesso all'istanza RDS
VpcId:
Ref: VPC
Tags:
- Key: Name
Value:
Fn::Join:
- ''
- - Ref: AWS::StackName
- "-rds"
- Key: Owner
Value:
Ref: Owner
AccessSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
DependsOn: RDSAccessSecurityGroup
Properties:
GroupId:
Ref: RDSAccessSecurityGroup
IpProtocol: tcp
FromPort:
Ref: TcpPort
ToPort:
Ref: TcpPort
SourceSecurityGroupId:
Ref: RDSAccessSecurityGroup
DbSubnetGroup:
Type: AWS::RDS::DBSubnetGroup
Properties:
DBSubnetGroupDescription:
Fn::Join:
- ''
- - 'Gruppo di subnet RDS per '
- Ref: AWS::StackName
SubnetIds:
- Ref: PrivateSubnet1
- Ref: PrivateSubnet2
- Ref: PrivateSubnet3
Tags:
- Key: Name
Value:
Ref: AWS::StackName
- Key: Owner
Value:
Ref: Owner
DbInstance:
Type: AWS::RDS::DBInstance
DeletionPolicy: Snapshot
DependsOn:
- DbSubnetGroup
- RDSAccessSecurityGroup
Properties:
AllocatedStorage:
Ref: AllocatedStorage
AllowMajorVersionUpgrade: 'false'
AutoMinorVersionUpgrade:
Ref: AutoMinorVersionUpgrade
BackupRetentionPeriod:
Ref: BackupRetentionPeriod
DBInstanceClass:
Ref: InstanceType
DBInstanceIdentifier:
Ref: AWS::StackName
DBSubnetGroupName:
Ref: DbSubnetGroup
Engine:
Fn::FindInMap:
- Settings
- MySQL
- Engine
EngineVersion:
Fn::FindInMap:
- Settings
- MySQL
- Version
MasterUsername:
Ref: MasterUsername
MasterUserPassword:
Ref: MasterUserPassword
MultiAZ:
Ref: MultiAvailabilityZone
Port:
Ref: TcpPort
PreferredBackupWindow:
Ref: PreferredBackupWindow
PreferredMaintenanceWindow:
Ref: PreferredMaintenanceWindow
PubliclyAccessible: 'false'
StorageEncrypted: 'false'
StorageType: gp2
VPCSecurityGroups:
- Ref: RDSAccessSecurityGroup
Tags:
- Key: Name
Value:
Ref: AWS::StackName
- Key: Owner
Value:
Ref: Owner
Outputs:
Owner:
Description: Team o individuo che possiede questa formazione.
Value:
Ref: Owner
VPC:
Description: VPC utilizzato
Value:
Ref: VPC
RDSHostname:
Description: Nome host RDS
Value:
Fn::GetAtt:
- DbInstance
- Endpoint.Address
RDSPort:
Description: Porta RDS
Value:
Fn::GetAtt:
- DbInstance
- Endpoint.Port
DbSubnetGroup:
Description: Gruppo di subnet DB creato.
Value:
Ref: DbSubnetGroup
RDSAccessSecurityGroup:
Description: Gruppo di sicurezza per l'accesso RDS creato.
Value:
Ref: RDSAccessSecurityGroup
PrivateSubnet1:
Description: Distribuzione Subnet Privata 1
Value:
Ref: PrivateSubnet1
PrivateSubnet2:
Description: Distribuzione Subnet Privata 2
Value:
Ref: PrivateSubnet2
PrivateSubnet3:
Description: Distribuzione Subnet Privata 3
Value:
Ref: PrivateSubnet3
BackupRetentionPeriod:
Description: Periodo di conservazione del backup in giorni
Value:
Ref: BackupRetentionPeriod
MultiAvailabilityZone:
Description: Abilitare più zone di disponibilità?
Value:
Ref: MultiAvailabilityZone
SnapshotOnDelete:
Description: Creare uno snapshot alla cancellazione?
Value:
Ref: SnapshotOnDelete
PreferredBackupWindow:
Description: Finestra di backup preferita
Value:
Ref: PreferredBackupWindow
PreferredMaintenanceWindow:
Description: Finestra di manutenzione preferita
Value:
Ref: PreferredMaintenanceWindow
AllocatedStorage:
Description: Spazio di archiviazione allocato in GB
Value:
Ref: AllocatedStorageUna volta che hai il modello sul tuo computer locale, vai alla console AWS e clicca su “Servizi” dalla barra del menu in alto e cerca “Cloudformation”.

Vedrai il cruscotto principale di cloudformation come segue. Clicca sul pulsante “Crea Stack” per creare uno stack per creare un’istanza RDS MySql.

Clicca sul pulsante di opzione “Carica un file di modello” e seleziona il modello che hai salvato dal tuo computer locale e clicca sul pulsante “Avanti”.

Specifica un nome a tua scelta per lo stack e compila i dettagli richiesti, quindi clicca su “Avanti” per procedere ulteriormente.


Puoi fornire i tag allo Stack Cloudformation che possono essere applicati all’istanza RDS MySql che verrà creata dallo stack. Clicca su “Avanti” per procedere.

Scorri verso il basso e clicca su “Crea stack” per creare lo stack.

La creazione richiederà del tempo. Puoi vedere l’azione in corso sotto eventi.

Per vedere lo stato dell’istanza RDS MySql in fase di creazione, clicca su “Servizi” e cerca “RDS”.

Nella dashboard principale, clicca su “DB Instances”.

Qui, puoi vedere che lo stato dell’istanza è “Modificando”. Ci vorrà del tempo per essere creata e pronta per l’uso.

Negli eventi dello Stack Cloudformation, puoi vedere che dopo un po’, una volta creata l’istanza RDS MySql, lo stato è “CREATE_COMPLETE”

Nella Console RDS, ora puoi vedere che lo stato è “Disponibile”.

Per vedere ulteriori dettagli sull’istanza RDS MySql, clicca sull’istanza RDS MySql –> Connettività e Sicurezza.
Per connetterti all’istanza RDS MySql, puoi utilizzare l’Endpoint fornito dall’istanza.

Una volta che l’istanza non è più necessaria, elimina lo Stack Cloudformation dalla Dashboard principale di Cloudformation per risparmiare sui costi.
Conclusione
In questo articolo, abbiamo visto i passaggi per creare un’istanza RDS MySql utilizzando Cloudformation Stack.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.