將環境變數傳遞至 Amazon ECS容器 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將環境變數傳遞至 Amazon ECS容器

重要

建議您將敏感資料儲存在 AWS Secrets Manager 秘密 AWS Systems Manager 或參數存放區參數中。如需詳細資訊,請參閱將敏感資料傳遞至 Amazon ECS容器

環境變數檔案是 Simple Storage Service (Amazon S3) 中的物件,所有 Amazon S3 安全考量事項均適用。

您無法在 Windows 容器和 Fargate 上的 Windows 容器上使用 environmentFiles 參數。

您可以建立環境變數檔案並將其存放在 Amazon S3 中,以將環境變數傳遞至容器。

透過在檔案中指定環境變數,您可以批次導入環境變數。在容器定義中指定 environmentFiles 物件,其中具有內含環境變數檔案的 Amazon S3 儲存貯體清單。

Amazon ECS不會強制執行環境變數的大小限制,但大型環境變數檔案可能會填滿磁碟空間。使用環境變數檔案的每個任務都會導致檔案複本下載到磁碟。Amazon 會將檔案ECS移除為任務清除的一部分。

如需有關支援之環境變數的資訊,請參閱進階容器定義參數 - 環境

在容器定義中指定環境變數檔案時,請考量下列事項。

  • 對於 Amazon 上的 Amazon ECS任務EC2,您的容器執行個體需要容器代理程式版本 1.39.0或更新版本,才能使用此功能。如需如何檢查代理程式版本及更新至最新版本的資訊,請參閱「更新 Amazon ECS容器代理程式」。

  • 對於 AWS Fargate 上的 Amazon ECS任務,您的任務必須使用平台版本 1.4.0 或更新版本 (Linux) 才能使用此功能。如需詳細資訊,請參閱適用於 Amazon 的 Fargate 平台版本 ECS

    驗證作業系統平台是否支援該變數。如需詳細資訊,請參閱 容器定義其他任務定義參數

  • 檔案必須使用.env副檔名和 UTF-8 編碼。

  • 任務執行角色必須搭配 Amazon S3 的額外許可使用此功能。這可讓容器代理程式從 Amazon S3 中提取環境變數檔案。如需詳細資訊,請參閱Amazon ECS任務執行IAM角色

  • 每個任務定義限制 10 個檔案。

  • 環境檔案中的每一行都必須包含 VARIABLE=VALUE 格式的環境變數。Amazon ECS 檔案的值包含空格或引號。以 # 開頭的行會被視為註解,而忽略。如需環境變數檔案語法的詳細資訊,請參閱《在檔案中宣告預設環境變數》

    下列為適當的語法。

    #This is a comment and will be ignored VARIABLE=VALUE ENVIRONMENT=PRODUCTION
  • 如果有在容器定義中使用 environment 參數指定的環境變數,它們的優先順序高於環境檔案中包含的變數。

  • 如果指定內含相同變數的多個環境檔案,則處理順序為先進入者為優先。這表示會使用變數的第一個值,並忽略重複變數的後續值。建議您使用唯一的變數名稱。

  • 如果將環境檔案指定為容器覆寫,則會使用該檔案。此外,在容器定義中指定的任何其他環境檔案都將被忽略。

  • 下列規則適用於 Fargate 啟動類型:

    • 檔案的處理方式與原生 Docker env 檔案類似。

    • 參考 Amazon S3 中空白和存放環境變數的容器定義不會出現在容器中。

    • 不支援 Shell 逸出處理。

    • 容器進入點會解譯 VARIABLE 值。

範例

以下任務定義片段示範如何指定環境變數檔案。

{ "family": "", "containerDefinitions": [ { "name": "", "image": "", ... "environmentFiles": [ { "value": "arn:aws:s3:::amzn-s3-demo-bucket/envfile_object_name.env", "type": "s3" } ], ... } ], ... }