- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
与此问题类似 How to get Task ID from within ECS container?但我想得到 TaskId
我的 Fargate
任务。你怎么能做到这一点?像其他人一样,我希望用它来记录信息。
我正在运行带有 ELK 堆栈的 Spring 应用程序进行日志记录,如果可能的话,我希望包含 TaskId
如果可能,在日志中。
编辑
顺便说一下,我实际上从来没有让它起作用,这是我的代码:
private String getTaskIdInternal() {
String url = System.getenv("ECS_CONTAINER_METADATA_URI_V4") + "/task";
logger.info("Getting ecsMetaDataURL={}", url);
if (url == null) {
throw new RuntimeException("ECS_CONTAINER_METADATA_URI_V4 env variable not defined");
}
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<JsonNode> response = restTemplate.getForEntity(url, JsonNode.class);
logger.info("ecsMetaData={}", response);
JsonNode map = response.getBody();
String taskArn = map.get("TaskARN").asText();
String[] splitTaskArn = taskArn.split("/");
String taskId = splitTaskArn[splitTaskArn.length - 1];
logger.info("ecsTaskId={}", taskId);
return taskId;
}
但我总是得到这个堆栈跟踪:
Could not get the taskId from ECS. exception=org.springframework.web.client.HttpClientErrorException: 403 Forbidden
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:118)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:103)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:732)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:690)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:646)
at org.springframework.web.client.RestTemplate.getForEntity(RestTemplate.java:325)
最佳答案
如果您尝试在 Fargate for ECS 中获取任务 ID,您可以使用 metadata endpoints .
假设您使用的是版本 1.4.0
Fargate 您可以通过 http 请求获取此信息 ${ECS_CONTAINER_METADATA_URI_V4}/task
.
来自此端点的示例响应如下
{
"Cluster": "arn:aws:ecs:us-west-2:&ExampleAWSAccountNo1;:cluster/default",
"TaskARN": "arn:aws:ecs:us-west-2:&ExampleAWSAccountNo1;:task/default/febee046097849aba589d4435207c04a",
"Family": "query-metadata",
"Revision": "7",
"DesiredStatus": "RUNNING",
"KnownStatus": "RUNNING",
"Limits": {
"CPU": 0.25,
"Memory": 512
},
"PullStartedAt": "2020-03-26T22:25:40.420726088Z",
"PullStoppedAt": "2020-03-26T22:26:22.235177616Z",
"AvailabilityZone": "us-west-2c",
"Containers": [
{
"DockerId": "febee046097849aba589d4435207c04aquery-metadata",
"Name": "query-metadata",
"DockerName": "query-metadata",
"Image": "mreferre/eksutils",
"ImageID": "sha256:1b146e73f801617610dcb00441c6423e7c85a7583dd4a65ed1be03cb0e123311",
"Labels": {
"com.amazonaws.ecs.cluster": "arn:aws:ecs:us-west-2:&ExampleAWSAccountNo1;:cluster/default",
"com.amazonaws.ecs.container-name": "query-metadata",
"com.amazonaws.ecs.task-arn": "arn:aws:ecs:us-west-2:&ExampleAWSAccountNo1;:task/default/febee046097849aba589d4435207c04a",
"com.amazonaws.ecs.task-definition-family": "query-metadata",
"com.amazonaws.ecs.task-definition-version": "7"
},
"DesiredStatus": "RUNNING",
"KnownStatus": "RUNNING",
"Limits": {
"CPU": 2
},
"CreatedAt": "2020-03-26T22:26:24.534553758Z",
"StartedAt": "2020-03-26T22:26:24.534553758Z",
"Type": "NORMAL",
"Networks": [
{
"NetworkMode": "awsvpc",
"IPv4Addresses": [
"10.0.0.108"
],
"AttachmentIndex": 0,
"IPv4SubnetCIDRBlock": "10.0.0.0/24",
"MACAddress": "0a:62:17:7a:36:68",
"DomainNameServers": [
"10.0.0.2"
],
"DomainNameSearchList": [
"us-west-2.compute.internal"
],
"PrivateDNSName": "ip-10-0-0-108.us-west-2.compute.internal",
"SubnetGatewayIpv4Address": ""
}
]
}
]
}
如您所见,您需要解析
TaskARN
获取 TaskID(如果用“/”分割,它是 ARN 的最后一部分。
For tasks using the Fargate launch type and platform versions prior to 1.4.0, the task metadata version 3 and 2 endpoint are supported. For more information, see Task Metadata Endpoint version 3 or Task Metadata Endpoint version 2.
关于amazon-web-services - 如何获取 Fargate ecs 容器的 TaskId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62989929/
我想将 taskid 绑定(bind)到我的复制器事件中配置为以并行模式运行的 createTask 和 onTaskChanged 事件。 我已将它绑定(bind)到我创建的工作流字段,但它似乎存在
celery 是否支持返回给定任务 id 之前的待处理任务数? 例如,在没有 celery worker 启动的情况下,我推送 task1、task2、task3,这三个都处于待处理状态,现在,我想要
我正在处理 View ,我想在我的 View 中打印数据库中的任务 ID 以下是我的 Controller 功能 Controller :- function editMilestone($edit
是否可以从 *mapred*.JobConf 创建一个有效的 *mapreduce*.TaskAttemptID? 背景 我需要为 ExistingFileInputFormat 编写一个 FileI
与此问题类似 How to get Task ID from within ECS container?但我想得到 TaskId我的 Fargate任务。你怎么能做到这一点?像其他人一样,我希望用它来
在我的 laravel 5.2 应用程序中,我有文件附件表单并将信息保存在文件表中。 文件/form.blade.php $project->id]) }}"> has('f
出于某种原因,我收到以下错误: Waiter TasksStopped 失败:taskId 长度应为 [32,36] 之一 我真的不知道 taskId 应该是什么意思,aws 文档也没有帮助。有谁知道
出于某种原因,我收到以下错误: Waiter TasksStopped 失败:taskId 长度应为 [32,36] 之一 我真的不知道 taskId 应该是什么意思,aws 文档也没有帮助。有谁知道
val jobConf = new JobConf(hbaseConf) jobConf.setOutputFormat(classOf[TableOutputFormat]) jobConf.s
我是一名优秀的程序员,十分优秀!