【问题标题】:How do I get AWS credentials in the AWS ECS docker container?如何在 AWS ECS docker 容器中获取 AWS 凭证?
【发布时间】:2017-11-02 03:28:36
【问题描述】:

首先,我使用服务器环境:

  • 服务器:django + nginx + uwsgi
  • 云:docker + AWS ECS
  • 日志记录:AWS CloudWatch 日志服务 + watchtower 第三方应用程序

我正在为 AWS CloudWatch 日志服务使用 watchtower 第三方应用程序。 所以,我需要将 AWS 凭证信息提供给 docker 容器。

在本地测试时,docker run -v $ HOME / .aws: /root/.aws --rm -it -p 8080: 80 image_name 会将本地凭据连接到卷。

但我不知道如何在 AWS ECS 中应用。

http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html

我正在关注上面的文章,并且我已经按照上面的文章编写了.aws/ecs.confg文件。

AWS_DEFAULT_REGION=ap-northeast-1
AWS_ACCESS_KEY_ID=bbbbbbbbb
AWS_SECRET_ACCESS_KEY=aaaaaaaaaaaa

我将命令添加到 Dockerfile like bello。

COPY        .aws/ecs.config             /etc/ecs/ecs.config

但是访问ECS时出现内部服务器错误。

我还尝试在“任务定义”时为容器分配“IAM 角色” 即使您创建“CloudWatchLogsFullAccess IAM 角色”,“任务定义”创建屏幕角色下拉列表中也不会显示任何内容。

如果你有其他方法,请帮助我。

谢谢。

这是我的日志记录设置。在本地测试中,日志记录工作正常。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'watchtower': {
            'level': 'DEBUG',
            'class': 'watchtower.CloudWatchLogHandler',
            'formatter': 'verbose',
        },
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['watchtower', 'console'],
            'level': 'INFO',
            'propagate': True,
        },
        'django.user': {
            'handlers': ['watchtower'],
            'level': DJANGO_LOG_LEVEL,
            'propagate': False,
        },
        'django.partner': {
            'handlers': ['watchtower'],
            'level': DJANGO_LOG_LEVEL,
            'propagate': False,
        },
    }
}

【问题讨论】:

    标签: django amazon-web-services logging docker amazon-cloudwatchlogs


    【解决方案1】:

    使用Amazon ECS tasks 的 IAM 角色,您可以指定一个 IAM 角色,任务中的容器可以使用该角色来访问 AWS 资源。

    【讨论】:

    • 感谢您的回答!但我还有一个问题。 tothenew.com/blog/… 我创建了上述链接的 IAM 并将其应用于任务定义。但是,curl 169.254.170.2 $ AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 返回 404 page not found。你知道为什么吗?
    • $ 后面有空格
    • 我仍然收到关于Unable to configure handler 'access': You must specify a region. 区域的错误curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 返回数据,我错过了什么? ..这在容器内部起作用。应该在 ec2 实例中允许吗?
    • 即使在指定区域的地方添加aws/config,django 也会出现运行问题。运行django shell 并使用日志有效。似乎 django 没有读取文件夹 /root/.aws/config
    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 2020-11-15
    • 2019-12-09
    • 2020-11-22
    • 2021-08-29
    • 2016-12-26
    • 2021-08-06
    • 1970-01-01
    相关资源
    最近更新 更多