1

首先,我用的服務器環境:如何獲取AWS ECS泊塢化器容器中的AWS憑證?

  • 服務器:Django的+ nginx的+ uwsgi
  • 雲:搬運工+ AWS ECS
  • 記錄:AWS CloudWatch的日誌服務+箭樓第三方應用

我正在使用適用於AWS CloudWatch日誌服務的瞭望第三方應用程序。 因此,我需要將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, 
     }, 
    } 
} 

回答

1

隨着Amazon ECS tasks IAM角色,您可以指定可以由容器中的任務可以用來訪問AWS資源的IAM角色。

+0

謝謝你的回答!但我還有一個問題。 http://www.tothenew.com/blog/attach-iam-role-to-an-aws-elastic-container-service-task/我創建瞭如上的IAM鏈接並將其應用於任務定義。但是,'curl 169.254.170.2 $ AWS_CONTAINER_CREDENTIALS_RELATIVE_URI'返回404頁未找到。你知道爲什麼嗎? –

+0

您在$後有一個空格 – Robert