Amazon Web Services 한국 블로그

AWS Console-to-Code 정식 출시, AWS 콘솔 작업 코드로 변환하기

오늘 AWS 콘솔 작업을 재사용 가능한 코드로 쉽게 변환할 수 있는 AWS Console-to-Code를 정식 출시(GA)합니다. AWS Console-to-Code를 사용하여 콘솔에서 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작하는 등의 작업 및 워크플로를 기록하고, 콘솔 작업에 대한 AWS Command Line Interface(AWS CLI) 명령을 검토할 수 있습니다. 몇 번의 클릭만으로 Amazon QAWS CloudFormation 템플릿(YAML 또는 JSON), AWS Cloud Development Kit(AWS CDK)(TypeScript, Python 또는 Java) 등 원하는 코드형 인프라(IaC) 형식을 사용하여 자동으로 코드를 생성할 수 있습니다. 이를 인프라 자동화의 출발점으로 사용할 수 있으며 파이프라인 등에 포함된 프로덕션 워크로드 등에 맞게 추가로 사용자 지정할 수 있습니다.

AWS Console-to-Code는 작년에 평가판을 발표한 이후 고객으로부터 긍정적인 반응을 얻었습니다. 이번 GA 버전에서는 고객 피드백을 바탕으로 거꾸로 작업해 온 결과 기능이 더욱 개선되었습니다.

정식 출시의 새로운 기능

  • 더 많은 서비스 지원 – 평가판에서는 Amazon EC2가 유일하게 지원되는 서비스였습니다. GA 버전에서 AWS Console-to-Code는 Amazon Relational Database Service(RDS)Amazon Virtual Private Cloud(Amazon VPC)까지 포함하도록 지원을 확대했습니다.
  • 간소화된 경험 – 새로운 사용자 경험을 통해 고객은 프로토타이핑, 기록 및 코드 생성 워크플로를 더 쉽게 관리할 수 있습니다.
  • 코드 미리 보기 – 고객이 리소스를 실제로 생성하지 않고도 해당 리소스에 대한 코드를 생성할 수 있도록 EC2 인스턴스 및 Auto Scaling 그룹용 시작 마법사를 업데이트했습니다.
  • 고급 코드 생성 – AWS CDK 및 CloudFormation 코드 생성이 Amazon Q 기계 학습 모델을 기반으로 작동합니다.

AWS Console-to-Code 시작하기
Amazon EC2 인스턴스를 시작하는 간단한 시나리오부터 시작해 보겠습니다. 먼저 Amazon EC2 콘솔에 액세스합니다. 오른쪽에서 AWS Console-to-Code 위젯을 찾고 Start recording을 선택하여 기록을 시작합니다.

이제 Amazon EC2 콘솔에서 인스턴스 시작 마법사를 사용하여 Amazon EC2 인스턴스를 시작합니다. 인스턴스가 시작되면 Stop을 선택하여 기록을 완료합니다.

Recorded actions 테이블에서 기록된 작업을 검토합니다. Type 드롭다운 목록을 사용하여 쓰기 작업(Write)으로 필터링할 수 있습니다. RunInstances 작업을 선택합니다. Copy CLI를 선택하여 해당 AWS CLI 명령을 복사합니다.

다음은 AWS Console-to-Code에서 가져온 CLI 명령입니다.

aws ec2 run-instances \
  --image-id "ami-066784287e358dad1" \
  --instance-type "t2.micro" \
  --network-interfaces '{"AssociatePublicIpAddress":true,"DeviceIndex":0,"Groups":["sg-1z1c11zzz1c11zzz1"]}' \
  --credit-specification '{"CpuCredits":"standard"}' \
  --tag-specifications '{"ResourceType":"instance","Tags":[{"Key":"Name","Value":"c2c-demo"}]}' \
  --metadata-options '{"HttpEndpoint":"enabled","HttpPutResponseHopLimit":2,"HttpTokens":"required"}' \
  --private-dns-name-options '{"HostnameType":"ip-name","EnableResourceNameDnsARecord":true,"EnableResourceNameDnsAAAARecord":false}' \
  --count "1"

이 명령은 쉽게 수정할 수 있습니다. 이 예제에서는 t3.micro 유형(--instance-type) 인스턴스 두 개(--count 2)를 시작하도록 명령을 업데이트했습니다. 이것은 단순화된 예제이지만 다른 워크플로에도 동일한 기술을 적용할 수 있습니다.

AWS CloudShell을 사용하여 명령을 실행했는데 예상대로 작동하여 두 개의 t3.micro EC2 인스턴스를 시작했습니다.

원클릭 CLI 코드 생성 경험은 작업이 실행될 때(EC2 인스턴스를 시작하는 동안) 사용된 API 명령을 기반으로 합니다. 흥미로운 점은 콘솔에서 작업을 완료하면 컴패니언 화면에 기록된 작업이 표시된다는 점입니다. 또한 시작 및 중지 기능이 있는 대화형 UI 덕분에 프로토타이핑을 위한 작업의 범위를 명확하게 지정하기가 용이합니다.

