我正在尝试编写一个执行以下操作的bash函数:
我遇到的问题是,如果我有多个参数,则我不想一直传递--capabilities CAPABILITY_IAM
该else
语句中的命令的最后一位。
An error occurred (InsufficientCapabilitiesException) when calling the CreateStack operation: Requires capabilities : [CAPABILITY_NAMED_IAM]
// that means I need to pass in --capabilities CAPABILITY_IAM
有没有办法告诉bash:嘿,从第3个参数中取出所有args,然后添加--capabilities CAPABILITY_IAM
之后的参数?像在JavaScript中一样,我可以这样做:
function allTogetherNow(a, b, ...c) {
console.log(`${a}, ${b}, ${c}. Can I have a little more?`);
}
allTogetherNow('one', 'two', 'three', 'four')
这是我的功能:
cloudformation_create() {
if [ -z "$3" ]; then
aws cloudformation create-stack --stack-name "$1" --template-body file://"$2" --capabilities CAPABILITY_IAM
else
aws cloudformation create-stack --stack-name "$1" --template-body file://"$2" --parameters "${@:3}" --capabilities CAPABILITY_IAM
fi
}
如果不使用bash函数,则第3个参数等等看起来像这样:
aws cloudformation create-stack --stack-name MY_STACK_NAME --template-body file://MY_FILE_NAME --parameters ParameterKey=KeyPairName,ParameterValue=TestKey ParameterKey=SubnetIDs,ParameterValue=SubnetID1 --capabilities CAPABILITY_IAM
2019年5月22日更新:
遵循Dennis Williamson在下面的回答。我试过了:
cloudformation_create STACK_NAME FILE_NAME ParameterKey=KeyPairName,ParameterValue=TestKey ParameterKey=SubnetIDs,ParameterValue=SubnetID1
得到错误:
An error occurred (ValidationError) when calling the CreateStack operation: Parameters: [...] must have values
cloudformation_create STACK_NAME FILE_NAME "ParameterKey=KeyPairName,ParameterValue=TestKey ParameterKey=SubnetIDs,ParameterValue=SubnetID1"
得到错误:
An error occurred (ValidationError) when calling the CreateStack operation: ParameterValue for ... is required
ParameterKey
和传递ParameterValue
:cloudformation_create STACK_NAME FILE_NAME KeyPairName=TestKey SubnetIDs=SubnetID1
得到错误:
Parameter validation failed:
Unknown parameter in Parameters[0]: "PARAM_NAME", must be one of: ParameterKey, ParameterValue, UsePreviousValue, ResolvedValue
// list of all the params with the above error
ParameterKey
和ParameterValue
作为字符串传递。得到错误:arameter validation failed:
Unknown parameter in Parameters[0]: "PARAM_NAME", must be one of: ParameterKey, ParameterValue, UsePreviousValue, ResolvedValue
我尝试了亚历克斯·哈维的答案,并得到了:
An error occurred (ValidationError) when calling the CreateStack operation: Template format error: unsupported structure.
首先,谢谢大家的帮助。
我已经意识到了这个问题(以及我的错误):
AWS返回了错误,Requires capabilities : [CAPABILITY_NAMED_IAM]
我的函数具有[CAPABILITY_IAM]
。取决于模板以及与创建IAM相关的参数,[CAPABILITY_NAMED_IAM]
或者[CAPABILITY_IAM]
是必需的。我发现这里的答案很有帮助。
因此,就我而言,bash函数很好,对于我尝试创建的模板,我需要传递--capabilities CAPABILITY_NAMED_IAM
。我已经尝试过了,而且效果很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句