ec2 만든 실습에서 ami를 설정하는 부분을 좀 고쳐보겠다
지난번엔 파라미터만 사용해서, 디폴트 값이 있지만 다른 ami를 원하면 직접 복사해서 넣어야했다
이번엔 매핑을 사용해 Linux2 또는 Windows 2019 Base 둘 중 하나를 선택하면 해당 리전에 맞는 ami가 자동으로 설정되도록 해보겠다
Mappings:
RegionMap:
us-east-1:
Linux2: ami-0be2609ba883822ec
Window2019: ami-0229f7666f517b31e
us-east-2:
Linux2: ami-0a0ad6b70e61be944
Window2019: ami-0d5b55fd8cd8738f5
us-west-1:
Linux2: ami-03130878b60947df3
Window2019: ami-0ae930fa924b34ed3
us-west-2:
Linux2: ami-0a36eb8fadc976275
Window2019: ami-0706901be27b0d22b
ap-northeast-1:
Linux2: ami-01748a72bed07727c
Window2019: ami-014612c2d9afaf1ac
ap-northeast-2:
Linux2: ami-0094965d55b3bb1ff
Window2019: ami-02e14cbf0d1fa141a
Resources 위에 Mappings를 설정해준다
RegionMap이 이 매핑의 논리적id이고, 내가 설정한 리전들에서 linux와 window에 맞는 ami들을 적어넣어놨다
다른 원하는 리전이나 ami는 직접 추가하면 된다
이제 Linux2나 Window2019를 어떻게 선택하게할까 생각해봤는데, Parameter로 넣어 정해진 값 중에 선택하게 하고싶다
Parameters:
AMI:
Description: AMI of EC2
Type: String
Default: Linux2
AllowedValues:
- Linux2
- Window2019
AllowedValues로 선택할 수 있는 값들을 미리 지정해주면, 스택을 생성할 때 드롭다운으로 표시된다
이제 마지막으로 ec2를 생성하는 부분에서
Resources:
EC2forWeb:
Properties:
ImageId: !FindInMap [ RegionMap, !Ref "AWS::Region", !Ref AMI ]
이런식으로 ImageId 부분을 수정해주자
Fn::FindInMap 함수는 Mappings 섹션에서 선언된 맵을 소환한다
맵 이름과 2개의 키를 파라미터로 받는다
AWS::Region은 가상 파라미터인데, 이는 CloudFormation에서 사전 정의된 파라미터로 Ref 함수로 사용할 수 있다
그 중에서도 AWS::Region을 참조하면 자동으로 스택을 생성하는 리전의 ID을 가져오게 된다
이제 이를 가지고 스택을 생성해보자
매핑에 적어둔 곳 중 아무 리전에서 실행하면 된다
AMI를 선택할 수 있다
생성을 완료한 후 생성된 EC2에 접속해보니
미리 설정해둔 Amazon Linux 2로 잘 생성되었다
+) 앞으로 진행되는 실습은 Linux 2에서만 할거고, 리전별로 골라지기만 하면 되므로 더 간단하게
Mappings:
RegionMap:
us-east-1:
Linux2: ami-0be2609ba883822ec
us-east-2:
Linux2: ami-0a0ad6b70e61be944
us-west-1:
Linux2: ami-03130878b60947df3
us-west-2:
Linux2: ami-0a36eb8fadc976275
ap-northeast-1:
Linux2: ami-01748a72bed07727c
ap-northeast-2:
Linux2: ami-0094965d55b3bb1ff
Resources:
EC2forWeb:
Properties:
ImageId: !FindInMap [ RegionMap, !Ref "AWS::Region", Linux2 ]
이 상태로 진행하겠다
'공부 > IaC' 카테고리의 다른 글
[AWS CloudFormation] #6 IAM User, Policy 생성 (0) | 2021.01.06 |
---|---|
[AWS CloudFormation] #5 RDS 생성하기 (for MySQL) (0) | 2021.01.06 |
[AWS CloudFormation] #3 웹서버용 EC2 만들기 (SG, EC2, UserData) (0) | 2021.01.05 |
[AWS CloudFormation] #2 파라미터 사용하기 (VPC 구성) (0) | 2021.01.05 |
[AWS CloudFormation] #1 간단 VPC 구성 (VPC, Subnet, IGW, NAT, RT) (0) | 2021.01.05 |
댓글