Pubblicato il 27/08/2022 da alnao nella categoria AWS

E’ possibile definire template per la creazione e la configurazione di istanze Ec2, in questo caso le configurazioni da fare sono molte perché il servizio Ec2 prevede diverse configurazioni indispensabili per assicucare al Cloud e ai dati la massima sicurezza possibile: di base bisogna prima definire una istanza con le indicazioni della zona, del disco EBS e dell’interfaccia di rete di base con l’indicazione alla subnet di rete e al security group:

  ES14ServerAEC2:
Type: AWS::EC2::Instance
Properties:
AvailabilityZone: !Ref RegionAZ
KeyName: AlbertoNaoFormazione
BlockDeviceMappings:
- DeviceName: '/dev/sda1'
Ebs:
VolumeSize: 8 # in GB
ImageId: !Ref EC2Ami
InstanceType: 't2.micro' # t2.micro free tier
NetworkInterfaces:
- AssociatePublicIpAddress: true
PrivateIpAddress: '10.199.84.4'
SubnetId: !Ref ES14PubSubnetA
DeviceIndex: '0'
Description: 'Primary network interface'
GroupSet:
- !Ref ES14ServerSecurityGroup

Subnet di rete e al security group sono elementi indispensabili per i servizi AWS Ec2 e bisogna definirli nel template con l’indicazione delle regole di rete e la VPC indispensabile per questo tipo di configurazione:

  ES14ServerSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: 'Server security group'
GroupName: 'ServerSecurityGroup'
SecurityGroupIngress:
- CidrIp: '0.0.0.0/0'
IpProtocol: TCP
FromPort: 22
ToPort: 22
#- SourceSecurityGroupId: !Ref ES14LoadBalancerSecurityGroup
- CidrIp: '0.0.0.0/0'
IpProtocol: TCP
FromPort: 8080
ToPort: 8080
SecurityGroupEgress:
- CidrIp: '0.0.0.0/0' # Not for Prod
IpProtocol: -1 # Allow all
VpcId: !Ref VpcId
ES14PubSubnetA:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: !Ref RegionAZ
CidrBlock: 10.199.84.0/24
VpcId: !Ref VpcId

Per l’avvio di una istanza Ec2 bisogna ricordarsi di configurare tutte le interfacce e le componenti di rete: l’internet gateway, il nat gateway, la route table e l’IP tramite il servizio di elastic IP. Un semplice esempio base per la configurazione dei componenti di rete necessaria al funzionamento di una EPC è

  ES14IGW:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: "Name"
Value: "ES14IGW"
ES14IgwAttachment:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
InternetGatewayId: !Ref ES14IGW
VpcId: !Ref VpcId
ES14NATa:
Type: AWS::EC2::NatGateway
Properties:
AllocationId: !GetAtt ES14EIPa.AllocationId
SubnetId: !Ref ES14PubSubnetA
Tags:
- Key: "Name"
Value: "ES14NATa"
ES14MainRT:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VpcId
Tags:
- Key: "Name"
Value: "MainRT"
ES14MainRTRoute:
Type: AWS::EC2::Route
Properties:
DestinationCidrBlock: 0.0.0.0/0
GatewayId: ES14IGW
RouteTableId: !Ref ES14MainRT
ES14EIPa:
Type: AWS::EC2::EIP
Properties:
Tags:
- Key: "Name"
Value: "ES14EIPa"
ES14MainRTSubnetAAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref ES14MainRT
SubnetId: !Ref ES14PubSubnetA

L’esempio completo è disponibile al GitHub:

https://github.com/alnao/AWSCloudFormationExamples/tree/master/Esempio14istanzeEC2