使用執行角色定義 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 Access Analyzer 來協助識別 IAM 執行角色政策的必要許可。IAM Access Analyzer 會檢閱指定日期範圍的 AWS CloudTrail 記錄,並產生僅具有該函數在該時間內使用之許可的政策範本。您可以使用範本建立具有精細許可的受管政策,然後將其連接至 IAM 角色。如此一來,您只會授予角色與特定使用案例的 AWS 資源互動所需的許可。

如需詳細資訊,請參閱《IAM 使用者指南》中的根據存取活動產生政策