使用執行角色定義 Lambda 函數許可 - AWS Lambda

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

使用執行角色定義 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主控台中建立執行角色
  1. 在主控台中開啟 [角色] 頁IAM面

  2. 選擇建立角色

  3. 受信任的實體類型下,選擇 AWS  服務

  4. 使用案例 下,選擇 Lambda

  5. 選擇 Next (下一步)

  6. 選取您要附加至角色的 AWS 受管理原則。例如,如果您的函數需要存取 DynamoDB,請選取AWSLambdaDynamoDBExecutionRole受管理的原則。

  7. 選擇 Next (下一步)

  8. 輸入 角色名稱 ,然後選擇 建立角色

如需詳細指示,請參閱《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使用指南》中的「根據存取活動產生策略」。