本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
安全與許可
本節說明 AWS Lambda MicroVMs 的 IAM 角色、身分驗證字符和存取控制。
IAM 角色
組建角色
此角色會在映像建立期間使用。它需要下列許可才能擷取來源成品並產生日誌:s3:GetObject、logs:CreateLogStream、 logs:CreateLogGroup和 logs:PutLogEvents。ecr:GetAuthorizationToken 如果參考私有 ECR 映像,也請新增 。
建置角色是選用的。如果您不提供建置角色,Lambda 無法將建置日誌寫入 CloudWatch。
執行角色
此角色用於 MicroVM 執行期,以提供將日誌寫入 CloudWatch 並使用其他服務的存取許可 AWS 。
執行角色是選用的。如果您不提供執行角色,Lambda 不會向 CloudWatch 發出執行期日誌,而且您的 MicroVM 無法存取其他 AWS 服務。
生命週期掛鉤會在與其階段相關聯的角色下執行。在建置角色下執行建置時間掛鉤 (/ready 和 /validate)。執行期關聯 (/run、/suspend、 /resume和 /terminate) 會在執行角色下執行。
信任政策
這兩個角色都需要信任政策,允許 Lambda 服務主體lambda.amazonaws.com執行 sts:AssumeRole和 sts:TagSession。
身分驗證字符
權杖控制對執行 MicroVMs傳入存取。它們是連接埠範圍;每個字符指定其授予存取權的連接埠。
# Token granting access to all ports aws lambda-microvms create-microvm-auth-token \ --microvm-identifier <id> \ --expiration-in-minutes 30 \ --allowed-ports '[{"allPorts":{}}]' # Token granting access to port 8080 only aws lambda-microvms create-microvm-auth-token \ --microvm-identifier <id> \ --expiration-in-minutes 30 \ --allowed-ports '[{"port":8080}]'
Shell 存取字符
Shell 存取使用單獨的權杖 API。目標 MicroVM 必須已使用SHELL_INGRESS網路連接器 (arn:aws:lambda:) 執行。如果 MicroVM 未使用此連接器啟動,則 us-east-1:aws:network-connector:aws-network-connector:SHELL_INGRESScreate-microvm-shell-auth-token 會失敗並顯示 ValidationException:
aws lambda-microvms create-microvm-shell-auth-token \ --microvm-identifier <id> \ --expiration-in-minutes 30
如需連線至 MicroVM shell 的完整逐步解說,請參閱 Shell 存取。
標記資源
Lambda MicroVM 資源 (映像、MicroVMs) 支援組織和成本分配 AWS 的資源標籤。使用 --tags 參數或在建立映像後明確新增標籤。您也可以列出和刪除標籤,如下所示:您也可以在 IAM 政策條件中參考標籤,以控制 MicroVM 資源的存取。
# Add tags when creating an image aws lambda-microvms create-microvm-image \ --name my-app-image \ --code-artifact '{"uri":"s3://my-bucket/app.zip"}' \ --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \ --build-role-arn arn:aws:iam::123456789012:role/MicrovmBuildRole \ --tags '{"Environment":"production","Team":"platform"}' # List tags on a resource aws lambda-microvms list-tags \ --resource arn:aws:lambda:us-east-1:123456789012:microvm-image:my-app-image # Add tags to an existing resource aws lambda-microvms tag-resource \ --resource arn:aws:lambda:us-east-1:123456789012:microvm-image:my-app-image \ --tags '{"CostCenter":"12345","Project":"sandbox-platform"}' # Remove tags by key aws lambda-microvms untag-resource \ --resource arn:aws:lambda:us-east-1:123456789012:microvm-image:my-app-image \ --tag-keys '["CostCenter","Project"]'
IAM 許可參考
Lambda MicroVMs 定義下列 IAM 動作。在 IAM 政策中使用這些政策來控制 MicroVM 操作的存取。
| Action | 說明 |
|---|---|
lambda:CreateMicrovmImage |
建立新的 MicroVM 映像。 |
lambda:UpdateMicrovmImage |
更新現有的 MicroVM 映像。 |
lambda:DeleteMicrovmImage |
刪除 MicroVM 映像。 |
lambda:GetMicrovmImage |
取得 MicroVM 映像詳細資訊。 |
lambda:ListMicrovmImages |
列出帳戶中的 MicroVM 映像。 |
lambda:RunMicrovm |
執行新的 MicroVM。 |
lambda:GetMicrovm |
取得 MicroVM 狀態和詳細資訊。 |
lambda:ListMicrovms |
列出帳戶中MicroVMs。 |
lambda:SuspendMicrovm |
暫停執行中的 MicroVM。 |
lambda:ResumeMicrovm |
繼續暫停的 MicroVM。 |
lambda:TerminateMicrovm |
終止 MicroVM。 |
lambda:CreateMicrovmAuthToken |
產生 MicroVM 的身分驗證字符。 |
lambda:CreateMicrovmShellAuthToken |
產生 shell 存取字符。 |
資源 ARN 格式
# MicroVM image arn:aws:lambda:<region>:<account>:microvm-image:<image-name> # MicroVM instance arn:aws:lambda:<region>:<account>:microvm:<microvm-id> # Network connector arn:aws:lambda:<region>:<account>:network-connector:<connector-id>
範例: 運算子的最低權限政策
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:RunMicrovm", "lambda:GetMicrovm", "lambda:ListMicrovms", "lambda:SuspendMicrovm", "lambda:ResumeMicrovm", "lambda:TerminateMicrovm", "lambda:CreateMicrovmAuthToken" ], "Resource": "arn:aws:lambda:*:123456789012:microvm:*" }, { "Effect": "Allow", "Action": ["lambda:GetMicrovmImage", "lambda:ListMicrovmImages"], "Resource": "arn:aws:lambda:*:123456789012:microvm-image:*" } ] }