CloudFormationでSecurityGroupを作るときにYou may not define rules between a VPC group and a non-VPC groupとエラーが出るときの対応
解決まで地味に30分程度掛かったのでメモ。
CloudFormationで次のような感じでSecurityGroupを作ろうとすると、You may not define rules between a VPC group and a non-VPC group
とエラーが出てSecurityGroupが作れない。
DBEC2SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: "Allow access from specific SecurityGroup"
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '3306'
ToPort: '3306'
SourceSecurityGroupId: !Ref 'EC2SecurityGroup'
これはSourceSecurityGroupにVPCのSecurityGroupが指定されているのに、(VpcIdが指定されていないため)EC2 Classic環境にSecurityGroupが作られようとしているため出たエラーである(言葉にするとややこしい)。
ドキュメントにもあるが正しくはこんな感じ。
DBEC2SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
VpcId: !Ref VPC
GroupDescription: "Allow access from specific SecurityGroup"
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '3306'
ToPort: '3306'
SourceSecurityGroupId: !Ref 'EC2SecurityGroup'
ドキュメントは見ていたけど眠かったのとエラーメッセージに惑わされて解決まで時間掛かってしまった…。