【发布时间】:2016-03-05 16:48:33
【问题描述】:
我正在编写一个 hubot 脚本来按区域列出我在 AWS 中的所有 CloudFormation 堆栈。我已经写了以下内容,它可以工作,除了数据输出的顺序。脚本是:
key = process.env.HUBOT_AWS_ACCESS_KEY_ID
secret = process.env.HUBOT_AWS_SECRET_ACCESS_KEY
defaultRegions = 'us-east-1,us-west-2,eu-west-1'
_ = require 'underscore'
moment = require 'moment'
AWS = require 'aws-sdk'
getRegionStacks = (region, logger, msg) ->
msg.send "In region #{region}:"
AWS.config.region = region
cloudFormation = new AWS.CloudFormation()
params = {
StackStatusFilter: [ 'CREATE_COMPLETE' ]
}
cloudFormation.listStacks params, (err, data) ->
if err
logger.error "Received error #{JSON.stringify err}"
logger.error err.stack
else
for stack in data.StackSummaries
msg.send stack.StackName
module.exports = (robot) ->
robot.hear /List running Cloudformation stacks/i, (msg)->
msg.send "The following CloudFormation stacks are running:"
getRegionStacks region, robot.logger, msg for region in defaultRegions.split ','
我希望输出看起来像:
The following CloudFormation stacks are running:
In region us-east-1:
demo-container1
In region us-west-2:
demo-container2
In region eu-west-1:
demo-container3
但是,在函数完成后,回调似乎都被触发了,返回的输出是这样的:
The following CloudFormation stacks are running:
In region us-east-1:
In region us-west-2:
In region eu-west-1:
demo-container1
demo-container2
demo-container3
我确定我忽略了一些简单的事情。有谁知道我做错了什么?
【问题讨论】:
标签: node.js coffeescript hubot