Как использовать один EIP с Serverless Framework? - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть скрипт для развертывания проекта без сервера. В настоящее время я использую serverless-vpc-plugin для настройки AZ, но при использовании флага useNatGateway - создается EIP для каждой зоны.

Мне нужно заставить весь исходящий трафик использовать один EIP (я обращаюсь к стороннему провайдеру, у которого есть ограничение IP, и мне нужно зарегистрировать свой IP там).

Не уверен, как изменить настройки для использования одного EIP ...

service: test

plugins:
    - serverless-vpc-plugin

custom:
    vpcConfig:
        cidrBlock: 10.0.0.0/16
        useNatGateway: true

provider:
    name: aws
    runtime: nodejs8.10
    stage: prod
    timeout: 30
    vpc:
        securityGroupIds:
            - Ref: LambdaExecutionSecurityGroup
    iamRoleStatements:
        - Effect: Allow
          Action:
              - ec2:*
          Resource: '*'
    environment:
        DATABASE_USERNAME: ${self:service}
        DATABASE_PASSWORD: ${self:service}
        DATABASE_NAME: ${self:service}
        DATABASE_HOST:
            'Fn::GetAtt': [RDSCluster, Endpoint.Address]
        DATABASE_PORT:
            'Fn::GetAtt': [RDSCluster, Endpoint.Port]

functions:
    app:
        handler: handler.app
        events:
            - http:
                  path: /
                  method: ANY
            - http:
                  path: /{proxy+}
                  method: ANY

resources:
    Resources:
        RDSSecurityGroup:
            DependsOn: VPC
            Type: AWS::EC2::SecurityGroup
            Properties:
                GroupDescription: SecurityGroup for RDS
                VpcId:
                    Ref: VPC
                SecurityGroupIngress:
                    - IpProtocol: tcp
                      FromPort: 3306
                      ToPort: 3306
                      SourceSecurityGroupId:
                          Ref: LambdaExecutionSecurityGroup
        RDSCluster:
            Type: AWS::RDS::DBCluster
            Properties:
                Engine: aurora
                EngineMode: serverless
                MasterUsername: ${self:service}
                MasterUserPassword: ${self:service}
                DatabaseName: ${self:service}
                ScalingConfiguration:
                    AutoPause: false
                BackupRetentionPeriod: 30
                PreferredBackupWindow: 01:00-02:00
                PreferredMaintenanceWindow: mon:03:00-mon:04:00
                DBSubnetGroupName:
                    Ref: RDSSubnetGroup
                VpcSecurityGroupIds:
                    - 'Fn::GetAtt': RDSSecurityGroup.GroupId
...