CloudFormation Elastic Beanstalk группы безопасности - PullRequest
1 голос
/ 09 июля 2019

Я хочу создать два приложения Elastic Beanstalk и базу данных RDS, все в CloudFormation, которые подключены как таковые (без других подключений)

  1. API Public Internet <-> (общедоступное приложение EB)
  2. API (общедоступное приложение EB) <-> Внутреннее приложение EB
  3. API (общедоступное приложение EB) <-> RDS база данных

Проблема, с которой я столкнулся в настоящее время, заключается в том, что соединение № 2 (API-интерфейс с внутренним EB) не работает. Я также хочу убедиться, что база данных (и внутреннее приложение EB) не являются общедоступными, , но я не уверен, так ли это в настоящее время.

Вот часть моего шаблона (с не относящимися к делу частями, такими как параметры и некоторые свойства - он разворачивается со всем включенным), исключая:

Resources:
  ###  API ###

  API:
    Type: AWS::ElasticBeanstalk::Application
    Properties:
      ApplicationName: !Sub "${AWS::StackName}-api"

  APIDeployment:
    Type: AWS::ElasticBeanstalk::Environment
    Properties:
      ApplicationName: !Ref API
      # Some properties excluded
      OptionSettings:
        - Namespace: aws:elasticbeanstalk:application:environment
          OptionName: ALLOWED_HOSTS
          Value: !Sub ".${AWS::Region}.elasticbeanstalk.com,.${AWS::Region}.elb.amazonaws.com"
        - Namespace: aws:elasticbeanstalk:application:environment
          OptionName: INTERNAL_API_URL
          Value: !Sub "http://${InternalAPIDeployment.EndpointURL}"

        # Database Access
        - Namespace: aws:elasticbeanstalk:application:environment
          OptionName: DATABASE_URL
          Value: !Sub "postgres://${DatabaseUsername}:${DatabasePassword}@${APIDatabase.Endpoint.Address}:${APIDatabase.Endpoint.Port}/${DatabaseName}"
        - Namespace: aws:autoscaling:launchconfiguration
          OptionName: SecurityGroups
          Value: !Ref InstanceSecurityGroup

  ### Internal API ###

  InternalAPI:
    Type: AWS::ElasticBeanstalk::Application
    Properties:
      ApplicationName: !Sub "${AWS::StackName}-quizgen"

  InternalAPIDeployment:
    Type: AWS::ElasticBeanstalk::Environment
    Properties:
      ApplicationName: !Ref InternalAPI
      # Some properties excluded
      OptionSettings:
        - Namespace: aws:elb:loadbalancer
          OptionName: ManagedSecurityGroup
          Value: !GetAtt InternalAPISecurityGroup.GroupId
        - Namespace: aws:elb:loadbalancer
          OptionName: SecurityGroups
          Value: !GetAtt InternalAPISecurityGroup.GroupId

  ### Database ###

  APIDatabase:
    Type: AWS::RDS::DBInstance
    Properties:
      # Some properties excluded
      VPCSecurityGroups:
        - !GetAtt APIDatabaseSecurityGroup.GroupId
    DeletionPolicy: Snapshot

  ### Security Groups ###

  InstanceSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: RDS allows ingress from EC2 instances in this group.
      SecurityGroupIngress: []

  APIDatabaseSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allows access to the provisioned database.
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: !Ref DatabasePort
          ToPort: !Ref DatabasePort
          SourceSecurityGroupName: !Ref InstanceSecurityGroup

  InternalAPISecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allows access to the Internal API.
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          SourceSecurityGroupName: !Ref InstanceSecurityGroup

Любая помощь по настройке этого очень ценится!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...