簡體   English   中英

如何使用 AWS CDK TYPESCRIPT 引用現有 VPC 來部署 Beanstalk 應用程序

[英]How to refer exsisting VPC to deploy Beanstalk app using AWS CDK TYPESCRIPT

使用 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 應用程序?

有關命名空間和選項的完整列表:

這只是一個例子。

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,
    });

  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM