[英]How to import existing private subnets in a VPC in AWS CDK using TypeScript?
[英]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.