0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プライベートなAWS Auroraをポート3389で立てて EIC Endpoint で接続したメモ

0
Last updated at Posted at 2026-04-22

概要

EIC Endpoint が 22 か 3389 しか通せないならAurora Mysqlを3306でなくて3389で立てちゃえってやったメモ。
横着。

この時点のソース

CDK

natGatewaysは0にして余分な課金が出ないように。

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as rds from 'aws-cdk-lib/aws-rds';

export class Cdk2026Stack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const vpc = new ec2.Vpc(this, 'Vpc', {
      maxAzs: 2,
      natGateways: 0,
      subnetConfiguration: [
        {
          name: 'Isolated',
          subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
          cidrMask: 24,
        },
      ],
    });

    const eiceSecurityGroup = new ec2.SecurityGroup(this, 'EiceSecurityGroup', {
      vpc,
      description: 'Security group for EC2 Instance Connect Endpoint',
    });

    const auroraSecurityGroup = new ec2.SecurityGroup(this, 'AuroraSecurityGroup', {
      vpc,
      description: 'Security group for Aurora MySQL Serverless V2',
      allowAllOutbound: false,
    });

    const AURORA_PORT = 3389;

    auroraSecurityGroup.addIngressRule(ec2.Peer.securityGroupId(eiceSecurityGroup.securityGroupId), ec2.Port.tcp(AURORA_PORT));

    const auroraCluster = new rds.DatabaseCluster(this, 'AuroraCluster', {
      engine: rds.DatabaseClusterEngine.auroraMysql({
        version: rds.AuroraMysqlEngineVersion.VER_3_12_0,
      }),
      writer: rds.ClusterInstance.serverlessV2('writer'),
      serverlessV2MinCapacity: 0.5,
      serverlessV2MaxCapacity: 4,
      port: AURORA_PORT,
      vpc,
      vpcSubnets: {
        subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
      },
      securityGroups: [auroraSecurityGroup],
      credentials: rds.Credentials.fromGeneratedSecret('admin'),
      defaultDatabaseName: 'my-app',
      storageEncrypted: true,
      deletionProtection: false,
      removalPolicy: cdk.RemovalPolicy.DESTROY,
    });

    const isolatedSubnets = vpc.selectSubnets({
      subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
    });

    new ec2.CfnInstanceConnectEndpoint(this, 'EiceEndpoint', {
      subnetId: isolatedSubnets.subnetIds[0],
      securityGroupIds: [eiceSecurityGroup.securityGroupId],
      preserveClientIp: false,
    });

    new cdk.CfnOutput(this, 'AuroraClusterEndpoint', {
      value: auroraCluster.clusterEndpoint.hostname,
      description: 'Aurora cluster endpoint for open-tunnel --remote-host',
    });
  }
}

接続

Endpoint IDを確認

aws ec2 describe-instance-connect-endpoints --query 'InstanceConnectEndpoints[0].InstanceConnectEndpointId' --output text

Aurora クラスターエンドポイントのIP を確認

aws rds describe-db-clusters --query 'DBClusters[0].Endpoint' --output text

Aurora エンドポイントを IP に解決(powershell)

Resolve-DnsName <上記コマンドの結果(xxx.northeast-1.rds.amazonaws.com)>

Aurora はフェイルオーバー時に IP が変わる可能性がある。
接続できなくなったら再度Resolve-DnsName で IP を取り直す必要がある。

トンネルを開く

aws ec2-instance-connect open-tunnel \
  --instance-connect-endpoint-id eice-xxxxxxxxxxxxxxxxx \
  --remote-port 3389 \
  --local-port 13306 \
  --private-ip-address <Aurora クラスターエンドポイントのIP>

SecretMangerに格納されているAuroraパスワードの確認


aws secretsmanager get-secret-value \
  --secret-id $(aws secretsmanager list-secrets --query 'SecretList[?contains(Name, `AuroraCluster`)].Name' --output text) \
  --query 'SecretString' --output text | jq -r '.password'

adminユーザで接続

image.png

参考

EC2 Instance Connect Endpoint でプライベートサブネットにあるリソースへセキュアにアクセスしてみた ... 情報が古いようで、この通りにやってもうまく行かなかった。
EC2 Instance EndpointがTCP22番・3389番以外のポート利用を制限。それでもRDSに接続するには…?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?