【问题标题】:Is there any way that I can assign Security Group and VPC to my web application hosted in Elastic Beanstalk using AWS CDK code有什么方法可以使用 AWS CDK 代码将安全组和 VPC 分配给我在 Elastic Beanstalk 中托管的 Web 应用程序
【发布时间】:2020-07-04 16:24:34
【问题描述】:

我是 AWS CDK 的新手。

我使用 aws cdk (Typescript) 创建了 aws 代码管道,它创建了整个管道并将我的应用程序部署到 Elastic beanstalk 但问题是它没有为其分配任何 VPC 或安全组,因此默认情况下我的应用程序是公开的.

我希望我的应用程序只能通过我的公司网络使用我们的 aws 帐户中已经可用的 VPC(比如 VPC 的名称是“InternalPrivateVPC”)不公开访问。

所以我试图找到一种方法,使用 aws cdk 代码将已经可用的 VPC 和 SG 分配给我的应用程序,但找不到任何与 Elastic beanstalk 类相关的属性或类,这将允许我将 VPC 和 SG 分配给应用程序在代码中。

const appName = "SampleDotNetMVCWebApp";

const app = new elasticbeanstalk.CfnApplication(this, "EBApplication", {
  applicationName: appName
});

const elbEnv = new elasticbeanstalk.CfnEnvironment(this, "Environment", {
  environmentName: "SampleMVCEBEnvironment",
  applicationName: appName,
  solutionStackName: "64bit Windows Server 2012 R2 v2.5.0 running IIS 8.5"
});

这是整个代码库 - https://github.com/dhirajkhodade/CDKDotNetWebAppEbPipeline 和 这是创建 Elastic beanstalk 应用程序和环境的特定文件 - https://github.com/dhirajkhodade/CDKDotNetWebAppEbPipeline/blob/master/lib/cdk_dot_net_web_app_eb_pipeline-stack.ts

【问题讨论】:

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


【解决方案1】:

我相信您在创建CfnEnvironment 时必须使用optionSettings 来提供VPC 和子网ID。另请参阅 this page 以了解如何提供 option_settings。 CDK 在必要时遵循 CFN 属性。

你需要ec2vpc general option setting

这样的事情会起作用:

const elbEnv = new elasticbeanstalk.CfnEnvironment(this, "Environment", {
  environmentName: "SampleMVCEBEnvironment",
  applicationName: appName,
  solutionStackName: "64bit Windows Server 2012 R2 v2.5.0 running IIS 8.5",
  optionSettings: [
    {
      namespace: 'aws:ec2:vpc',
      optionName: 'VPCId',
      value: 'vpc-1234c'
    },
    {
      namespace: 'aws:ec2:vpc',
      optionName: 'Subnets',
      value: 'subnet-1f234567'
    },
    {
      namespace: 'aws:autoscaling:launchconfiguration',
      optionName: 'SecurityGroups',
      value: 'sg-7f12e34gd'
    },
  ]
});

【讨论】:

  • 非常感谢@dmahapatro 的快速响应和解决方案。只是属性名称更正,我认为“option_name”不再使用,我不得不改用“optionName”。我已在您的答案中更正并标记为答案。谢谢!
猜你喜欢
  • 2020-06-28
  • 2021-04-30
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 2018-06-01
  • 1970-01-01
  • 2021-01-14
相关资源
最近更新 更多