簡體   English   中英

使用Cloudformation進行代碼部署

[英]Using Cloudformation for Codedeploy

我正在嘗試使用對流層來制作cloudformation模板。 模板生成的堆棧旨在作為codedeploy的簡單示例

我以前有對流層來生成ec2,s3,iam和route53生成模板。 之前,我已使用GUI AWS Console進行了代碼部署

我遇到錯誤,我不明白為什么

這是我的對流層程序

    from troposphere import Template
    from troposphere.codedeploy import Application, DeploymentConfig, DeploymentGroup, MinimumHealthyHosts, S3Location


    #1
    #CreateApplication with an applicationName
    app=Application( 'test123')

    #2
    #CreateDeploymentConfig

    config=DeploymentConfig('config123',
                           MinimumHealthyHosts=MinimumHealthyHosts( Type='HOST_COUNT', Value=1 )
                           )

    #3
    #CreateDeploymentGroup using applicationName as input
    #and deploymentConfigName
    depgroup=DeploymentGroup("depgroup123",
                             ApplicationName='test123',
                             DeploymentConfigName='config123', 
                             ServiceRoleArn='arn:aws:iam::930517348825:role/isCompatibleWithAWSCodeDeploy')
)    
    t = Template()
    t.add_description(
    """
    Test of making a code deploy setup from a template
    """)
    t.add_resource(app)
    t.add_resource(config)
    t.add_resource(depgroup)

    print(t.to_json())

這是它制作的Cloudformation模板

{
    "Description": "\nTest of making a code deploy setup from a template\n",
    "Resources": {
        "config123": {
            "Properties": {
                "MinimumHealthyHosts": {
                    "Type": "HOST_COUNT",
                    "Value": 1
                }
            },
            "Type": "AWS::CodeDeploy::DeploymentConfig"
        },
        "depgroup123": {
            "Properties": {
                "ApplicationName": "test123",
                "DeploymentConfigName": "config123",
                "ServiceRoleArn": "arn:aws:iam::930517348825:role/isCompatibleWithAWSCodeDeploy"
            },
            "Type": "AWS::CodeDeploy::DeploymentGroup"
        },
        "test123": {
            "Type": "AWS::CodeDeploy::Application"
        }
    }
}

當我將模板加載到cloudformation GUI中時,會在回滾之前發生

09:08:50 UTC+0000   CREATE_FAILED   AWS::CodeDeploy::DeploymentConfig   config123   Resource creation cancelled
09:08:48 UTC+0000   CREATE_IN_PROGRESS  AWS::CodeDeploy::DeploymentConfig   config123   
09:08:48 UTC+0000   CREATE_FAILED   AWS::CodeDeploy::DeploymentGroup    depgroup123     No application found for name: test123
09:08:47 UTC+0000   CREATE_COMPLETE     AWS::CodeDeploy::Application    test123     

我不明白的是,堆棧已經創建了AWS :: CodeDeploy :: Application“ test123”,但是接下來的消息是“找不到名稱為test123的應用程序”

role / isCompatibleWithAWSCodeDeploy已經存在。
我還需要添加其他內容嗎?

TLDR

只需使用Ref s:

            "ApplicationName": {"Ref": "test123"},                                                                                                                                                        
            "DeploymentConfigName": {"Ref": "config123"},

詳細答案

從cf模板中可以看到,創建的應用程序沒有名稱。 為了使它具有名稱,您的cf模板的相應部分應如下所示:

    "test123": {                                                                                                                                                                                          
        "Type": "AWS::CodeDeploy::Application",
        "Properties" : {
            "ApplicationName" : "test123"
        }                                                                                                                                                           
    }

同樣適用於配置。 該配置應具有DeploymentConfigName屬性。 但是即使添加了ApplicationName之后,啟動仍可能失敗。 因為您的模板不能保證在應用程序和Deploymentconfig之后創建depgroup。

為了保證正確的創建順序,您應該使用Ref s:

{                                                                                                                                                                                                             
    "Description": "\nTest of making a code deploy setup from a template\n",                                                                                                                                  
    "Resources": {                                                                                                                                                                                            
        "config123": {                                                                                                                                                                                        
            "Properties": {                                                                                                                                                                                   
                "MinimumHealthyHosts": {                                                                                                                                                                      
                    "Type": "HOST_COUNT",                                                                                                                                                                     
                    "Value": 1                                                                                                                                                                                
                }                                                                                                                                                                                             
            },                                                                                                                                                                                                
            "Type": "AWS::CodeDeploy::DeploymentConfig"                                                                                                                                                       
        },                                                                                                                                                                                                    
        "depgroup123": {                                                                                                                                                                                      
            "Properties": {                                                                                                                                                                                   
                "ApplicationName": {"Ref": "test123"},                                                                                                                                                        
                "DeploymentConfigName": {"Ref": "config123"},                                                                                                                                                 
                "ServiceRoleArn": "arn:aws:iam::930517348825:role/isCompatibleWithAWSCodeDeploy"                                                                                                                     
            },                                                                                                                                                                                                
            "Type": "AWS::CodeDeploy::DeploymentGroup"                                                                                                                                                        
        },                                                                                                                                                                                                    
        "test123": {                                                                                                                                                                                          
            "Type": "AWS::CodeDeploy::Application"                                                                                                                                                            
        }                                                                                                                                                                                                     
    }                                                                                                                                                                                                         
}

暫無
暫無

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

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