2017-06-02 39 views
0

環境変数は何らかの理由でECSタスクで設定しましたが、実行中のコンテナに設定されていません。私は何が欠けていますか?なぜ値は空ですか?AWS ECS環境変数が設定されていません

AirflowWebTaskDefinition: 
    Type: AWS::ECS::TaskDefinition 
    Properties: 
    Family: !Join ['', [!Ref 'AWS::StackName', -dl-airflow-web]] 
    ContainerDefinitions: 
    - Name: dl-airflow-web 
     Cpu: '10' 
     Essential: 'true' 
     Image: companyname-docker-snapshot-local.jfrog.io/docker-airflow:1.0 
     Command: ['webserver'] 
     Memory: '1024' 
     LogConfiguration: 
     LogDriver: awslogs 
     Options: 
      awslogs-group: !Ref 'AirflowCloudwatchLogsGroup' 
      awslogs-region: !Ref 'AWS::Region' 
      awslogs-stream-prefix: dl-airflow-web 
     PortMappings: 
     - 
     ContainerPort: 8080 
     Environment: 
     - Name: LOAD_EX 
     Value: n 
     - Name: EXECUTOR 
     Value: Celery 
     - Name: MYQL_HOST 
     Value: !Ref 'RDSDNSName' 
     - Name: MYSQL_PORT 
     Value: !Ref 'RDSPort' 
     - Name: MYSQL_DB 
     Value: !Ref 'AirflowDBName' 
     - Name: USERNAME 
     Value: !Ref 'AirflowDBUser' 
     - Name: PASSWORD 
     Value: !Ref 'AirflowDBPassword' 

をそして私はhttps://github.com/puckel/docker-airflowのフォークですドッカの画像を使用しています:

私はAWS::ECS::TaskDefinition次持っています。それらがドッキングウィンドウrunコマンドで設定されていない場合は$MYSQL_*変数がデフォルトに設定されている

#!/usr/bin/env bash 

AIRFLOW_HOME="/usr/local/airflow" 
CMD="airflow" 
TRY_LOOP="20" 

: ${MYSQL_HOST:="default-mysql"} 
: ${MYSQL_PORT:="3306"} 

次のように画像のためのentrypointは、環境変数を検査します。

私は以下の構成を使用してdocker-composeからのコンテナイメージを実行すると、それが動作し、環境変数がすべて設定されています。私のentrypoint.sh

webserver: 
    image: companyname-docker-snapshot-local.jfrog.io/docker-airflow:1.0 
    environment: 
    - LOAD_EX=n 
    - EXECUTOR=Celery 
    - MYSQL_HOST=mysql 
    - MYSQL_PORT=3306 
    - USERNAME=dev-user 
    - PASSWORD=dev-secret-pw 
    - SQS_HOST=sqs 
    - SQS_PORT=9324 
    - AWS_DYNAMODB_ENDPOINT=http://dynamodb:8000 
    ports: 
    - "8090:8080" 
    command: webserver 

そして、次のコマンドを実行します。

echo "$(date) - Checking for MYSQL (host: $MYSQL_HOST, port: $MYSQL_PORT) connectivity" 

ログこの出力:

Fri Jun 2 12:55:26 UTC 2017 - Checking for MYSQL (host: mysql, port: 3306) connectivity 

しかし、私のCloudWatchのログを検査すると、デフォルトの値を使用して、この出力を示しています。

Fri Jun 2 14:15:03 UTC 2017 - Checking for MYSQL (host: default-mysql, port: 3306) connectivity 

をしかし、私は、EC2のホストにsshをdocker inspect [container_id]を実行し、環境変数が設定されていることを確認することができます

Config": { 
    "Hostname": "...", 
    "Domainname": "", 
    "User": "airflow", 
    "AttachStdin": false, 
    "AttachStdout": false, 
    "AttachStderr": false, 
    "ExposedPorts": { 
     "5555/tcp": {}, 
     "8080/tcp": {}, 
     "8793/tcp": {} 
    }, 
    "Tty": false, 
    "OpenStdin": false, 
    "StdinOnce": false, 
    "Env": [ 
     "MYSQL_PORT=3306", 
     "PASSWORD=rds-secret-pw", 
     "USERNAME=rds-user", 
     "EXECUTOR=Celery", 
     "LOAD_EX=n", 
     "MYQL_HOST=rds-cluster-name.cluster-id.aws-region.rds.amazonaws.com", 
     "MYSQL_DB=db-name", 
     "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", 
     "DEBIAN_FRONTEND=noninteractive", 
     "TERM=linux", 
     "LANGUAGE=en_US.UTF-8", 
     "LANG=en_US.UTF-8", 
     "LC_ALL=en_US.UTF-8", 
     "LC_CTYPE=en_US.UTF-8", 
     "LC_MESSAGES=en_US.UTF-8" 
    ], 
    "Cmd": [ 
     "webserver" 
    ], 
    "Image": "companyname-docker-snapshot-local.jfrog.io/docker-airflow:1.0", 
    "Volumes": null, 
    "WorkingDir": "/usr/local/airflow", 
    "Entrypoint": [ 
     "/entrypoint.sh" 
    ], 
    "OnBuild": null, 
    "Labels": { 
     "com.amazonaws.ecs.cluster": "...", 
     "com.amazonaws.ecs.container-name": "...", 
     "com.amazonaws.ecs.task-arn": "...", 
     "com.amazonaws.ecs.task-definition-family": "...", 
     "com.amazonaws.ecs.task-definition-version": "16" 
    } 
}, 

そして、私が実行している場合を:

$ docker exec [container-id] echo $MYSQL_HOST 

出力が空

答えて

0

タスクdですefinitionは、env変数MYQL_HOSTを定義します。あなたはドッカーの作成でその権利を得ました。ちょうどCF、それを修正し、それはうまくいくはずです。

関連する問題