簡體   English   中英

如何在Node.js中訪問ECS任務定義環境變量?

[英]How to access ecs task definition environment variables in nodejs?

我正在嘗試使用process.env訪問我的nodejs應用程序內部任務定義中設置的環境變量。

我使用Dockerfile創建項目的映像,將其上傳到ECR,然后在任務定義中使用此映像。

我在Dockerfile中為nodejs應用設置了環境變量,如下所示:

# Dockerfile
...
RUN ROOT_DIR='/'
RUN PUBLIC_DIR='/public'
...

我有這個任務定義:

# task_definition.json
...
"environment" : [
    { "name" : "KeyOne", "value" : "KeyOneValue" },
    { "name" : "KeyTwo", "value" : "KeyTwoValue" }
]
...

我無法訪問process.env.KeyOne / process.env.KeyTwo (它們是undefined

我希望能夠從任務定義中設置這些環境變量,然后使用process.env在nodejs應用程序內引用它們,而不是在Dockerfile中設置它們。

這是我剛剛使用ECS Fargate對我的帳戶進行的測試。 可從NodeJS代碼訪問任務定義中的所有env變量。

源代碼位於https://github.com/sebsto/ecs-demo/tree/master/so

TaskDefinition摘錄:

"environment": [
          {
            "name": "KEY1",
            "value": "VALUE1"
          }
        ],

代碼提取:

app.get('/', (req, res) => {
  res.send(`Hello world<br/>${JSON.stringify(process.env, null, 2)}`);
});

輸出:

Hello world
{ "KEY1": "VALUE1", "NODE_VERSION": "10.16.0", "HOSTNAME": "ip-10-0-0-83.eu-west-1.compute.internal", "YARN_VERSION": "1.16.0", "HOME": "/root", "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI": "/v2/credentials/b630982f-dffb-4ccc-9c8b-8311e42b57ab", "AWS_EXECUTION_ENV": "AWS_ECS_FARGATE", "AWS_DEFAULT_REGION": "eu-west-1", "ECS_CONTAINER_METADATA_URI": "http://169.254.170.2/v3/12186f93-de7b-47e3-a096-b0f23d7e0e81", "PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "AWS_REGION": "eu-west-1", "PWD": "/usr/src/app" }

我將容器保持啟動並運行幾個月,您可以在http://52.18.232.75:8080/進行自我測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM