问题描述
我通过 AWS 无服务器应用程序模型 (SAM) 部署了我的 AWS Lambda。我的一个 Lambdas 使用 Numpy,我通过 @keithRozario 的 Klayers 的第 3 方层引用它。我正在使用 Klayers-python38-numpy:16,但发现它在我今天部署后已被弃用,这使我的堆栈处于 UPDATE_ROLLBACK_Failed 状态。
一个建议是从 AWS 控制台使用 Stack actions -> Continue update rollback
;我试过了,但没有用。另一种解决方案是删除堆栈。然而,这将是我第一次删除堆栈,我想知道的是:如果我通过控制台删除我的堆栈,当我重新部署它时,我的堆栈会重新创建吗?我已经寻找我的问题的答案,但我只找到了删除堆栈中资源的引用。
我还想知道的是,我的堆栈是 AWS CodePipeline 中众多堆栈中的第一个堆栈,如果我删除堆栈,我的管道是否仍然有效?此外,当我继续处理管道中的后续堆栈时,我会遇到更多失败的堆栈吗?
最后,计划是在我重新部署时更新到 Klayers-python38-numpy:19。
编辑:按照@marcin
问题是 Klayers-python38-numpy:16,它已经部署在我的整个堆栈中,不再可用。今天早上我尝试对我的代码进行更改,但我的管道在 CreateChangeSet
步骤中失败了。这个层不再可用的事实是,我假设,我的堆栈无法回滚的原因。
我的管道如下所示:
{
"pipeline": {
"name": "my-pipeline","roleArn": "arn:aws:iam::123456789:role/my-pipeline-CodePipelineExecutionRole-4O8PAUJGLXYZ","artifactStore": {
"type": "S3","location": "my-pipeline-buildartifactsbucket-62byf2xqaa8z"
},"stages": [
{
"name": "Source","actions": [
{
"name": "SourceCodeRepo","actionTypeId": {
"category": "Source","owner": "ThirdParty","provider": "GitHub","version": "1"
},"runorder": 1,"configuration": {
"Branch": "master","OAuthToken": "****","Owner": "hugo","Repo": "my-pipeline"
},"outputArtifacts": [
{
"name": "SourceCodeAsZip"
}
],"inputArtifacts": []
}
]
},{
"name": "Build","actions": [
{
"name": "CodeBuild","actionTypeId": {
"category": "Build","owner": "AWS","provider": "CodeBuild","configuration": {
"ProjectName": "my-pipeline"
},"outputArtifacts": [
{
"name": "BuildArtifactAsZip"
}
],"inputArtifacts": [
{
"name": "SourceCodeAsZip"
}
]
}
]
},{
"name": "CI","actions": [
{
"name": "CreateChangeSet","actionTypeId": {
"category": "Deploy","provider": "CloudFormation","configuration": {
"ActionMode": "CHANGE_SET_REPLACE","Capabilities": "CAPABILITY_IAM","ChangeSetName": "my-pipeline-ChangeSet-ci","ParameterOverrides": "{\n \"MyEnvironment\" : \"ci\"\n}\n","RoleArn": "arn:aws:iam::123456789:role/my-pipeline-CloudFormationExecutionRole-1O8GOB5C2VXYZ","StackName": "my-pipeline-ci","TemplatePath": "BuildArtifactAsZip::packaged.yaml"
},"outputArtifacts": [],"inputArtifacts": [
{
"name": "BuildArtifactAsZip"
}
]
},{
"name": "ExecuteChangeSet","runorder": 2,"configuration": {
"ActionMode": "CHANGE_SET_EXECUTE","StackName": "my-pipeline-ci"
},"outputArtifacts": [
{
"name": "my-pipelineCIChangeSet"
}
],{
"name": "Staging","ChangeSetName": "my-pipeline-ChangeSet-staging","ParameterOverrides": "{\n \"MyEnvironment\" : \"staging\"\n}\n","StackName": "my-pipeline-staging","StackName": "my-pipeline-staging"
},"outputArtifacts": [
{
"name": "my-pipelinestagingChangeSet"
}
],{
"name": "Prod","actions": [
{
"name": "DeploymentApproval","actionTypeId": {
"category": "Approval","provider": "Manual","configuration": {},"inputArtifacts": []
},{
"name": "CreateChangeSet","ChangeSetName": "my-pipeline-ChangeSet-prod","ParameterOverrides": "{\n \"MyEnvironment\" : \"prod\"\n}\n","StackName": "my-pipeline-prod","runorder": 3,"StackName": "my-pipeline-prod"
},"outputArtifacts": [
{
"name": "my-pipelineProdChangeSet"
}
],"inputArtifacts": []
}
]
}
],"version": 1
}
}
解决方法
如果我通过控制台删除我的堆栈,当我重新部署它时,我的堆栈会重新创建吗?
是的。您可以再次尝试部署相同的堆栈,但您可能应该首先调查它失败的原因。
我还想知道的是,我的堆栈是 AWS CodePipeline 中众多堆栈中的第一个堆栈,如果我删除堆栈,我的管道是否仍然有效?
不知道,但可能不会。它特定于用例,您尚未提供有关 CP 的任何信息。
此外,当我继续处理管道中的后续堆栈时,我会遇到更多失败的堆栈吗?
如果一项操作失败,您将无法继续执行进一步操作。即使可以,其他堆栈也可以依赖第一个堆栈,它们也会失败。