æ¬è¨äºã¯
IaCã¦ã£ã¼ã¯
1æ¥ç®ã®è¨äºã§ãã
âï¸
åç¥è¨äº
â¶â¶ æ¬è¨äº â¶â¶
2æ¥ç®
ð»

- ã¯ããã«
- âï¸ CloudFormationã£ã¦ä½ï¼ã³ã³ã½ã¼ã«æä½ã¨ä½ãéãã®ï¼
- ð§ CloudFormationã®æ¦è¦
- âï¸CloudFormationã¨ã®å¯¾å³
- ð¼ç¥ãã³ãã¬ã¼ãæ§æè§£èª¬
- ãããã«
ã¯ããã«
ããã«ã¡ã¯ãå
¥ç¤¾2å¹´ç®ã®ã¤ã³ãã©ã¨ã³ã¸ãã¢ã®ä¸æã§ãï¼
æ¬è¨äºã¯ãIaCã¦ã£ã¼ã¯ã®ä¸ã§ããè¶
åå¦è
åããã¨ãã¦ãAWS CloudFormationï¼â»ä»¥ä¸CloudFormationï¼ã«åãã¦è§¦ããæ¹ã«åããå
容ã¨ãªã£ã¦ãã¾ãã
ç§ãåã㦠CloudFormation ã使ã£ã¦ãªã½ã¼ã¹ä½æã«ææ¦ããéã®çµé¨è«ã交ããªãããCloudFormation ã®åºæ¬çãªä»çµã¿ã¨ãç§ãæã£ã¦ããããã¼ã ã¡ã³ãã¼ä½ã®âCloudFormation ç¥ãã³ãã¬ã¼ãâããã¨ã«ããã³ãã¬ã¼ãã®åºæ¬çãªæ¸ãæ¹ã解説ãã¦ããã¾ãã
â»æ¬è¨äºã§ã¯ãã³ãã¬ã¼ãã®æ¸ãæ¹ã«ãã©ã¼ã«ã¹ãã¦ãããã¹ã¿ãã¯ã®ãããã¤æé ãªã©ã®å
容ã¯å«ã¾ãã¦ãã¾ããã
ãCloudFormationã£ã¦é£ãããâ¦ã³ã³ã½ã¼ã«ã§ãã£ãæ¹ã絶対æ©ãããããâ¦ã ãªãã¦æã£ã¦ããç§ã§ããããã®ãã³ãã¬ã¼ãã®ãããã§çè§£ãé²ã¿ãIaCã®ä¸çã«ä¸æ©è¸ã¿åºããã¨ãã§ãã¾ããã ãã®æåããå°ãã§ããä¼ãã§ãããå¬ããã§ãï¼
âï¸ CloudFormationã£ã¦ä½ï¼ã³ã³ã½ã¼ã«æä½ã¨ä½ãéãã®ï¼
AWSã§ãªã½ã¼ã¹ã使ããã¨ãªã£ã¦çã£å
ã«æãã¤ãã®ããAWSã³ã³ã½ã¼ã«ãå©ç¨ããæ¹æ³ã§ãã
ã³ã³ã½ã¼ã«æä½ã¯ãåãããããUIã§ããããæä½ã§ããã®ã§ãåå¿è
ã§ãæ¯è¼çç°¡åã«AWSãªã½ã¼ã¹ã使ãããã¨ãã§ãã¾ãã
ã§ãããããªãã¨ãæã£ããã¨ã¯ããã¾ãããï¼
ãæ¯ååãè¨å®ãæåã§ããã®ã¯é¢åãããâ¦ã
ãè¨å®ãã¹ãèµ·ããããããåç¾æ§ããªãâ¦ã
ããã¼ã ã§å
±æããããã©ãã©ããã£ã¦ããã®ï¼ã
ããã§ç»å ´ããã®ã AWS CloudFormation ã§ãã
ð§ CloudFormationã®æ¦è¦
CloudFormationã¯ãAWSã®ãªã½ã¼ã¹æ§æãã³ã¼ãï¼ãã³ãã¬ã¼ãï¼ã§å®ç¾©ã§ãããµã¼ãã¹ã§ãã å ·ä½çã«ã¯ãã¤ã³ãã©ã®è¨è¨å³ãYAMLãJSONå½¢å¼ã§è¨è¿°ããããããã¨ã«AWSãèªåçã«ãªã½ã¼ã¹ãæ§ç¯ãã¦ãããä»çµã¿ã§ãã ãã³ãã¬ã¼ãã«ã¯ã使ããããªã½ã¼ã¹ããã®è¨å®å 容ãè¨è¿°ãã¾ãã ããããã¹ã¿ãã¯ãã¨ãã¦ãããã¤ãããã¨ã§ãAWSããã®è¨è¨å³éãã«ãªã½ã¼ã¹ãæ§ç¯ãã¦ããã¾ãã
ð¡ ä½è«ã§ããâ¦ æ§æãã·ã³ãã«ã§èªã¿ããããã³ã¡ã³ããæ¸ãããããå人çã«ã¯YAMLå½¢å¼ããããããã¾ãã
ð CloudFormationã¨ã³ã³ã½ã¼ã«æä½ã¨ã®éã
| é ç® | ããã¸ã¡ã³ãã³ã³ã½ã¼ã« | CloudFormation |
|---|---|---|
| æä½æ¹æ³ | æåã§ãããã | ã³ã¼ãã§å®ç¾© |
| åç¾æ§ | æåæä½ã®ããåç¾ãå°é£ | ãã³ãã¬ã¼ãã§å®å ¨åç¾å¯è½ |
| èªåå | æåæä½ãä¸å¿ | CI/CDã¨é£æºå¯è½ |
| å ±æ | ã¹ã¯ãªã¼ã³ã·ã§ãããæé æ¸ | ãã³ãã¬ã¼ããã¡ã¤ã«ã§ç°¡åå ±æ |
| ãã¼ã¸ã§ã³ç®¡ç | 夿´å±¥æ´ã®ç®¡çãå°é£ | Gitãªã©ã§å±¥æ´ç®¡çå¯è½ |
âï¸CloudFormationã¨ã®å¯¾å³
ãã¦ãããããã¯ç§ãCloudFormationã«åææ¦ããéã®ä½é¨è«ãã話ããã¾ãã
ç§ã¯ã¨ããããã¸ã§ã¯ãã§ãæ¤è¨¼ç°å¢ã®æ§ç¯ãä»»ããããã¨ã«ãªãã¾ããã
忥ã®ç®æ¨ã¯ã»ãã¥ãªãã£ã°ã«ã¼ãï¼â»ä»¥ä¸SGï¼ã®ä½æã ã£ãã®ã§ãããçµæçã«ã»ã¼ä¸¸ä¸æ¥ãè²»ããã¦ãææã¼ãã
ä½åº¦ããã³ãã¬ã¼ããä¿®æ£ãã¦ã¯ã¨ã©ã¼ã«æ©ã¾ãããã¹ã±ã¸ã¥ã¼ã«é
å»¶ã®ä¸å®ãããã³ã³ã½ã¼ã«ã§ã®ä½æã«åãæ¿ãããã¨ã«ãã¾ããã
ããã¨ããã®ã®5åã§SGã宿ã
ããã£ã±ãã³ã³ã½ã¼ã«ã®æ¹ãæ©ããããâ¦ãã¨ãæ£ç´CloudFormationã«å«æ°ãããã¦ãã¾ãã¾ããã
ãããããã§ã«ãCloudFormationã§ä½ãã¾ãï¼ãã¨ãã¼ã ã¡ã³ãã¼ã«å®£è¨ãã¦ãã¾ã£ã¦ããæåãä»ã®ãªã½ã¼ã¹ã¾ã§ã³ã³ã½ã¼ã«ã§ããããä½ãããã«ã¯ããã¾ããã ããã§ããã¼ã ã¡ã³ãã¼ã«å©ããæ±ããã¨ãããâCloudFormationç¥ãã³ãã¬ã¼ãâãæãã¦ããã ããã®ã§ãã
ð¼ç¥ãã³ãã¬ã¼ãæ§æè§£èª¬
ãããããâCloudFormationç¥ãã³ãã¬ã¼ãâã®ãç´¹ä»ã§ãã
ãã®ãã³ãã¬ã¼ãã¯ãå種ãªã½ã¼ã¹æ¯ã®ãããããè¦ä»¶ã«å¯¾å¿ã§ããããæ±ç¨åãããCloudFormationãã³ãã¬ã¼ãã§ãã
ããããã®ãã³ãã¬ã¼ãã«ã¯ããªã½ã¼ã¹æ¯ã«å¿
è¦ãªè¨å®å¤ããã¹ã¦è¨è¼ããã¦ãããè¦ä»¶ã«å¿ãã¦ãã©ã¡ã¼ã¿ãå
¥åãã¦ããã ãã§ããã³ãã¬ã¼ãã宿ããã¨ããé常ã«ä¾¿å©ãªä»£ç©ã«ãªã£ã¦ãã¾ãã
æ¥åã§ä½¿ç¨ãã¦ãããã³ãã¬ã¼ãã¯å
¬éã§ããªãããããã®ç¥ãã³ãã¬ã¼ãããã¼ã¹ã«ä½æããã䏿ä½ã®SGç¨ãã³ãã¬ã¼ããåèã«ãCloudFormationãã³ãã¬ã¼ãã®æ§æã«ã¤ãã¦è§£èª¬ãã¦ããã¾ãã
ä»åç´¹ä»ããSGç¨ãã³ãã¬ã¼ãã®è¨å®ã¯ä»¥ä¸ã®éãã§ãã
| é ç® | å 容 |
|---|---|
| Description | sample |
| VPC | ãã©ã¡ã¼ã¿ã§æå®ããVPC |
| ã¤ã³ãã¦ã³ãã«ã¼ã«â | ã¤ã³ã¿ã¼ãããå ¨ä½ï¼0.0.0.0/0ï¼ããHTTPSï¼ãã¼ã443ï¼ãè¨±å¯ |
| ã¤ã³ãã¦ã³ãã«ã¼ã«â¡ | ãã©ã¡ã¼ã¿ã§æå®ããå¥ã®ã»ãã¥ãªãã£ã°ã«ã¼ãããHTTPSï¼ãã¼ã443ï¼ãè¨±å¯ |
| ã¢ã¦ããã¦ã³ãã«ã¼ã« | ã¤ã³ã¿ã¼ãããå ¨ä½ï¼0.0.0.0/0ï¼ã¸ã®HTTPSï¼ãã¼ã443ï¼éä¿¡ãè¨±å¯ |
| éä¿¡ãããã³ã« | tcp ã¾ã㯠udpï¼ãã©ã¡ã¼ã¿ã§é¸æï¼ |
| Nameã¿ã° | ãã©ã¡ã¼ã¿ã§å ¥åããä»»æã®ç°å¢åï¼ä¾: devï¼ã»ã·ã¹ãã åï¼ä¾: webappï¼ãçµã¿åãããååï¼ä¾: dev-webapp-sgï¼ |
ãã¦ãããããã¯ãã³ãã¬ã¼ãã®å
·ä½çãªä¸èº«ãè¦ã¦ããã¾ãã
ãã®ãã³ãã¬ã¼ãã¯ã大ããåãã¦ä¸è¨4ã¤ã®è¦ç´ ã«åããã¦ãã¾ãã
â åºæ¬é ç®
AWSTemplateFormatVersion: 2010-09-09 Description: 'Create SecurityGroup'
CloudFormation ãã³ãã¬ã¼ãã®ãã©ã¼ããããã¼ã¸ã§ã³ã¨ããã³ãã¬ã¼ãã®èª¬æã§ãã ã©ã¡ãã å¿ é ã§ã¯ããã¾ããããè¨è¿°ãã¦ãããã¨ã§ãã³ãã¬ã¼ãã®æ§æãæç¢ºã«ãªããç¨éã®ææ¡ããããããªãã¾ãã ã¨ãããããåé ã«è¨è¼ãã¦ãããã¨ããããããã¾ãã
â¡Metadataã»ã¯ã·ã§ã³ï¼UIè¨å®ï¼
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: 'Common Parameters'
Parameters:
- EnvName
- SystemName
- Label:
default: 'SecurityGroup Parameters'
Parameters:
- VpcId
- IpProtocol
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãCloudFormationã³ã³ã½ã¼ã«ä¸ã§ãã©ã¡ã¼ã¿ãå
¥åããéã®UIè¡¨ç¤ºãæ´ãããã¨ãã§ãã¾ãã
æ¬ã»ã¯ã·ã§ã³ã¯ãªã½ã¼ã¹ã®ä½æã«ã¯ç´æ¥å½±é¿ããªããããæ¬è¨äºã§ã¯è©³ç´°ãªè§£èª¬ã¯å²æãã¾ãããä¸è¨ãã³ãã¬ã¼ãã§ã¯ãSystemName ã EnvName ã¨ãã£ãæ±ç¨ãã©ã¡ã¼ã¿ã¨ãSGã®è¨å®å¤ã¨ãªããã©ã¡ã¼ã¿ã¨ã§ã表示ãåãããããªè¨è¿°ã¨ãªã£ã¦ãã¾ãã
â¢Resourceã»ã¯ã·ã§ã³ï¼ãã©ã¡ã¼ã¿ã®åæ ï¼
Resources:
InstanceSecurityGroup:
Type: 'AWS::EC2::SecurityGroup'
Properties:
GroupDescription: sample
VpcId: !Ref VpcId
SecurityGroupIngress:
- IpProtocol: !Ref IpProtocol
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
ãããã- IpProtocol: !Ref IpProtocol
FromPort: 443
ToPort: 443
SourceSecurityGroupId: !Ref SourceSecurityGroupId
SecurityGroupEgress:
- IpProtocol: !Ref IpProtocol
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
Tags:
- Key: Name
Value: !Sub '${EnvName}-${SystemName}-sg'
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãå®ç¾©ãããã©ã¡ã¼ã¿ããªã½ã¼ã¹ã®è¨å®ã«åæ ããã¾ããCloudFormation ãã³ãã¬ã¼ãã®ä¸ã§ãããã®Resources ã»ã¯ã·ã§ã³ãæãéè¦ãªé¨åã§ãããæ¥µç«¯ã«è¨ãã°ãã®ã»ã¯ã·ã§ã³ã ãã§ãã³ãã¬ã¼ããæ§æãããã¨ãå¯è½ã§ããå¾è¿°ãã Parameters ã»ã¯ã·ã§ã³ãå¿
é ã§ã¯ããã¾ããã
ã§ã¯ããªã Parameterã»ã¯ã·ã§ã³ã使ãã®ãï¼
ããã¯ããã³ãã¬ã¼ãã®å¯å¤é¨åã夿°åããããã§ãã
ãã¡ããããªã½ã¼ã¹åãè¨å®å¤ããã³ãã¬ã¼ãå
ã«ç´æ¥è¨è¿°ãããã¨ãã§ãã¾ããããããå
¨ãåãæ§æã®ã¹ã¿ãã¯ãè¤æ°ä½æããã±ã¼ã¹ã¯ç¨ã§ãããç°å¢ãã¨ã«ç°ãªãå¤ã使ãããå ´é¢ãå¤ãããã¾ãã
ãã®ãããå¯å¤é¨åããã©ã¡ã¼ã¿ã¨ãã¦å®ç¾©ããã¹ã¿ãã¯ä½ææã«å¤ãå¤é¨ããæ¸¡ããã¨ã§ãåç¾æ§ãä¿ã¡ã¤ã¤æè»ãªéç¨ãå¯è½ã«ãªãã¾ãã
ãã©ã¡ã¼ã¿ã®åç §æ¹æ³
ãã³ãã¬ã¼ãå
ã§ãã©ã¡ã¼ã¿ãåç
§ããã«ã¯ã!Ref ã !Sub ã¨ããæ§æã使ç¨ãã¾ãã
ãããã®æ§æã®å¾ã«ãParameters ã»ã¯ã·ã§ã³ã§å®ç¾©ãããã©ã¡ã¼ã¿åãæå®ãããã¨ã§ãå¤é¨ããæ¸¡ãããå¤ããªã½ã¼ã¹è¨å®ã«åæ ã§ãã¾ãã
ä¸è¨ãã³ãã¬ã¼ãã®å ´åãEnvNameã»SystemNameã»VpcIdã»IpProtocolã»SourceSecurityGroupIdã®5ã¤ã夿°åãã¦ãã¾ããã¹ã¿ãã¯ããããã¤ããéãæåã®å ´åã¯ä¸è¨ç»åã®ããã«AWS ã³ã³ã½ã¼ã«ä¸ã® UI ã§å
¥åãCI/CD ã®å ´åã¯ãã³ãã¬ã¼ãã«å¯¾ãã¦æç¤ºçã«ãã©ã¡ã¼ã¿ã渡ããã¨ã§è¨å®ããã¾ãã

