[ネタ]半年前の自分と比べてみた

### EC2を作成するcfnを半年前の自分と比べてみた

自分が担当してたプロジェクトの環境構築で、納期的に追い込まれてて
EC2の作成をコード化できなかったと思い、今日書いてみた。

そして、書いたあとに半年以上前に自分でEC2のcfn書いていたことに気付き、比較してみた。

**半年以上前の自分が書いたcfn**

***

```
AWSTemplateFormatVersion: "2010-09-09"

Description: Template generated by rain

Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      KeyName: Secret-key
      AvailabilityZone: ap-northeast-1a
      ImageId: ami-0f27d081df46f326c
      InstanceType: t2.micro
      NetworkInterfaces:
        - AssociatePublicIpAddress: true
          #DeleteOnTermination: false # Optional
          #Description: CHANGEME # Optional
          DeviceIndex: "0"
          GroupSet:
            - !ImportValue TEST-SGfromCF
          SubnetId: subnet-068305cddc05d01bd
      #SecurityGroupIds:
        #- !ImportValue TEST-SGfromCF
      #SecurityGroups:
        #- !ImportValue TEST-SGfromCF
      #SubnetId: subnet-068305cddc05d01bd
      Tags:
        - Key: Name
          Value: TEST-EC2_fromCF
```

***

**今日書いたcfn**

```
AWSTemplateFormatVersion: 2010-09-09
Description: create ec2
# ------------------------------------------------------------#
# Input Parameters
# ------------------------------------------------------------#
Parameters:
  InstanceType:
    Description: Input an Instance type.
    Type: String
    Default: t2.micro
  KeyPair:
    Description: Select your key pair.
    Type: "AWS::EC2::KeyPair::KeyName"
  InstanceName:
    Description: Input a instance name.
    Type: String
    Default: test-ec2
  MyhomeIP:
    Description: IP address allowed to access EC2
    Type: String
Resources:
# ------------------------------------------------------------#
# EC2
# ------------------------------------------------------------#
  MyInstance:
    Type: AWS::EC2::Instance
    Properties: 
     AvailabilityZone: ap-northeast-1a
     BlockDeviceMappings:
      - DeviceName: /dev/xvda
        Ebs:
         VolumeType: gp2
         VolumeSize: '8'
     ImageId: ami-0701e21c502689c31
     InstanceType: !Ref InstanceType
     KeyName: !Ref KeyPair
     SecurityGroupIds: 
      - !Ref ServerSecurityGroup
     SubnetId: !ImportValue NetworkStackPublicSubnetA
     Tags:
      - Key: Name
        Value: !Sub test-ec2
     UserData:
      Fn::Base64: |
        #!/bin/bash
        sudo yum update -y

# ------------------------------------------------------------#
# EIP
# ------------------------------------------------------------#
  EC2EIP:
    Type: AWS::EC2::EIP
    Properties:
     Domain: vpc

# ------------------------------------------------------------#
# EIP Association
# ------------------------------------------------------------#
  EIPAssociationEC2:
   Type: AWS::EC2::EIPAssociation
   Properties:
    InstanceId: !Ref MyInstance
    AllocationId: !GetAtt EC2EIP.AllocationId

# ------------------------------------------------------------#
# SecurityGroup
# ------------------------------------------------------------#
  ServerSecurityGroup:
   Type: AWS::EC2::SecurityGroup
   Properties:
    GroupDescription: allow connections from specified CIDR ranges
    VpcId: !ImportValue NetworkStackVPC
    SecurityGroupIngress:
     - IpProtocol: tcp
       FromPort: 22
       ToPort: 22
       CidrIp: !Ref MyhomeIP

# ------------------------------------------------------------#
# Output Parameters
# ------------------------------------------------------------#
#Outputs:
```

**変わっていた点**

* AmazonLinuxのImageId変わった？
* Inputパラメータを使うようになった
* 自動割り当てパブリックIPからEIPにしてた
* EBSのサイズや種類を入れていた
* 半年前はセキュリティグループ全開放だったけど、今回は自宅のグローバルIPを作成時に入力するようにして、そのIPのみに絞っていた
* EC2につけるセキュリティグループの定義の仕方が変わっていた(今回もはまったｗ)
* ユーザデータを定義していた

***

###　最後に一言
成長しているのか、成長していないのか微妙だ・・・