如何延长超时或修改sam delete参数避免StackDeleteComplete等待超时?
解决SAM Delete栈删除超时的问题
因为sam delete默认使用的AWS SDK等待器总超时时间不足,无法覆盖你的3分钟栈删除需求,以下是两种可行的解决方法:
方法1:改用AWS CLI直接操作(更直观可控)
放弃sam delete,直接用AWS CLI的CloudFormation命令分两步执行:先发起删除请求,再自定义等待参数直到删除完成。
修改你的GitHub Actions步骤为:
- name: Delete CloudFormation stack run: aws cloudformation delete-stack --stack-name $BUCKET --region $AWS_REGION - name: Wait for stack deletion to complete run: | aws cloudformation wait stack-delete-complete \ --stack-name $BUCKET \ --region $AWS_REGION \ --waiter-config '{"MaxAttempts": 30, "Delay": 6}'
Delay:每次检查栈状态的间隔(单位:秒)MaxAttempts:最大检查次数- 总等待时间 = 30 * 6 = 180秒(3分钟),刚好匹配你的栈删除耗时。
方法2:通过环境变量调整SAM的等待器配置
如果你坚持使用sam delete,可以通过设置AWS SDK的环境变量来修改等待器的超时参数,SAM CLI会继承这些配置:
修改原步骤如下:
- name: Delete SAM stack with extended timeout env: AWS_STACK_DELETE_COMPLETE_WAITER_MAX_ATTEMPTS: 30 AWS_STACK_DELETE_COMPLETE_WAITER_DELAY: 6 run: | sam delete \ --stack-name $BUCKET \ --config-file $FILE \ --region $AWS_REGION \ --no-prompts
这两个环境变量会直接覆盖SDK中StackDeleteComplete等待器的默认配置,同样能实现3分钟的等待时长。
补充说明
SAM CLI本身没有直接提供调整删除等待超时的命令行参数,所以只能通过上述两种方式绕开这个限制。
内容的提问来源于stack exchange,提问作者pbaranski
相关产品推荐
相关产品推荐

