AWS CloudFormation을 사용하여 VPC의 기본 라우팅 테이블에 경로를 추가하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 5월 8일

AWS CloudFormation을 사용하여 Amazon Virtual Private Cloud(Amazon VPC)를 생성한 경우 기본적으로 생성되는 기본 라우팅 테이블에 AWS CloudFormation을 사용하여 경로를 추가하고 싶습니다.

간략한 설명

AWS CloudFormation은 AWS CloudFormation을 사용하여 VPC를 생성할 때 기본적으로 생성되는 기본 라우팅 테이블을 인식하지 못합니다. 따라서 VPC와 AWS CloudFormation 간에 라우팅 테이블에 대한 정보를 전달할 수 없습니다. 즉, AWS CloudFormation 템플릿에서 기본 라우팅 테이블을 참조할 수 없으므로 기본 라우팅 테이블에서 경로를 추가하거나 제거할 수 없습니다.

​해결 방법

이 문제는 AWS CloudFormation 템플릿에 AWS Lambda 기반 사용자 지정 리소스를 사용하여 해결할 수 있습니다. 이 템플릿은 Lambda 함수를 사용하여 VPC에 연결된 기본 라우팅 테이블 ID를 검색합니다.

1.    AWS GitHub 리포지토리에서 RouteTable.templateRoutetable.py 파일을 다운로드합니다.

2.    Lambda 함수에 대해 Routetable.zip이라는 zip 파일을 생성합니다. 다음 예제를 참조하십시오.

-> Routetable.zip
        |
        |-> Routetable.py

중요: Routetable.py가 zip 파일의 루트 레벨에 있는지 확인하십시오.

3.    Amazon S3 콘솔을 사용하여, AWS CloudFormation 스택과 동일한 AWS 리전에 있는 Amazon Simple Storage Service(Amazon S3) 버킷에 zip 파일을 업로드합니다. AWS CLI(AWS 명령줄 인터페이스)를 사용하여 zip 파일을 업로드하려면, Routetable.zip 폴더에서 다음 명령을 실행합니다.

aws s3 cp ./Routetable.zip s3://awsexamplebucket1/Routetable.zip

4.    RouteTable.template 파일을 사용하여 스택을 시작하려면, AWS CloudFormation 콘솔 또는 다음 AWS CLI 명령을 사용합니다.

aws cloudformation create-stack --stack-name myvpcstack --template-body file://RouteTable.template --parameters ParameterKey=Bucket,ParameterValue=awsexamplebucket1 ParameterKey=Key,ParameterValue=Routetable.zip ParameterKey=Lambdahandler,ParameterValue=Routetable --capabilities CAPABILITY_NAMED_IAM --region us-east-1

중요: AWS CloudFormation 스택을 생성하거나 업데이트할 때에는 zip 파일을 업로드한 Amazon S3 버킷의 이름(awsexamplebucket1), zip 파일 이름(Routetable.zip) 및 Lambda 함수를 생성한 파일의 이름(Routetable)을 파라미터로 전달해야 합니다.

스택이 VPC를 생성한 후, Lambd 기반 사용자 지정 리소스를 사용하여 VPC의 기본 라우팅 테이블 ID를 가져옵니다. 이 ID는 AWS::EC2::Route에서 기본 라우팅 테이블에 대한 퍼블릭 경로를 추가하는 데 사용됩니다. 그러면 스택 출력에 라우팅 테이블 ID가 표시됩니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?