django 如何在AWS ECS Docker容器中获取AWS凭据?

x759pob2  于 2022-12-01  发布在  Go
关注(0)|答案(2)|浏览(138)

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

  • 服务器: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中添加了命令,就像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,
        },
    }
}
dvtswwa3

dvtswwa31#

通过Amazon ECS tasks的IAM角色,可以指定任务中的容器可用于访问AWS资源的IAM角色。

mutmk8jj

mutmk8jj2#

使用Cloud Formation,您需要将TaskRoleArn添加到TaskDefinition.Properties。然后,您需要将适当的策略添加到角色,以获得在任务代码中使用的权限。

相关问题