首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以从码头容器内访问任务定义?

是否可以从码头容器内访问任务定义?
EN

Stack Overflow用户
提问于 2019-09-11 16:33:15
回答 1查看 501关注 0票数 0

我希望能够从容器中访问一些在ECS的task.json中烘焙的值。有可能吗?我知道我们可以在任务定义中添加environment部分,可以在docker容器中引用它,但我也可以访问其他实体,例如,假设我想从容器中访问awslogs-group。该怎么做呢?

代码语言:javascript
复制
{
  "family": "task-poc",
  "containerDefinitions": [
    {
      "image": "ABC 123",
      "name": "logging-poc-1",
      "cpu": 1024,
      "memory": 1024,
      "essential": true,
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "my_log_group",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "foo-transactions-stg-secops"
        }
      }
    }
  ]
}

对于环境变量,我只需执行以下操作

在C# - Environment.GetEnvironmentVariable("MyKey");

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-11 17:12:59

不,您不能像获取环境变量那样简单地获得日志组,但是您可以在下面得到这些指标。

代码语言:javascript
复制
curl $ECS_CONTAINER_METADATA_URI

从应用程序到获取容器元数据执行此调用

对于Linux实例:

代码语言:javascript
复制
cat $ECS_CONTAINER_METADATA_FILE

Windows实例(PowerShell):

代码语言:javascript
复制
Get-Content -path $env:ECS_CONTAINER_METADATA_FILE

这个会回来的

代码语言:javascript
复制
The following example shows a container metadata file in the READY status.

{
    "Cluster": "default",
    "ContainerInstanceARN": "arn:aws:ecs:us-west-2:012345678910:container-instance/1f73d099-b914-411c-a9ff-81633b7741dd",
    "TaskARN": "arn:aws:ecs:us-west-2:012345678910:task/2b88376d-aba3-4950-9ddf-bcb0f388a40c",
    "ContainerID": "98e44444008169587b826b4cd76c6732e5899747e753af1e19a35db64f9e9c32",
    "ContainerName": "metadata",
    "DockerContainerName": "/ecs-metadata-7-metadata-f0edfbd6d09fdef20800",
    "ImageID": "sha256:c24f66af34b4d76558f7743109e2476b6325fcf6cc167c6e1e07cd121a22b341",
    "ImageName": "httpd:2.4",
    "PortMappings": [
        {
            "ContainerPort": 80,
            "HostPort": 80,
            "BindIp": "",
            "Protocol": "tcp"
        }
    ],
    "Networks": [
        {
            "NetworkMode": "bridge",
            "IPv4Addresses": [
                "172.17.0.2"
            ]
        }
    ],
    "MetadataFileStatus": "READY"
}

最短路:

将日志配置的值传递给ENV。

代码语言:javascript
复制
        "options": {
          "awslogs-group": "my_log_group",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "foo-transactions-stg-secops"
        }

把上面的信息传递给ENV

代码语言:javascript
复制
          "environment": [
                {
                    "name": "awslogs-group",
                    "value": "my_log_group"
                },
                {
                    "name": "awslogs-region",
                    "value": "us-east-1"
                },
                {
                    "name": "awslogs-stream-prefix",
                    "value": "foo-transactions-stg-secops"
                }
            ],

然后在c#中作为ENV

代码语言:javascript
复制
n C# - Environment.GetEnvironmentVariable("awslogs-group");

长途跋涉:

  • 从容器元数据d获取TaskARN
  • 使用应用程序中的TaskArn来描述任务
  • 从“描述任务”中获取任务定义ARN
  • 描述任务定义,您将得到日志组。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57893404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档