【问题标题】:How to refer exsisting VPC to deploy Beanstalk app using AWS CDK TYPESCRIPT如何引用现有 VPC 以使用 AWS CDK TYPESCRIPT 部署 Beanstalk 应用程序
【发布时间】:2020-03-04 07:46:02
【问题描述】:

使用 AWS CDK TYPESCRIPT 部署 Beanstalk 应用程序。我能够使用 AWS CDK Typescript 设置 beanstalk 应用程序,但找不到在现有 VPC 中以高可用性设置它的方法。 这是我的 ebstack.ts

#!/usr/bin/env node
import cdk = require('@aws-cdk/core');
import elasticbeanstalk = require('@aws-cdk/aws-elasticbeanstalk');


export class ElbtestStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    //objects for access parameters
    const node = this.node;

    const appName = 'DEVELOPMENT';

    const platform = node.tryGetContext("platform");

    const app = new elasticbeanstalk.CfnApplication(this, 'Application', {
      applicationName: appName
    });
    const optionSettingProperties: elasticbeanstalk.CfnEnvironment.OptionSettingProperty[] = [
        {
            namespace: 'aws:autoscaling:launchconfiguration',
            optionName: 'InstanceType',
            value: 't3.small',
        },
        {
            namespace: 'aws:autoscaling:launchconfiguration',
            optionName: 'IamInstanceProfile',
            // Here you could reference an instance profile by ARN (e.g. myIamInstanceProfile.attrArn)
            // For the default setup, leave this as is (it is assumed this role exists)
            // https://stackoverflow.com/a/55033663/6894670
            value: 'aws-elasticbeanstalk-ec2-role',
        },
        {
            namespace: 'aws:elasticbeanstalk:container:nodejs',
            optionName: 'NodeVersion',
            value: '10.16.3',
        }
    ];

    new elasticbeanstalk.CfnEnvironment(this, 'Environment', {
      environmentName: 'x-SERVICE',
      applicationName: app.applicationName || appName,
      solutionStackName: '64bit Amazon Linux 2018.03 v4.13.1 running Node.js',
      optionSettings: optionSettingProperties,
    });
    
        
  }
}

我正在关注 AWS 提供的示例 https://github.com/aws-samples/aws-cdk-examples 如何设置子网来部署这个具有高可用性的 beanstalk 应用程序?

【问题讨论】:

  • 您的问题能更具体一点吗?没看清楚
  • 我能够使用 AWS CDK Typescript 设置 beanstalk 应用程序,但找不到在现有 VPC 中以高可用性设置它的方法我如何在 CDK TS 中配置它,以部署 eb 应用程序在特定 VPC 中的特定子网中使用 Application Loadbalancer @AmitBaranes

标签: typescript amazon-web-services amazon-elastic-beanstalk vpc aws-cdk


【解决方案1】:

有关命名空间和选项的完整列表:

这只是一个例子。

import cdk = require('@aws-cdk/core');
import {IVpc, Peer, Port, SecurityGroup,} from "@aws-cdk/aws-ec2";
import {CfnApplication, CfnEnvironment} from '@aws-cdk/aws-elasticbeanstalk';

interface ApplicationStackProps extends cdk.StackProps {
  vpc: IVpc;
}

export class ApplicationStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props: ApplicationStackProps) {
    super(scope, id, props);

    const prj: string = this.node.tryGetContext("prj");
    const stage: string = this.node.tryGetContext("stage");
    const platform: string = this.node.tryGetContext("platform");

    const albSecurityGroup = new SecurityGroup(this, 'albSecurityGroup', {
      allowAllOutbound: true,
      securityGroupName: 'alb-sg',
      vpc: props.vpc,
    });

    albSecurityGroup.addIngressRule(Peer.anyIpv4(), Port.tcp(80));
    albSecurityGroup.addIngressRule(Peer.anyIpv4(), Port.tcp(443));

    const app = new CfnApplication(this, 'Application', {
      applicationName: `${prj}-${stage}-application`
    });

    const optionSettings: CfnEnvironment.OptionSettingProperty[] = [
      {
        namespace: 'aws:ec2:vpc',
        optionName: 'VPCId',
        value: props.vpc.vpcId,
      },
      {
        namespace: 'aws:ec2:vpc',
        optionName: 'ELBSubnets',
        value: props.vpc.publicSubnets.map(value => value.subnetId).join(','),
      }
      ,
      {
        namespace: 'aws:ec2:vpc',
        optionName: 'Subnets',
        value: props.vpc.privateSubnets.map(value => value.subnetId).join(','),
      }
    ];

    const env = new CfnEnvironment(this, 'Environment', {
      environmentName: 'Environment',
      applicationName: app.applicationName || `${prj}-${stage}-application`,
      platformArn: platform,
      optionSettings: optionSettings,
    });

  }
}

【讨论】:

    猜你喜欢
    • 2020-06-28
    • 2013-03-18
    • 2017-05-11
    • 2014-05-25
    • 2013-12-31
    • 2020-08-10
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    相关资源
    最近更新 更多