本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用執行角色定義 Lambda 函數許可
Lambda 函數的執行角色是 AWS Identity and Access Management (IAM) 角色,它可授予函數存取 AWS 服務和資源的許可。例如,您可以建立一個執行角色,該角色有權向 Amazon CloudWatch 傳送日誌並向 AWS X-Ray 上傳追蹤資料。本頁提供有關如何建立、檢視和管理 Lambda 函數執行角色的資訊。
當您調用函數時,Lambda 會自動擔任您的執行角色。您應該避免在函數程式碼中手動呼叫 sts:AssumeRole
以承擔執行角色。如果您的使用案例請求角色擔任自己,則您必須將角色本身作為受信任主體包含在角色的信任政策中。如需如何修改角色信任政策的詳細資訊,請參閱《IAM 使用者指南》中的修改角色信任政策 (主控台)。
為了讓 Lambda 能夠正確擔任執行角色,角色的信任政策必須將 Lambda 服務主體 (lambda.amazonaws.com
) 指定為受信任的服務。
主題
在 IAM 主控台中建立執行角色
根據預設,當您在 Lambda 主控台中建立函數時,Lambda 會建立具有最低許可的執行角色。具體而言,此執行角色包含 AWSLambdaBasicExecutionRole
受管政策,該政策會授予您的函數將事件記錄到 Amazon CloudWatch Logs 的基本許可。
您的函數通常需要額外的許可才能執行更有意義的任務。例如,您可能有一個 Lambda 函數,透過更新 Amazon DynamoDB 資料庫中的項目來回應事件。您可以透過 IAM 主控台,使用必要的許可建立執行角色。
若要在 IAM 主控台中建立執行角色
-
在 IAM 主控台中開啟 角色頁面
。 -
選擇 建立角色。
-
在受信任的實體類型下,選擇 AWS 服務。
-
在 使用案例 下,選擇 Lambda。
-
選擇 Next (下一步)。
-
選擇您想要連接至您的角色的 AWS 受管政策。例如,如果您的函數需要存取 DynamoDB,請選取 AWSLambdaDynamoDBExecutionRole 受管政策。
-
選擇 Next (下一步)。
-
輸入 角色名稱 ,然後選擇 建立角色 。
如需進一步說明,請參閱《IAM 使用者指南》中的為 AWS 服務 (主控台) 建立角色。
建立執行角色之後,將其連接至您的函數。當您在 Lambda 主控台中建立函數時,可以將先前建立的任何執行角色連接至該函數。如果您想要將新的執行角色連接至現有函數,請遵循更新函數的執行角色中的步驟。
使用 AWS CLI 建立和管理角色
如要使用 AWS Command Line Interface (AWS CLI) 建立執行角色,請使用 create-role 命令。使用此命令時,您可以指定內嵌信任政策。角色的信任政策授予指定主體擔任該角色的許可。在下列範例中,您授予 Lambda 服務主體擔任您的角色的許可。注意,JSON 字串中轉義引號的請求有所不同,這取決於您的 shell。
aws iam create-role \ --role-name lambda-ex \ --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'
您也可使用單獨的 JSON 檔案來定義角色的信任政策。在下列範例中,trust-policy.json
為當前目錄中的檔案。
範例 trust-policy.json
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
aws iam create-role \ --role-name lambda-ex \ --assume-role-policy-document file://trust-policy.json
您應該會看到下列輸出:
{ "Role": { "Path": "/", "RoleName": "lambda-ex", "RoleId": "AROAQFOXMPL6TZ6ITKWND", "Arn": "arn:aws:iam::123456789012:role/lambda-ex", "CreateDate": "2020-01-17T23:19:12Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }
使用 attach-policy-to-role 命令將許可新增至角色。下列命令可將 AWSLambdaBasicExecutionRole
受管政策新增至 lambda-ex
執行角色。
aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
建立執行角色之後,將其連接至您的函數。當您在 Lambda 主控台中建立函數時,可以將先前建立的任何執行角色連接至該函數。如果您想要將新的執行角色連接至現有函數,請遵循更新函數的執行角色中的步驟。
為 Lambda 執行角色授予最低權限存取權
當您第一次為 Lambda 函數建立 IAM 角色時,有時可能會授予超出所需的許可。在生產環境中發佈您的函數之前,最佳實務是調整政策以僅包含必要的許可。如需詳細資訊,請參閱《IAM 使用者指南》中的套用最低權限許可。
使用 IAM Access Analyzer 來協助識別 IAM 執行角色政策的必要許可。IAM Access Analyzer 會檢閱指定日期範圍的 AWS CloudTrail 記錄,並產生僅具有該函數在該時間內使用之許可的政策範本。您可以使用範本建立具有精細許可的受管政策,然後將其連接至 IAM 角色。如此一來,您只會授予角色與特定使用案例的 AWS 資源互動所需的許可。
如需詳細資訊,請參閱《IAM 使用者指南》中的根據存取活動產生政策。