AWS CDK를 사용한 IaC 생성
AWS CDK는 클라우드 인프라를 코드로 정의하고 AWS CloudFormation을 통해 프로비저닝하기 위한 오픈 소스 프레임워크입니다. AWS Console-to-Code를 사용하면 인프라 워크플로에 대한 AWS CDK 코드(현재 Java, Python 및 TypeScript로 제공)를 생성할 수 있습니다.

계속해서 EC2 인스턴스 시작 사용 사례를 살펴보겠습니다. 아직 실행하지 않았다면 Amazon EC2 콘솔의 오른쪽에서 AWS Console-to-Code 위젯을 찾아 Start recording을 선택하고 EC2 인스턴스를 시작합니다. 인스턴스가 시작되면 Stop을 선택하여 기록을 완료하고 Recorded actions 테이블에서 RunInstances 작업을 선택합니다.

AWS CDK Python 코드를 생성하려면 드롭다운 목록에서 Generate CDK Python 버튼을 선택합니다.

이 코드를 출발점으로 사용하여 특정 사용 사례에서 프로덕션에 바로 사용할 수 있도록 사용자 지정할 수 있습니다.

AWS CDK를 이미 설치했기 때문에 새 Python CDK 프로젝트를 생성했습니다.

mkdir c2c_cdk_demo
cd c2c_cdk_demo
cdk init app --language python

그런 다음 생성된 코드를 Python CDK 프로젝트에 연결했습니다. 이 예제에서는 코드를 AWS CDK 스택으로 리팩터링하고, EC2 인스턴스 유형을 변경하고, 코드가 정확해지도록 몇 가지 사소한 변경을 수행했습니다. cdk deploy를 사용하여 스택을 성공적으로 배포했습니다.

콘솔 작업에서 EC2 인스턴스를 시작한 다음 AWS CDK로 이동하기까지 동일한 결과를 재현할 수 있었습니다.

from aws_cdk import (
    Stack,
    aws_ec2 as ec2,
)
from constructs import Construct

class MyProjectStack(Stack):

    def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)

        existing_vpc = ec2.Vpc.from_lookup(self, "ExistingVPC",
            is_default=True
        )

        instance = ec2.Instance(self, "Instance",
                instance_type=ec2.InstanceType("t3.micro"),
                machine_image=ec2.AmazonLinuxImage(),
                vpc=existing_vpc,
                vpc_subnets=ec2.SubnetSelection(
                    subnet_type=ec2.SubnetType.PUBLIC
                )
        )

CloudFormation 템플릿을 YAML 또는 JSON 형식으로 생성할 수도 있습니다.

코드 미리 보기
또한 Amazon EC2 및 Amazon EC2 Auto Scaling 그룹 시작 경험의 코드 미리 보기 기능을 통해 AWS Console-to-Code에 직접 액세스할 수도 있습니다. 즉, 인프라 코드를 얻기 위해 실제로 리소스를 생성할 필요가 없습니다.

이 기능을 사용해 보려면 시작 템플릿을 사용하여 Auto Scaling 그룹 생성 단계를 따릅니다. 단, Create Auto Scaling group 대신 Preview code를 클릭합니다. 이제 인프라 코드를 생성하는 옵션 또는 AWS CLI 명령을 복사하는 옵션이 보일 것입니다.

주요 사항
AWS Console-to-Code를 사용할 때 고려해야 할 몇 가지 사항은 다음과 같습니다.

  • 누구나 AWS Console-to-Code를 사용하여 인프라 워크플로에 대한 AWS CLI 명령을 생성할 수 있습니다. AWS CDK 및 CloudFormation 형식의 코드 생성 기능에는 매월 25회 생성의 무료 할당량이 제공되며, 그 이상은 Amazon Q Developer 구독이 필요합니다.
  • 생성된 IaC 코드를 배포 전에 테스트하고 확인하는 것이 좋습니다.
  • GA 버전에서 AWS Console-to-Code는 Amazon EC2, Amazon VPC 및 Amazon RDS 콘솔에서만 작업을 기록합니다.
  • AWS Console-to-Code의 기록된 작업 테이블에는 특정 브라우저 탭 내의 현재 세션에서 수행한 작업만 표시되며, 이전 세션 또는 다른 탭의 작업은 유지되지 않습니다. 브라우저 탭을 새로 고치면 기록된 작업이 모두 손실된다는 점에 유의하세요.

정식 출시
AWS Console-to-Code는 모든 상용 리전에서 사용할 수 있습니다. 자세한 내용은 Amazon EC2 설명서를 참조하세요. Amazon EC2 콘솔에서 사용해보고 AWS re:Post for Amazon EC2로 피드백을 보내거나 통상적인 AWS Support 담당자를 통해 피드백을 보내주세요.