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,
},
}
}
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? –
Sie haben ein Leerzeichen nach $ – Robert