1

Zuerst verwende ich die Server-Umgebung:Wie erhalte ich AWS-Anmeldeinformationen im AWS-ECS-Andockcontainer?

  • Sever: django + nginx + uwsgi
  • Wolke: Docker + AWS ECS
  • Protokollierung: AWS Cloudwatch Protokolldienst + Wachturm Dritten App

Ich verwende die Wachtturm-App von Drittanbietern für den AWS CloudWatch-Protokolldienst. Also muss ich dem Docker-Container AWS-Anmeldeinformationen geben.

Wenn lokal getestet wird, verbindet docker run -v $ HOME/.aws: /root/.aws --rm -it -p 8080: 80 image_name die lokalen Anmeldeinformationen mit dem Volume.

Aber ich weiß nicht, wie man es in AWS ECS anwendet.

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

Ich bin nach dem oben genannten Artikel, und ich habe durch folgende oben genannten Artikel die .aws/ecs.confg Datei geschrieben.

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

Ich habe Befehl hinzugefügt, um die Dockerfile Likes Bello.

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

Beim Zugriff auf ECS tritt jedoch ein interner Serverfehler auf.

Ich habe auch versucht, dem Container eine "IAM-Rolle" zuzuweisen, wenn "Aufgabe definieren" Selbst wenn Sie "CloudWatchLogsFullAccess IAM-Rolle" erstellen, wird in der Dropdown-Liste "Aufgabe definieren" nichts angezeigt.

Wenn Sie einen anderen Weg haben, bitte helfen Sie mir.

Vielen Dank.

Hier ist meine Logging-Einstellung. In lokalen Tests funktioniert die Protokollierung normal.

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, 
     }, 
    } 
} 

Antwort

1

Mit IAM-Rollen für Amazon ECS tasks, können Sie eine IAM-Rolle angeben, die von den Behältern in einer Aufgabe verwendet werden können AWS-Ressourcen zugreifen zu können.

+0

Vielen Dank für die Antwort! aber ich habe noch eine Frage. http://www.totheinew.com/blog/attach-iam-role-to-an-aws-elastic-container-service-task/ Ich habe den IAM-Link wie oben erstellt und ihn auf die Task-Definitionen angewendet. "Curl 169.254.170.2 $ AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" gibt jedoch die 404-Seite nicht gefunden zurück. Weißt du, warum? –

+0

Sie haben ein Leerzeichen nach $ – Robert

Verwandte Themen