AWS EC2 instance 생성 및 접속

less than 1 minute read

AWS EC2 instance 생성 및 SSH로 접속하기.

AWS EC2 Ubuntu server.

aws cli에 config 정보 등록. (key 필요함.) 여러개의 config을 사용하려면, 아래와 같이 profile을 파서 만들면 된다.

aws configure --profile 'username'

여기서는 편하게 접속하기 위해 python script를 사용하였고, AWS는 boto3라는 api로 python 스크립트로 접속 가능함.

마지막 python 코드에서 확인할 수 있듯이, 앞의 과정은 EC2 instance 정보와 ip, private key 정보를 담은 pem 파일을 ssh로 같이 넘겨주는 스크립트이며,

이 때 처음 pem 파일은 권한이 너무 open 되어 있어서 deny 발생하니, chmod 커맨드로 권한을 변경시켜 주자.

chmod 600 *.pem
  • instance 간편(?) 접속 python script
import boto3
import sys
import os

def help():
    print()
    print('Usage: python3 connect.py [instance_idx]')
    print()
    print('\tinstance_idx: integer')
    print()


if __name__ == '__main__':
    # aws profile select by Session
    dada_session = boto3.session.Session(profile_name='dada')

    client = dada_session.client('ec2')
    ec2_meta = client.describe_instances()
    ec2_instances = ec2_meta['Reservations'][0]['Instances']

    if len(sys.argv) < 2:
        help()
        exit()
    instance_idx = int(sys.argv[1])

    # print('All ec2 instances:')
    # for i_idx, i in enumerate(ec2_instances):
    #     print('[{}]: {} | {}'
    #         .format(i_idx, i['InstanceId'], i['PublicIpAddress']))

    ## in case public IP
    print('Connecting to instance {} | {}'.format(
        ec2_instances[instance_idx]['InstanceId'],
        ec2_instances[instance_idx]['PublicIpAddress']))

    print('executing!')
    os.execlp('ssh', 'ssh', '-i', 'dada-yumi-ec2.pem',
        'ubuntu@{}'.format(ec2_instances[instance_idx]['PublicIpAddress']))