ð¡!Ref 㨠!Sub ã®éã
ã ã| é ç® | 説æ |
|---|---|
| !Ref | ä»ã®ãªã½ã¼ã¹ããã©ã¡ã¼ã¿ã®å¤ããã®ã¾ã¾åç §ããéã«ä½¿ç¨ã |
| !Sub | æååã®ä¸ã«å¤æ°ãåãè¾¼ãéã«ä½¿ç¨ã ä¾ãã° "${EnvName}-${SystemName}-sg" ã®ããã«è¨è¿°ãããã¨ã§ããã©ã¡ã¼ã¿å¤ãå«ãæååãçæã§ããã |
â£Parametersã»ã¯ã·ã§ã³ï¼ãã©ã¡ã¼ã¿ã®å®ç¾©ï¼
Parameters:
# ----------------------- 'Common Parameters' -----------------------
EnvName:
Description: Environment_Name
Type: String
SystemName:
Description: System_Name
Type: String
# ----------------------- 'SecurityGroup Parameters' -----------------------
VpcId:
Description: Vpc_ID_(select)
Type: 'AWS::EC2::VPC::Id'
IpProtocol:
Default: 'tcp'
Description: IpProtocol_(select)
Type: String
AllowedValues:
- 'tcp'
- 'udp'
SourceSecurityGroupId:
Description: SourceSecurityGroup_ID_(select)
Type: 'AWS::EC2::SecurityGroup'
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãã¹ã¿ãã¯ä½ææã«å¤é¨ããæ¸¡ããã©ã¡ã¼ã¿ã«ã¤ãã¦å®ç¾©ãã¾ãã
ããã§å®ç¾©ã§ããå
å®¹ã¯æ§ã
ããã¾ãããä»åã¯ä¸è¨ãã³ãã¬ã¼ãã§ä½¿ç¨ãã¦ãã DefaultãDescriptionãTypeãAllowedValues ã® 4 ã¤ã®é
ç®ã«ã¤ãã¦è§£èª¬ãã¾ãã
| é ç® | 説æ |
|---|---|
| Default | ãã©ã¡ã¼ã¿ã®åæå¤ããã使ãå¤ãè¨å®ãã¦ãããã¨ã§ãå ¥åã®æéããã¹ãæ¸ãããã |
| Description | ãã©ã¡ã¼ã¿ã®èª¬ææãã¹ã¿ãã¯ä½ææã« AWS ã³ã³ã½ã¼ã«ä¸ã§è¡¨ç¤ºãããå ¥åå 容ãåããããããªãã |
| Type | å ¥åå¤ã®åãæå®ãããä»»æã®æååãå ¥åãããæåååï¼Stringï¼ã ãæ¢åã®AWSãªã½ã¼ã¹ã®ä¸ãã鏿ãããAWS ãªã½ã¼ã¹åï¼ä¾ï¼AWS::EC2::VPC::Idï¼ãªã©ãããã |
| AllowedValues | å ¥åå¯è½ãªå¤ãå¶éãããèª¤å ¥åãé²ãã鏿è¢ãæç¢ºã«ã§ããã |
解説ã¾ã¨ã
以ä¸ãCloudFormationãã³ãã¬ã¼ãã®è§£èª¬ã«ãªãã¾ãã
ä»åã¯SGç¨ã®ãã³ãã¬ã¼ããä¾ã«ãç´¹ä»ãã¾ãããããã®æ§æã¯ä»ã® AWS ãªã½ã¼ã¹ã«ã転ç¨å¯è½ã§ããAWS ã®å
¬å¼ããã¥ã¡ã³ãã«ã¯ãåãªã½ã¼ã¹ã«å¯¾å¿ãã CloudFormation ã®è¨å®é
ç®ã詳細ã«è¨è¼ããã¦ãããããããããåèã«ããªãããã³ãã¬ã¼ãã«è½ã¨ãè¾¼ãã§ããã¤ã¡ã¼ã¸ã§ãã
å®éãç§ãåèã«ããç¥ãã³ãã¬ã¼ãã«ã¯ SGç¨ã®ãã³ãã¬ã¼ãã¯ããã¾ããã§ããããä»ã®ãªã½ã¼ã¹ã®ãã³ãã¬ã¼ãããã¼ã¹ã«ãèªåã§ä½æãããã¨ãã§ãã¾ããã
åºæ¬æ§æãçè§£ãããã¨ã§ãä»ã®ãªã½ã¼ã¹ã¸ã®å¿ç¨ã¯ãã¡ããã1ã¤ã®ãã³ãã¬ã¼ãã§è¤æ°ã®ãªã½ã¼ã¹ãã¾ã¨ãã¦ä½æãããªã©ãããæè»ã§é«åº¦ãªãã³ãã¬ã¼ãè¨è¨ãå¯è½ã«ãªããã¨æãã¾ãã
ãããã«
ããã¾ã§CloudFormationã®å©ç¹ã¨ãã®ä½¿ãæ¹ã«ã¤ãã¦ã話ãã¾ããããæ±ºãã¦ã³ã³ã½ã¼ã«æä½ãæªã ã¨ãããã¨ã¯ããã¾ããã
å®éãç§ãæå±ãããã¼ã ã§ã¯ãã³ã³ã½ã¼ã«ãããã使¥ã®æ¹ãå§åçã«å¤ãã§ãã
ã¾ããIaCã«ã¯ä»åãç´¹ä»ããCloudFormationã ãã§ãªããTerraformãCDKãªã©ããã¾ãã¾ãªææ®µãããã¾ãã
ãå¿ ãããããã使ãã®ãè¯ãããªã©ã¨ãã£ããã¨ã¯ãªãããã®æã ã«åãããé©åãªææ®µãç¨ãããã¨ããã¹ãã§ãã 仿ã£ã¦ããææ®µã«åºå·ããã好å¥å¿ãæã£ã¦æ°ããæè¡ã«é£ã³è¾¼ãå§¿å¢ãæã¤ãã¨ãã§ãããããã§ããITã¨ã³ã¸ãã¢ãã«ãã£ã¨è¿ã¥ãã®ã§ã¯ãªãã§ããããã ãããèªãã§ãããæ¹ã®æ°ããªä¸æ©ã«ãå°ãã§ãè²¢ç®ã§ãã¦ãããå¬ããã§ãã