AWS Lambda 執行角色
Lambda 函數的執行角色是 AWS Identity and Access Management (IAM) 角色,它可授予函數存取 AWS 服務和資源的許可。您會在建立函數時提供此角色,而 Lambda 會在函數被叫用時擔任此角色。你可以為開發建立一個執行角色,該角色有能向 Amazon CloudWatch 發送日誌和向 AWS X-Ray 上傳追蹤資料的許可。
檢視函式的執行角色
開啟 Lambda 主控台中的 Functions (函數) 頁面
。 -
選擇一個函數。
-
選擇 Configuration (組態),然後選擇 Permissions (許可)。
-
在資源摘要下,檢視函式可以存取的服務和資源。
-
從下拉式清單中選擇一種服務,以查看與該服務相關的許可。
您可以隨時從函式的執行角色新增或移除許可,或將函式設定為使用不同的角色。為您的函數使用 AWS 開發套件呼叫的任何服務和 Lambda 用來啟用選用功能的服務新增許可。
將許可新增至您的函數時,亦請對其程式碼或組態進行更新。若您函數的執行中執行個體具有過期的憑證,上述動作會強制停止並取代您的函數。
在 IAM 主控台中建立執行角色
根據預設,當您在 Lambda 主控台中建立函數時,Lambda 會建立具有最低許可的執行角色。您也可以在 IAM 主控台中建立執行角色。
若要在 IAM 主控台中建立執行角色
-
開啟 IAM 主控台中的 Roles (角色) 頁面
。 -
選擇 Create Role (建立角色)。
-
在 Common use cases (一般使用案例) 下,選擇 Lambda。
-
選擇 Next: Permissions (下一步:許可)。
-
在連線許可政策下,選擇受 AWS 管理的政策 AWSLambdaBasicExecutionRole 和 AWSXRayDaemonWriteAccess。
-
選擇 Next: Tags (下一步:標籤)。
-
選擇 Next:Review (下一步:檢閱)。
-
針對 Role name (角色名稱),請輸入
lambda-role
。 -
選擇 Create Role (建立角色)。
如需進一步說明,請參閱 IAM 使用者指南中的為 AWS 服務 (主控台) 建立角色。
為 Lambda 執行角色授予最低權限存取權
當您第一次為 Lambda 函數建立 IAM 角色時,有時可能會授予超出所需的許可。在生產環境中發佈您的函數之前,最佳實務是調整政策以僅包含必要的許可。如需詳細資訊,請參閱授予最低權限。
使用 IAM Access Analyzer 來協助識別 IAM 執行角色政策的必要許可。IAM Access Analyzer 會檢閱指定日期範圍的 AWS CloudTrail 記錄,並產生僅具有該函數在該時間內使用之許可的政策範本。您可以使用範本建立具有精細許可的受管政策,然後將其連接至 IAM 角色。如此一來,您只會授予角色與特定使用案例的 AWS 資源互動所需的許可。
若要進一步了解,請參閱 IAM 使用者指南中的根據存取活動產生政策。
使用 IAM API 管理角色
如要使用 AWS Command Line Interface (AWS CLI) 建立執行角色,請使用 create-role
命令。
在下列範例中,您指定內嵌信任政策。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
為當前目錄中的檔案。此信任政策可讓 Lambda 使用角色許可,方法是授予服務委託人 lambda.amazonaws.com
許可來呼叫 AWS Security Token Service AssumeRole
動作。
範例 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
受管政策開始。
aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Lambda 功能的 AWS 受管政策
下列 AWS 受管政策提供使用 Lambda 功能所需的許可。
變更 | 描述 | 日期 |
---|---|---|
AWSLambdaBasicExecutionRole |
|
2022 年 2 月 14 日 |
AWSLambdaDynamoDBExecutionRole |
|
2022 年 2 月 14 日 |
AWSLambdaKinesisExecutionRole |
|
2022 年 2 月 14 日 |
AWSLambdaMSKExecutionRole |
|
2022 年 2 月 14 日 |
AWSLambdaSQSQueueExecutionRole |
|
2022 年 2 月 14 日 |
AWSLambdaVPCAccessExecutionRole |
|
2022 年 2 月 14 日 |
AWSXRayDaemonWriteAccess |
|
2022 年 2 月 14 日 |
CloudWatchLambdaInsightsExecutionRolePolicy |
|
2022 年 2 月 14 日 |
AmazonS3ObjectLambdaExecutionRolePolicy |
|
2022 年 2 月 14 日 |
針對某些功能,Lambda 主控台會嘗試將遺漏的許可新增到您客戶受管政策中的執行角色。這些政策的數量可能會相當多。請在啟用功能前將相關受 AWS 管理˙政策新增到您的執行角色,以避免建立額外政策。
當您使用事件來源映射來叫用函數時,Lambda 會使用執行角色來讀取事件資料。例如,Kinesis 的事件來源映射會從資料串流讀取事件,並將這些事件批次傳送到函數。您可以透過以下服務來使用事件來源映射:
Lambda 從中讀取事件的服務
除了受 AWS 管理的政策,Lambda 主控台會提供範本,您可用來建立擁有與其他使用案例許可相關的自訂政策。當您在 Lambda 主控台中建立函數時,您可以選擇使用來自一個或多個範本的許可建立新的執行角色。當您從藍圖建立函式時,或是您設定需要存取其他服務的選項時,也會自動套用這些範本。範例範本可在此指南的 GitHub 儲存庫