如何在 AWS ECS docker 容器中获取 AWS 凭证?
How do I get AWS credentials in the AWS ECS docker container?
首先,我使用的服务器环境:
- 服务器: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时出现内部服务器错误
我也曾尝试在 "Task define" 时将 "IAM role" 分配给容器
即使您创建 "CloudWatchLogsFullAccess IAM role","Task define" 创建屏幕角色下拉列表中也不会出现任何内容。
如果你有其他方法,请帮助我。
谢谢。
这是我的日志记录设置。本地测试,logging正常。
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,
},
}
}
使用 Amazon ECS tasks 的 IAM 角色,您可以指定一个 IAM 角色,任务中的容器可以使用该角色来访问 AWS 资源。
首先,我使用的服务器环境:
- 服务器: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时出现内部服务器错误
我也曾尝试在 "Task define" 时将 "IAM role" 分配给容器 即使您创建 "CloudWatchLogsFullAccess IAM role","Task define" 创建屏幕角色下拉列表中也不会出现任何内容。
如果你有其他方法,请帮助我。
谢谢。
这是我的日志记录设置。本地测试,logging正常。
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,
},
}
}
使用 Amazon ECS tasks 的 IAM 角色,您可以指定一个 IAM 角色,任务中的容器可以使用该角色来访问 AWS 资源。