Typescript 使用aws cdk创建elasticbeanstalk实例

Typescript 使用aws cdk创建elasticbeanstalk实例,typescript,amazon-web-services,amazon-elastic-beanstalk,aws-cdk,Typescript,Amazon Web Services,Amazon Elastic Beanstalk,Aws Cdk,我正在使用以下代码创建elasticbeanstalk的实例,但是,当我尝试部署时,它抛出未找到名为pythonService的应用程序 import cdk = require('@aws-cdk/core'); import ebs = require('@aws-cdk/aws-elasticbeanstalk'); export class DevOpsStack extends cdk.Stack { constructor(scope: cdk.App, id: string,

我正在使用以下代码创建elasticbeanstalk的实例,但是,当我尝试部署时,它抛出
未找到名为pythonService的应用程序

import cdk = require('@aws-cdk/core');
import ebs = require('@aws-cdk/aws-elasticbeanstalk');

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

    const webAppName: string = 'pythonService';

    const webApp = new ebs.CfnApplication(this, webAppName);

    const pythonServiceS3BucketName : string = 'my-bucket-name'
    const pythonServiceArchiveName : string = 'my-awesome-app.zip'
    const webAppVersion = new ebs.CfnApplicationVersion(this, 'pythonServiceVer', {
      applicationName: webAppName,
      sourceBundle: {
        s3Bucket: pythonServiceS3BucketName,
        s3Key: pythonServiceArchiveName
      }
    });

    const options: ebs.CfnEnvironment.OptionSettingProperty[] = [{
      namespace: 'aws:ec2:vpc',
      optionName: 'VPCId',
      value: 'a-vpc-id'
    }, {
      namespace: 'aws:ec2:vpc',
      optionName: 'Subnets',
      value: 'a-subnet-id'
    }];

    const webAppEnv = new ebs.CfnEnvironment(this, 'pythonServiceEnv', {
      applicationName: webAppName,
      solutionStackName: '64bit Amazon Linux 2018.03 v2.9.2 running Python 3.6',
      optionSettings: options
    });
  }
}
我相信这是因为它在创建
CfnApplication
之前尝试部署
CfnApplicationVersion

DevOpsStack: creating CloudFormation changeset...
 0/5 | 8:33:48 PM | CREATE_IN_PROGRESS   | AWS::ElasticBeanstalk::Application        | pythonService
 0/5 | 8:33:48 PM | CREATE_IN_PROGRESS   | AWS::CDK::Metadata                        | CDKMetadata
 0/5 | 8:33:48 PM | CREATE_IN_PROGRESS   | AWS::ElasticBeanstalk::Environment        | pythonServiceEnv
 0/5 | 8:33:48 PM | CREATE_IN_PROGRESS   | AWS::ElasticBeanstalk::ApplicationVersion | pythonServiceVer
 0/5 | 8:33:48 PM | CREATE_IN_PROGRESS   | AWS::ElasticBeanstalk::Application        | pythonService Resource creation Initiated
 1/5 | 8:33:48 PM | CREATE_FAILED        | AWS::ElasticBeanstalk::ApplicationVersion | pythonServiceVer No Application named 'pythonService' found. (Service: AWSElasticBeanstalk; Status Code: 400; Error Code: InvalidParameterValue; Request ID: cd1a9f2b-a3fc-450a-9c34-fec13132f613)
而且,它生成的cloudformation模板没有
!应用前参考

Resources:
  pythonService:
    Type: AWS::ElasticBeanstalk::Application
    Metadata:
      aws:cdk:path: DevOpsStack/pythonService
  pythonServiceVer:
    Type: AWS::ElasticBeanstalk::ApplicationVersion
    Properties:
      **ApplicationName: pythonService**
      SourceBundle:
        S3Bucket: ...
        S3Key: ...

您必须手动构建依赖关系树,因为CfnApplication和CfnApplicationVersion之间没有引用。因此,添加CfnApplication作为依赖项,以确保它在CfnApplicationVersion之前部署:


webAppVersion.addDependsOn(webApp)

我遇到了类似的问题,并发现来自的
addDependsOn
建议运行良好

但是,由于您的环境未引用特定版本,因此仅添加此修复程序将部署示例应用程序。除了
dependsOn
fix之外,我相信您还需要将
版本标签
添加到您的
webAppEnv`:

const webAppEnv=new ebs.CfnEnvironment(这是“pythonServiceEnv”{
applicationName:webAppName,
solutionStackName:“运行Python 3.6的64位Amazon Linux 2018.03 v2.9.2”,
选项设置:选项,
版本标签webAppVersion.ref
});

not working:/尽管我可以看到创建资源的调用顺序正确,只是为了确保应用程序的名称正确,我注释掉了除了
webApp
之外的所有内容,并可以确认创建的ebs应用程序确实获得了名称
pythonService