簡體   English   中英

使用 aws cdk 創建 elasticbeanstalk 實例

[英]Using aws cdk to create elasticbeanstalk instance

我正在使用以下代碼創建一個 elasticbeanstalk 實例,但是,當我嘗試部署時,它拋出No application with name pythonService is found

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

我相信這一切,因為它試圖部署CfnApplicationVersion創建之前CfnApplication

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 模板在應用程序之前沒有!Ref

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

我遇到了類似的問題,並發現ChrisaddDependsOn建議運行良好。

但是,僅添加此修復程序將部署示例應用程序,因為您的環境未引用特定版本。 除了dependsOn修復,我相信你需要添加 versionLabel to your webAppEnv`:

    const webAppEnv = new ebs.CfnEnvironment(this, 'pythonServiceEnv', {
      applicationName: webAppName,
      solutionStackName: '64bit Amazon Linux 2018.03 v2.9.2 running Python 3.6',
      optionSettings: options,
      versionLabel webAppVersion.ref
    });

暫無
暫無

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

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