Cloudformation развернуть AWS SDK для JavaScript
Глядя на AWS SDK для Javascript, кажется, что мы можем только create stacks
но я ищу способ deploy
стек. Как бы я сделал это с предоставленным SDK; вот что у них сейчас есть:
cloudformation.createStack(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
Я надеялся на что-то вроде этого:
cloudformation.deployStack(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
По сути, я хотел бы воссоздать эту команду, используя sdk вместо cli:
aws cloudformation deploy --template-file /path_to_template/template.json --stack-name my-new-stack --parameter-overrides Key1=Value1 Key2=Value2 --tags Key1=Value1 Key2=Value2
И это потому, что я использую Linux и могу поместить это в сценарий оболочки, в то время как большинство людей, с которыми я работаю, используют Windows, и я не хочу использовать Windows Batch, а вместо этого кросс-платформенное решение, такое как npm, и, следовательно, aws-sdk for javascript approach
,
Как бы вы выполнили cloudformation.deployStack
с использованием SDK
а также NOT
CLI?
1 ответ
В текущем SDK AWS для Javascript в настоящее время нет метода развертывания, однако команда развертывания интерфейса командной строки AWS является оболочкой:
Развертывает указанный шаблон AWS CloudFormation, создав и затем выполнив набор изменений
Имея это в виду, я написал следующий код:
const CloudformationInstance = new Cloudformation(accessParams)
CloudformationInstance.createChangeSet(changeSetParams, (err, data) => {
if (err) throw new Error(err, err.stack)
console.info('Succesfully created the ChangeSet: ', data)
CloudformationInstance.waitFor('changeSetCreateComplete', {ChangeSetName: config.changeSetName}, (err, data) => {
if (err) throw new Error(err, err.stack)
const { StackName } = data.Stacks[0]
CloudformationInstance.executeChangeSet({ StackName, ChangeSetName }, (err, data) => {
if (err) throw new Error(err, err.stack)
console.info('Succesfully finished creating the set: ', data)
})
})
})
Примечание: changeSetType (часть changeSetParams) необходимо явно определить как "Создать или обновить". Таким образом, используя что-то вроде:
const upsertParam = await CloudformationInstance.describeStacks(params, (err, data) => {
if(err) return 'CREATE'
return 'UPDATE'
}