You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile调用规则时执行期变量未生效,如何修正?

问题分析与解决方法

你的问题出在aws/parameters规则的依赖声明上:规则里把aws/create_stack作为依赖,会在执行配方中的$(MAKE)命令之前就自动触发一次aws/create_stack的执行,而这次执行完全没有传递你想要的stack_name和region变量,所以才会出现变量未生效的现象。

修改方案

直接移除aws/parameters规则的依赖项,只在配方里通过$(MAKE)传递变量调用目标即可:

aws/create_stack:
    aws cloudformation create-stack \
        --stack-name $(stack_name) \
        --region $(region) \
        --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND

aws/parameters:
    $(MAKE) aws/create_stack stack_name=parameter region=$(REGION)

扩展说明

如果aws/create_stack本身需要前置条件(比如依赖某个模板文件),把这些条件加到aws/create_stack自己的依赖里即可,不要放到aws/parameters的依赖中。比如:

aws/create_stack: templates/parameter-stack.yml
    aws cloudformation create-stack \
        --stack-name $(stack_name) \
        --region $(region) \
        --template-body file://$< \
        --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND

aws/parameters:
    $(MAKE) aws/create_stack stack_name=parameter region=$(REGION)

这样既保证了aws/create_stack的前置依赖被满足,又能在调用时正确传递自定义变量。

内容的提问来源于stack exchange,提问作者aerioeus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 10:06:25