我有 2 个 FIFO SQS 队列,它们接收要索引到 elasticsearch 的 JSON 消息。一个队列不断地向数据库添加增量更改并将它们添加到队列中。第二个队列用于数据库重新索引,即整个 50Tb,如果数据每几个月索引一次(所有内容都添加到队列中)。我有一个 lambda 函数,它使用来自队列的消息并将它们放入适当的队列(活动索引或正在重建的索引)。
我应该如何触发 lambda 函数以最好地处理 SQS 中的消息积压,以便它尽快处理两个队列?
我的一个限制是队列项目需要按顺序处理。如果 lambda 函数可以在没有 5 分钟限制的情况下无限期运行,我可以继续运行一个不断处理消息的函数。
我正在使用 CloudFormation 创建 lambda 函数。大多数文档假设角色将在模板中创建。有没有办法指定已经通过控制台创建的角色?此问题解决了类似的问题,但对于 EC2 实例创建:将现有 IAM 角色与 CloudFormation 中的 EC2 实例关联
我正在寻找类似的东西:
"LambdaFunction": {
"Type": "AWS::Lambda::Function",
"Properties": {
"FunctionName": "My Function"
"Runtime": "netcoreapp2.0",
"Handler": "handler.location",
"Role": "Existing_Role"
Run Code Online (Sandbox Code Playgroud) 我有一个 AWS bitnami 实例,当网站不可用时,我创建了 Route 53 运行状况检查警报。第一个操作成功触发并向我发送了一封电子邮件。但是,我还希望重新启动实例,尽管“添加 EC2”操作显示为灰色,并且显示为:“此操作仅适用于 EC2 每个实例指标”。我怎样才能添加这个?
是否与此相关:我的 EC2 实例位于爱尔兰可用区,但是当我在 Route 53 中的运行状况检查上创建警报和 SNS 主题时,它会自动在弗吉尼亚北部可用区创建它们。而且我似乎无权改变它的去向。
amazon-web-services amazon-sns amazon-route53 cloudwatch-alarms
我在NEST中使用C#.NET应用程序来创建索引.
我创建了一个弹性搜索索引,客户可以在其中查询名为index_1的索引.然后,我使用应用程序的不同实例构建另一个版本的索引,并将其命名为index_1_temp.
将index_1_temp重命名为index_1然后删除原始index_1的最安全的方法是什么?
我知道ES有别名,但我不知道如何使用它们来完成这项任务
编辑:原始索引没有与之关联的别名.
我有一个SQL Server表,其中一列(object_id
)中有重复的条目,例如:
+----+-----------+------------+
| id | object_id | status_val |
+----+-----------+------------+
| 1 | 1 | 0 |
| 2 | 1 | 0 |
| 3 | 1 | 0 |
| 4 | 2 | 0 |
| 5 | 3 | 0 |
| 6 | 3 | 0 |
+----+-----------+------------+
Run Code Online (Sandbox Code Playgroud)
我需要更新他们的所有状态,除了object_id
列中有重复的状态.所以在上表中,object_id
1和3是重复的.所以我想将它们更改status_val
为2,除了其中一个条目.结果如下:
| id | object_id | status_val |
+----+-----------+------------+
| 1 | 1 | 0 |
| 2 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将XML反序列化为具有许多相同类型元素的C#对象.为了清楚起见,我已经减少了内容.我的C#类看起来像这样:
[XmlInclude(typeof(RootElement))]
[XmlInclude(typeof(Entry))]
[Serializable, XmlRoot("Form")]
public class DeserializedClass
{
public List<Entry> listEntry;
public RootElement rootElement { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我定义Entry和RootElement类,如下所示:
public class RootElement
{
public string rootElementValue1 { get; set; }
public string rootElementValue2 { get; set; }
}
public class Entry
{
public string entryValue1 { get; set; }
public string entryValue2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我试图反序列化的XML结构如下所示:
<Entry property="value">
<entryValue1>Data 1</entryValue1>
<entryValue2>Data 2</entryValue2>
<RootElement>
<rootElementValue1>Data 3</rootElementValue1>
<rootElementValue2>Data 4</rootElementValue2>
</RootElement>
<RootElement>
<rootElementValue1>Data 5</rootElementValue1>
<rootElementValue2>Data 6</rootElementValue2>
</RootElement>
</Entry>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我将要将多个RootElement元素反序列化到C#对象的List中.要反序列化我使用以下内容: …
我能够使用 AWSSDK.SQS 包中的 AmazonSQSClient 客户端成功地将消息发送到 .NET 中的队列。
如何检查特定队列是否存在,如果没有创建它?
我正在使用 ElasticLowLevelClient 客户端来索引 elasticsearch 数据,因为它需要被索引为原始字符串,因为我无权访问 POCO 对象。我可以通过调用成功索引单个对象:
client.Index<object>(indexName, message.MessageType, message.Id,
new Elasticsearch.Net.PostData<object>(message.MessageJson));
Run Code Online (Sandbox Code Playgroud)
如何使用 ElasticLowLevelClient 客户端对索引进行批量插入?批量插入 API 都需要我没有的索引文档的 POCO,例如:
ElasticsearchResponse<T> Bulk<T>(string index, PostData<object> body,
Func<BulkRequestParameters, BulkRequestParameters> requestParameters = null)
Run Code Online (Sandbox Code Playgroud)
我可以为每个对象并行调用 API,但这似乎效率低下。
amazon-sqs ×2
aws-lambda ×2
c# ×2
nest ×2
.net ×1
alias ×1
amazon-sns ×1
bulk ×1
rename ×1
sql-server ×1
xml ×1