本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon 中使用 Secrets Manager 秘密指定敏感資料 ECS
Amazon ECS可讓您將敏感資料存放在 AWS Secrets Manager 秘密中,然後在容器定義中參考,以將敏感資料注入容器。如需詳細資訊,請參閱將敏感資料傳遞至 Amazon ECS容器。
了解如何建立 Secrets Manager 秘密、在 Amazon ECS任務定義中參考秘密,然後在顯示秘密內容的容器內查詢環境變數,以確認它是否有效。
必要條件
本教學課程假設已完成下列先決條件:
-
已完成「設定 以使用 Amazon ECS」中的步驟。
-
您的使用者具有建立 Secrets Manager 和 Amazon ECS 資源所需的IAM許可。
步驟 1:建立 Secrets Manager 機密
您可以使用 Secrets Manager 主控台為您的敏感資料建立秘密。在本教學課程中,我們將建立基本秘密,以供存放容器中稍後參考的使用者名稱和密碼。如需詳細資訊,請參閱AWS Secrets Manager 《 使用者指南》中的建立 AWS Secrets Manager 秘密。
要儲存在此秘密中的鍵/值對是教學課程結尾處容器中的環境變量值。
儲存秘密ARN以在任務執行IAM政策和後續步驟的任務定義中參考。
步驟 2:將秘密許可新增至任務執行角色
若要ECS讓 Amazon 從 Secrets Manager 秘密中擷取敏感資料,您必須擁有任務執行角色的秘密許可。如需詳細資訊,請參閱Secrets Manager 或 Systems Manager 許可。
步驟 3:建立任務定義
您可以使用 Amazon ECS主控台來建立參考 Secrets Manager 秘密的任務定義。
建立一個指定秘密的任務定義
使用 IAM 主控台,以所需的許可更新您的任務執行角色。
在 https://console.aws.amazon.com/ecs/v2
開啟主控台。 -
在導覽窗格中,選擇 Task Definitions (任務定義)。
-
選擇建立新的任務定義,使用 建立新的任務定義JSON。
-
在JSON編輯器方塊中,輸入下列任務定義JSON文字,確保您指定您在步驟 1 中建立ARN的 Secrets Manager 秘密,以及您在步驟 2 中更新的任務執行角色。選擇 Save (儲存)。
-
{ "executionRoleArn": "
arn:aws:iam::
", "containerDefinitions": [ { "entryPoint": [ "sh", "-c" ], "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ], "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "cpu": 10, "secrets": [ { "valueFrom": "aws_account_id
:role/ecsTaskExecutionRolearn:aws:secretsmanager:
", "name": "username_value" } ], "memory": 300, "image": "httpd:2.4", "essential": true, "name": "ecs-secrets-container" } ], "family": "ecs-secrets-tutorial" }region
:aws_account_id
:secret:username_value -
選擇 Create (建立)。
步驟 4:建立叢集
您可以使用 Amazon ECS主控台建立包含容器執行個體的叢集,以執行任務。如果您的現有叢集有至少一個向其註冊的容器執行個體,並有可用資源可執行為此教學課程建立的一個任務定義執行個體,您可以跳到下一個步驟。
在本教學課程中,我們將使用 Amazon ECS最佳化的 Amazon Linux 2 建立具有一個t2.micro
容器執行個體的叢集AMI。
如需如何為EC2啟動類型建立叢集的詳細資訊,請參閱 為 Amazon EC2啟動類型建立 Amazon ECS叢集。
步驟 5:執行任務
您可以使用 Amazon ECS主控台,使用您建立的任務定義來執行任務。在本教學課程中,我們將會執行使用 EC2 啟動類型的任務,並使用我們在前一個步驟中建立的叢集。
如需有關如何執行任務的資訊,請參閱 將應用程式作為 Amazon ECS任務執行。
步驟 6:驗證
您可以使用下列步驟,驗證是否已成功完成所有步驟,以及是否已在您的容器中正確建立環境變數。
驗證是否已建立環境變數
-
尋找容器執行個體的公有 IP 或DNS地址。
在 https://console.aws.amazon.com/ecs/v2
開啟主控台。 -
在導覽窗格中,選擇叢集,然後選擇您建立的叢集。
-
選擇基礎設施,然後選擇容器執行個體。
-
記錄執行個體的公有 IP 或公DNS有 IP。
-
如果您使用的是 macOS 或 Linux 電腦,請使用下列命令連線到您的執行個體,並替換為您私有金鑰的路徑及執行個體的公有地址:
$
ssh -i/path/to/my-key-pair
.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
如需使用 Windows 電腦的詳細資訊,請參閱《Amazon EC2使用者指南》中的使用 Pu 連線至 Linux 執行個體TTY。
重要
如需連線到執行個體時的任何問題詳細資訊,請參閱《Amazon EC2使用者指南》中的連線至執行個體的故障診斷。
-
列出在執行個體上執行的容器。請記下
ecs-secrets-tutorial
容器的容器 ID。docker ps
-
使用上一個步驟輸出中的容器 ID,連接到
ecs-secrets-tutorial
容器。docker exec -it
container_ID
/bin/bash -
使用
echo
命令來列印環境變數的值。echo $username_value
如果教學課程成功,您應該會看到以下輸出:
password_value
注意
或者,您可以使用
env
(或printenv
) 命令列出您容器中的所有環境變數。
步驟 7:清除
完成此教學課程時,建議您清除相關聯的資源,以免未使用的資源產生費用。
清除資源
在 https://console.aws.amazon.com/ecs/v2
開啟主控台。 -
在導覽窗格中,選擇叢集。
-
在叢集頁面上,選擇叢集。
-
選擇 Delete Cluster (刪除叢集)。
-
在確認方塊中,輸入 Delete
cluster name
,然後選擇 Delete。 開啟位於 IAM 的 https://console.aws.amazon.com/iam/
主控台。 -
在導覽窗格中,選擇角色。
-
搜尋
ecsTaskExecutionRole
的角色清單並加以選取。 -
選擇 Permissions (許可),然後選擇 ECSSecretsTutorial 旁邊的 X。選擇移除。
-
在 開啟 Secrets Manager 主控台https://console.aws.amazon.com/secretsmanager/
。 -
選取您所建立的 username_value 秘密,然後選擇 Actions (動作)、Delete secret (刪除秘密)。