云形式 EB.如何通过它创建静态IP并路由所有出站应用服务器流量



i具有以下云形式配置,它执行以下操作:

  • 创建和ElasticBeanstalk应用
  • 将域名链接到其LoadBalancer

我需要能够访问FTP服务器,但它们仅允许白色IP地址。

我将如何在配置中创建静态(弹性?(IP,路由流量,如果我多次运行此云形式,则IP保持不变?


AWSTemplateFormatVersion: '2010-09-09'
Parameters:
  S3Bucket:
    Type: String
    Description: S3 Bucket containing zip file
  RolePath:
    Type: String
    Description: RolePath
  HostedZoneName:
    Type: String
    Description: HostedZoneName
  QueueNamePrefix:
    Type: String
    Description: QueueNamePrefix
  AppDebug:
    Type: String
    Description: Debug
    Default: 'false'
  AppDnsCname:
    Type: String
    Description: AppDnsCname
  Environment:
    Type: String
    Description: Environment
  AppName:
    Type: String
    Description: AppName
  AWSRegion:
    Type: String
    Description: AWSRegion
  AppHealthCheckPath:
    Type: String
    Description: Path for container health check
Description: Elastic Beanstalk application & IAM policies
Resources:
  ElasticBeanstalkProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Path: !Ref 'RolePath'
      Roles:
        - !Ref 'ElasticBeanstalkRole'
  ElasticBeanstalkRole:
    Type: AWS::IAM::Role
    Properties:
      Path: !Ref 'RolePath'
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier
        - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess
        - arn:aws:iam::aws:policy/AmazonEC2ContainerServiceFullAccess
        - arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker
        - arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier
        - arn:aws:iam::aws:policy/AmazonSQSFullAccess
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - ec2.amazonaws.com
            Action:
              - sts:AssumeRole
      Policies: []
  ElasticBeanstalkApplication:
    Type: AWS::ElasticBeanstalk::Application
    Properties:
      Description: !Ref 'AppName'
  ElasticBeanstalkVersion:
    Type: AWS::ElasticBeanstalk::ApplicationVersion
    Properties:
      ApplicationName: !Ref 'ElasticBeanstalkApplication'
      Description: Source Code
      SourceBundle:
        S3Bucket: !Ref 'S3Bucket'
        S3Key: !Ref 'S3ZipKey'
  ElasticBeanstalkConfigurationTemplate:
    Type: AWS::ElasticBeanstalk::ConfigurationTemplate
    DependsOn:
      - ElasticBeanstalkProfile
    Properties:
      Description: my-app Configuration Template
      ApplicationName: !Ref 'ElasticBeanstalkApplication'
      SolutionStackName: 64bit Amazon Linux 2017.09 v2.8.4 running Multi-container Docker 17.09.1-ce (Generic)
      OptionSettings:
        - Namespace: aws:elasticbeanstalk:environment
          OptionName: EnvironmentType
          Value: LoadBalanced
        - Namespace: aws:elasticbeanstalk:application
          OptionName: Application Healthcheck URL
          Value: !Ref 'AppHealthCheckPath'
        - Namespace: aws:elasticbeanstalk:cloudwatch:logs
          OptionName: StreamLogs
          Value: true
        - Namespace: aws:elasticbeanstalk:cloudwatch:logs
          OptionName: DeleteOnTerminate
          Value: false
        - Namespace: aws:elasticbeanstalk:cloudwatch:logs
          OptionName: RetentionInDays
          Value: 180
        - Namespace: aws:autoscaling:launchconfiguration
          OptionName: IamInstanceProfile
          Value: !GetAtt 'ElasticBeanstalkProfile.Arn'
        - Namespace: aws:elasticbeanstalk:application:environment
          OptionName: DEBUG
          Value: !Ref 'AppDebug'
        - Namespace: aws:elasticbeanstalk:application:environment
          OptionName: AWS_REGION
          Value: !Ref 'AWSRegion'
        - Namespace: aws:elasticbeanstalk:application:environment
        - Namespace: aws:autoscaling:launchconfiguration
          OptionName: InstanceType
          Value: "t2.small"
        - Namespace: aws:elasticbeanstalk:healthreporting:system
          OptionName: SystemType
          Value: "enhanced"
  MyAppDNS:
    Type: AWS::Route53::RecordSetGroup
    DependsOn: ElasticBeanstalkEnvironment
    Properties:
      HostedZoneName: !Ref 'HostedZoneName'
      RecordSets:
        - Name: !Ref 'AppDnsCname'
          Type: CNAME
          TTL: '60'
          ResourceRecords:
            - !GetAtt 'ElasticBeanstalkEnvironment.EndpointURL'
  ElasticBeanstalkEnvironment:
    Type: AWS::ElasticBeanstalk::Environment
    Properties:
      Description: !Ref 'Environment'
      ApplicationName: !Ref 'ElasticBeanstalkApplication'
      TemplateName: !Ref 'ElasticBeanstalkConfigurationTemplate'
      VersionLabel: !Ref 'ElasticBeanstalkVersion'
      Tier:
        Type: Standard
        Name: WebServer

通过云形式使用弹性IP资源关联。

创建弹性IP资源:

Type: AWS::EC2::EIP
Properties:
   InstanceId: String
   Domain: String

将弹性IP资源与您的EC2实例资源相关联:

Type: AWS::EC2::EIPAssociation
Properties:
  AllocationId: String
  EIP: String
  InstanceId: String
  NetworkInterfaceId: String
  PrivateIpAddress: String

不要忘记使用!Ref加入这两个最后,这是有关如何执行此操作的官方例子。使用AWS :: ec2 :: eip sippet

分配Amazon EC2弹性IP

最新更新