如何使用terraform和AWS运行脚本然后终止或销毁资源?

时间:2017-04-25 14:50:51

标签: bash amazon-web-services terraform

我有一个terraform脚本,在terraform apply之后成功启动AWS spot实例,然后运行bash脚本。在脚本完成运行并且创建完成后,我一直在用terraform destroy手动销毁点实例。这很不方便,因为我要么必须查看我的电子邮件以获取CloudWatch警报,要么定期检查脚本的进度。理想情况下,我可以自动销毁我自动创建的AWS资源。有谁知道我应该怎么做呢?我使用错误的AWS资源,即我应该使用ECS吗?

2 个答案:

答案 0 :(得分:2)

我找到的解决方案是创建一个空资源,然后在运行我的脚本后包含以下配置程序。

parent = {
    data: 'abcdef',
    children: {
        'child1' : {
             data: 'ghijkl',
             children: {
                'child1a' : {
                     data: 'data for child1a',
                     children: {}
                 }
             }
         },
         'child2' : {
             data: 'mnopqr',
             children: {}
         }
    }
};

function deleteNode(node, child) {
    if(node[child]) {
      delete node[child];
      return;
    }
    var children = Object.keys(node);
    for(var i = 0; i < children.length; i++) {    
      return deleteNode(node[children[i]].children, child);
    }
}
deleteNode(parent.children, 'child1a')

答案 1 :(得分:0)

您可以创建一个lambda函数,然后使用lambda调用shell脚本。

您可以在cloudwatch的帮助下安排它,在完成时终止并可以对其进行监控。

如何:Can bash script be written inside a AWS Lambda function