Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在Amazon'上获得成功/失败构建的通知;s代码部署_Amazon Web Services_Aws Code Deploy - Fatal编程技术网

Amazon web services 在Amazon'上获得成功/失败构建的通知;s代码部署

Amazon web services 在Amazon'上获得成功/失败构建的通知;s代码部署,amazon-web-services,aws-code-deploy,Amazon Web Services,Aws Code Deploy,我想构建一个工具,每当通过任何通信媒介(电子邮件、slack等)成功或失败构建CodeDeploy时,它都会通知用户。我查阅了他们的文件。。除了长时间的民意调查,我什么也没想到。知道有没有什么webhook选项可以让我注册URL并得到通知吗?2016-04-27更新 AWS官方: 现在,您可以创建触发器,在应用程序部署过程之前、期间和之后发送Amazon SNS通知。可以为整个部署或部署所针对的单个实例设置触发器,并在成功和失败时发送触发器 原始答案 还没有。 在中,要求CodeDeploy发出

我想构建一个工具,每当通过任何通信媒介(电子邮件、slack等)成功或失败构建CodeDeploy时,它都会通知用户。我查阅了他们的文件。。除了长时间的民意调查,我什么也没想到。知道有没有什么webhook选项可以让我注册URL并得到通知吗?

2016-04-27更新 AWS官方:

现在,您可以创建触发器,在应用程序部署过程之前、期间和之后发送Amazon SNS通知。可以为整个部署或部署所针对的单个实例设置触发器,并在成功和失败时发送触发器

原始答案 还没有。

在中,要求CodeDeploy发出事件,以便您可以使用Lambda来处理它们,而不是轮询详细信息

AWS工作人员的回答(重点):

我们在这里同意。 不幸的是,我不能给你一个确切的发布日期,但请密切关注我们的公告,很快就会发布


虽然没有本机解决方案,但您可以使用一种变通方法来实现这一点。可以使用lambda触发这些事件。在AWS博客上,他们展示了当您将文件上传到S3()时如何通过lambda触发codedeploy。使用相同的概念,您可以让lambda函数侦听错误/成功bucket,并修改codedeploy包以将文件上载到s3,然后您可以使用该文件作为事件触发器通过SES()发送电子邮件,或者联系执行您所需操作的web服务/页面。这可能有点做作,但它完成了任务

以下是AWS Lambda函数的要点,该函数向Slack发布格式化的CodeDeploy通知

var services='/services/…';//用你的Slack服务更新此。。。
var channel=“#aws部署”//这与松弛通道有关
var https=require('https');
var util=require('util');
var formatFields=函数(字符串){
变量
message=JSON.parse(字符串),
字段=[],
部署概述;
//确保我们有一个有效的答复
如果(信息){
字段=[
{
“标题”:“任务”,
“值”:message.eventTriggerName,
“短”:正确
},
{
“头衔”:“地位”,
“值”:message.status,
“短”:正确
},
{
“标题”:“申请”,
“值”:message.applicationName,
“短”:正确
},
{
“标题”:“部署组”,
“值”:message.deploymentGroupName,
“短”:正确
},
{
“标题”:“区域”,
“值”:message.region,
“短”:正确
},
{
“标题”:“部署Id”,
“值”:message.deploymentId,
“短”:正确
},
{
“标题”:“创建时间”,
“值”:message.createTime,
“短”:正确
},
{
“标题”:“完成时间”,
“值:”((message.completeTime)?message.completeTime:“”),
“短”:正确
}
];
if(message.deploymentOverview){
deploymentOverview=JSON.parse(message.deploymentOverview);
推(
{
“标题”:“成功”,
“值”:部署概述。成功,
“短”:正确
},
{
“标题”:“失败”,
“值”:部署概述。失败,
“短”:正确
},
{
“标题”:“跳过”,
“值”:部署概述。已跳过,
“短”:正确
},
{
“标题”:“进行中”,
“值”:deploymentOverview.InProgress,
“短”:正确
},
{
“标题”:“待定”,
“值”:部署概述。待定,
“短”:正确
}
);
}
}
返回字段;
}
exports.handler=函数(事件、上下文){
var postData={
“频道”:频道,
“用户名”:“AWS SNS通过Lamda::CodeDeploy状态”,
“文本”:“*”+事件.记录[0].Sns.Subject+“*”,
“图标表情符号”::aws:
};
var fields=formatFields(event.Records[0].Sns.Message);
var message=event.Records[0].Sns.message;
var severity=“良好”;
var危险信息=[
“但有错误”,
“红色”,
“在中止部署期间”,
“失败”,
“未能部署应用程序”,
“未能部署配置”,
“具有从属对象”,
“未被授权执行”,
“待降级”,
“堆栈删除失败”,
“命令执行不成功”,
“您没有权限”,
“您的配额允许再运行0个实例”];
var警告消息=[
“操作中止。”,
“变黄”,
“添加实例”,
“降级为信息”,
“删除SNS主题”,
“当前正在以所需容量运行”,
“确认信息”,
“确认警告”,
“待定初始化”,
“已删除实例”,
“环境回滚”
];
用于(风险值危险信息中的风险值危险信息项){
if(message.indexOf(dangerMessages[dangerMessagesItem])!=-1){
严重性=“危险”;
打破
}
}
//仅在必要时检查警告消息
如果(严重性=“良好”){
for(警告消息中的var warningMessagesItem){
if(message.indexOf(warningMessages[warningMessagesItem])!=-1){
严重性=“警告”;
打破
}
}
}
postData.attachments=[
{
“颜色”:严重性,
“字段”:字段
}
];
变量选项={
方法:“POST”,
主机名:“hooks.slack.com”,
港口:443,
路径:上面定义的服务//路径
};
var-re