hate_aaa3の技術備忘録メモ

自分用メモ(IT系)をストックしていきます。

テスト環境用のAWSリソース作成(セキュリティレイヤ-SG) 【CloudFormation】

Outputsで出力した時の名前にスタックの名前入れるとクロススタック参照させるときに柔軟性に欠けるなぁ。。。


■参考にさせて頂いた情報、記事

CloudTech | AWS初学者を導く体系的な動画学習

Fn::ImportValue - AWS CloudFormation



■作成リソース

・セキュリティグループ

AWSTemplateFormatVersion: 2010-09-09
Parameters:
# 環境名
  EnvironmentName:
    Description: environment name
    Type: String
    AllowedValues: 
      - dev               #開発環境
      - stg               #ステージング環境
      - prd               #本番環境
    Default: dev

#VPC作成スタック名
  VPCstack:
    Type: String
    Default: "testCF"


Resources:
###################################
# セキュリティグループ作成(SSH)
###################################
  SSHSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: "SSHSecurityGroup"
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: '0.0.0.0/0'
      VpcId: {"Fn::ImportValue" : {"Fn::Sub" : "${EnvironmentName}-${VPCstack}-VpcId"}}  #ImportValueでSubの短縮系が使えないため、この記述。https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html
      Tags:
        - Key: Name
          Value: !Sub ${EnvironmentName}-${AWS::StackName}-SSHSecurityGroup

###################################
# セキュリティグループ作成(HTTP/HTTPS)
###################################
  HTTPSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: "HTTPSecurityGroup"
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: '0.0.0.0/0'
        - IpProtocol: tcp
          FromPort: 443
          ToPort: 443
          CidrIp: '0.0.0.0/0'
      VpcId: {"Fn::ImportValue" : {"Fn::Sub" : "${EnvironmentName}-${VPCstack}-VpcId"}}  #ImportValueでSubの短縮系が使えないため、この記述。https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html
      Tags:
        - Key: Name
          Value: !Sub ${EnvironmentName}-${AWS::StackName}-HTTPSecurityGroup


###################################
# 外部出力
###################################
Outputs:
  SSHSecurityGroup:
    Value: !Ref SSHSecurityGroup
    Export:
      Name: !Sub ${EnvironmentName}-${AWS::StackName}-SSHSecurityGroup

  HTTPSecurityGroup:
    Value: !Ref HTTPSecurityGroup
    Export:
      Name: !Sub ${EnvironmentName}-${AWS::StackName}-HTTPSecurityGroup