部署指定修订为空文件,但提供的修订为 zip 文件
The deployment specifies that the revision is a null file, but the revision provided is a zip file
我正在使用集成到 CodePipeline 中的 CodeDeploy。我正在尝试将映像从 ecr 部署到 ecs.
整个基础架构是使用 CloudFormation 构建的。
管道部署组的模板:
ApplicationName=cls.application.ApplicationName,
DeploymentGroupName='DeploymentGroup',
DeploymentConfigName='CodeDeployDefault.ECSAllAtOnce',
ServiceRoleArn=GetAtt(cls.role, 'Arn'),
AutoRollbackConfiguration={
'enabled': True,
'events': ['DEPLOYMENT_FAILURE', 'DEPLOYMENT_STOP_ON_ALARM', 'DEPLOYMENT_STOP_ON_REQUEST']
},
DeploymentStyle={
'deploymentType': 'BLUE_GREEN',
'deploymentOption': 'WITH_TRAFFIC_CONTROL'
},
BlueGreenDeploymentConfiguration={
'terminateBlueInstancesOnDeploymentSuccess': {
'action': 'TERMINATE',
'terminationWaitTimeInMinutes': 5
},
'deploymentReadyOption': {
'actionOnTimeout': 'CONTINUE_DEPLOYMENT',
},
},
LoadBalancerInfo= <Some irrelevant config>
EcsServices=[
{
'serviceName': 'WordpressService',
'clusterName': 'WordpressCluster'
},
]
到目前为止 - 配置看起来非常简单。 管道本身的配置包含2个阶段:
ArtifactStore=ArtifactStore(
Location='SomeS3Location',
Type='S3'
),
Name='WordpressPipeline',
RoleArn=GetAtt(cls.role, 'Arn'),
Stages=[
Stages(
Name='SourceStage',
Actions=[
Actions(
Name='SourceAction',
ActionTypeId=ActionTypeId(
Category='Source',
Owner='AWS',
Version='1',
Provider='ECR'
),
OutputArtifacts=[
OutputArtifacts(
Name='SourceOutput'
)
],
Configuration={
'RepositoryName':'SomeECR'
},
RunOrder='1'
)
]
),
Stages(
Name='DeployStage',
Actions=[
Actions(
Name='DeployAction',
ActionTypeId=ActionTypeId(
Category='Deploy',
Owner='AWS',
Version='1',
Provider='CodeDeploy'
),
InputArtifacts=[
InputArtifacts(
Name='SourceOutput'
)
],
Configuration={
'ApplicationName': 'MyApp',
'DeploymentGroupName': 'MyGroup'
},
RunOrder='1'
)
]
)
]
P.S。不要介意语法。我正在使用 Troposphere 创建 CloudFormation 模板。
首先,CloudFormation 模板 运行 成功。
其次,从ECR采购成功。
第三,部署失败并显示消息:
The deployment specifies that the revision is a null file, but the
revision provided is a zip file.
您知道问题出在哪里吗?
提前谢谢你。
找到问题所在了。
部署提供程序是 CodeDeploy,这对我的 blue/green 部署无效。我必须改为指定 CodeDeployToECS。此外,我还必须更改所需的环境参数。这是 AWS 的一个很好的教程:
https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-ecs-ecr-codedeploy.html#tutorials-ecs-ecr-codedeploy-pipeline
我正在使用集成到 CodePipeline 中的 CodeDeploy。我正在尝试将映像从 ecr 部署到 ecs.
整个基础架构是使用 CloudFormation 构建的。
管道部署组的模板:
ApplicationName=cls.application.ApplicationName,
DeploymentGroupName='DeploymentGroup',
DeploymentConfigName='CodeDeployDefault.ECSAllAtOnce',
ServiceRoleArn=GetAtt(cls.role, 'Arn'),
AutoRollbackConfiguration={
'enabled': True,
'events': ['DEPLOYMENT_FAILURE', 'DEPLOYMENT_STOP_ON_ALARM', 'DEPLOYMENT_STOP_ON_REQUEST']
},
DeploymentStyle={
'deploymentType': 'BLUE_GREEN',
'deploymentOption': 'WITH_TRAFFIC_CONTROL'
},
BlueGreenDeploymentConfiguration={
'terminateBlueInstancesOnDeploymentSuccess': {
'action': 'TERMINATE',
'terminationWaitTimeInMinutes': 5
},
'deploymentReadyOption': {
'actionOnTimeout': 'CONTINUE_DEPLOYMENT',
},
},
LoadBalancerInfo= <Some irrelevant config>
EcsServices=[
{
'serviceName': 'WordpressService',
'clusterName': 'WordpressCluster'
},
]
到目前为止 - 配置看起来非常简单。 管道本身的配置包含2个阶段:
ArtifactStore=ArtifactStore(
Location='SomeS3Location',
Type='S3'
),
Name='WordpressPipeline',
RoleArn=GetAtt(cls.role, 'Arn'),
Stages=[
Stages(
Name='SourceStage',
Actions=[
Actions(
Name='SourceAction',
ActionTypeId=ActionTypeId(
Category='Source',
Owner='AWS',
Version='1',
Provider='ECR'
),
OutputArtifacts=[
OutputArtifacts(
Name='SourceOutput'
)
],
Configuration={
'RepositoryName':'SomeECR'
},
RunOrder='1'
)
]
),
Stages(
Name='DeployStage',
Actions=[
Actions(
Name='DeployAction',
ActionTypeId=ActionTypeId(
Category='Deploy',
Owner='AWS',
Version='1',
Provider='CodeDeploy'
),
InputArtifacts=[
InputArtifacts(
Name='SourceOutput'
)
],
Configuration={
'ApplicationName': 'MyApp',
'DeploymentGroupName': 'MyGroup'
},
RunOrder='1'
)
]
)
]
P.S。不要介意语法。我正在使用 Troposphere 创建 CloudFormation 模板。
首先,CloudFormation 模板 运行 成功。
其次,从ECR采购成功。
第三,部署失败并显示消息:
The deployment specifies that the revision is a null file, but the revision provided is a zip file.
您知道问题出在哪里吗?
提前谢谢你。
找到问题所在了。 部署提供程序是 CodeDeploy,这对我的 blue/green 部署无效。我必须改为指定 CodeDeployToECS。此外,我还必须更改所需的环境参数。这是 AWS 的一个很好的教程: https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-ecs-ecr-codedeploy.html#tutorials-ecs-ecr-codedeploy-pipeline