本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用執行角色定義 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存取分析器來協助識別IAM執行角色原則所需的權限。IAMAccess Analyzer 會檢閱您指定的日期範圍內的 AWS CloudTrail 記錄檔,並產生只具有該函數在該期間使用的權限的原則範本。您可以使用範本建立具有精細權限的受管理原則,然後將其附加至IAM角色。如此一來,您只會針對特定使用案例授與角色與 AWS 資源互動所需的權限。
如需詳細資訊,請參閱《IAM使用指南》中的「根據存取活動產生策略」。