ec2のwindows server 2025 インスタンスにrdp接続するcloudformation のyaml

```yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: >
  Create a new VPC, Subnet, and a Windows Server EC2 instance with RDP enabled (no parameters needed).

Resources:
  #------------------------------------
  # VPC
  #------------------------------------
  MyVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
        - Key: Name
          Value: DemoVPC

  #------------------------------------
  # Internet Gateway + VPC アタッチ
  #------------------------------------
  MyInternetGateway:
    Type: AWS::EC2::InternetGateway

  MyVPCGatewayAttachment:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      InternetGatewayId: !Ref MyInternetGateway
      VpcId: !Ref MyVPC

  #------------------------------------
  # Public Route Table + ルート設定
  #------------------------------------
  MyRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref MyVPC

  MyRoute:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref MyRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref MyInternetGateway

  #------------------------------------
  # Public Subnet + RouteTable アソシエーション
  #------------------------------------
  MySubnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref MyVPC
      CidrBlock: 10.0.1.0/24
      MapPublicIpOnLaunch: true
      AvailabilityZone: !Select 
        - 0
        - !GetAZs '' 
      Tags:
        - Key: Name
          Value: DemoSubnet

  MySubnetRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref MySubnet
      RouteTableId: !Ref MyRouteTable

  #------------------------------------
  # Security Group for RDP
  #------------------------------------
  WindowsSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Security group for Windows RDP
      VpcId: !Ref MyVPC
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 3389
          ToPort: 3389
          CidrIp: 0.0.0.0/0  # 実運用では接続元IPを絞り込むこと

  #------------------------------------
  # Windows Server EC2 Instance
  #------------------------------------
  WindowsInstance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t3.micro
      ImageId: !Sub "{{resolve:ssm:/aws/service/ami-windows-latest/Windows_Server-2025-English-Full-Base:1}}"
      SubnetId: !Ref MySubnet
      SecurityGroupIds:
        - !Ref WindowsSecurityGroup
      # KeyName は指定せず、UserData で簡易的に管理者パスワードをセットする例
      # パスワードはプレーンテキストなのであくまでデモ用途です
      UserData:
        Fn::Base64: !Sub |
          <powershell>
          net user Administrator "P@ssw0rd123"
          </powershell>

Outputs:
  InstanceId:
    Description: EC2 Instance ID
    Value: !Ref WindowsInstance

  PublicIp:
    Description: Public IP Address of the Windows Instance
    Value: !GetAtt WindowsInstance.PublicIp
```

- ご自分の現在のグローバル IP は、検索サイトやルーター管理画面などで確認できます (例: “What is my IP” などで検索)。
- ダイナミック IP (プロバイダによって頻繁に変わる IP) の場合、このように特定 IP を絞り込むと都度修正が必要になります。
- もし範囲指定したい場合は、 203.0.113.0/24 のように CIDR ブロックを変更してください。
- 本番運用では、「0.0.0.0/0」での全開放は推奨されません。極力、許可するグローバル IP 範囲を限定してセキュリティを強化しましょう。