AWS Lambda 執行角色 - AWS Lambda

AWS Lambda 執行角色

Lambda 函數的執行角色是 AWS Identity and Access Management (IAM) 角色,它可授予函數存取 AWS 服務和資源的許可。您會在建立函數時提供此角色,而 Lambda 會在函數被叫用時擔任此角色。你可以為開發建立一個執行角色,該角色有能向 Amazon CloudWatch 發送日誌和向 AWS X-Ray 上傳追蹤資料的許可。

檢視函式的執行角色

  1. 開啟 Lambda 主控台中的 Functions (函數) 頁面

  2. 選擇一個函數。

  3. 選擇 Configuration (組態),然後選擇 Permissions (許可)

  4. 資源摘要下,檢視函式可以存取的服務和資源。

  5. 從下拉式清單中選擇一種服務,以查看與該服務相關的許可。

您可以隨時從函式的執行角色新增或移除許可,或將函式設定為使用不同的角色。為您的函數使用 AWS 開發套件呼叫的任何服務和 Lambda 用來啟用選用功能的服務新增許可。

將許可新增至您的函數時,亦請對其程式碼或組態進行更新。若您函數的執行中執行個體具有過期的憑證,上述動作會強制停止並取代您的函數。

在 IAM 主控台中建立執行角色

根據預設,當您在 Lambda 主控台中建立函數時,Lambda 會建立具有最低許可的執行角色。您也可以在 IAM 主控台中建立執行角色。

若要在 IAM 主控台中建立執行角色

  1. 開啟 IAM 主控台中的 Roles (角色) 頁面

  2. 選擇 Create Role (建立角色)。

  3. Common use cases (一般使用案例) 下,選擇 Lambda

  4. 選擇 Next: Permissions (下一步:許可)。

  5. 連線許可政策下,選擇受 AWS 管理的政策 AWSLambdaBasicExecutionRoleAWSXRayDaemonWriteAccess

  6. 選擇 Next: Tags (下一步:標籤)。

  7. 選擇 Next:Review (下一步:檢閱)

  8. 針對 Role name (角色名稱),請輸入 lambda-role

  9. 選擇 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 – Lambda 開始追蹤對此政策的變更。

AWSLambdaBasicExecutionRole 授予將日誌上傳至 CloudWatch 的許可。

2022 年 2 月 14 日

AWSLambdaDynamoDBExecutionRole – Lambda 開始追蹤對此政策的變更。

AWSLambdaDynamoDBExecutionRole 授予從 Amazon DynamoDB 串流讀取記錄和寫入 CloudWatch Logs 的許可。

2022 年 2 月 14 日

AWSLambdaKinesisExecutionRole – Lambda 開始追蹤對此政策的變更。

AWSLambdaKinesisExecutionRole 授予從 Amazon Kinesis 資料串流讀取事件和寫入 CloudWatch Logs 的許可。

2022 年 2 月 14 日

AWSLambdaMSKExecutionRole – Lambda 開始追蹤對此政策的變更。

AWSLambdaMSKExecutionRole 授予從 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 叢集中讀取和存取記錄、管理彈性網絡介面 (ENI),和寫入 CloudWatch Logs 的許可。

2022 年 2 月 14 日

AWSLambdaSQSQueueExecutionRole – Lambda 開始追蹤對此政策的變更。

AWSLambdaSQSQueueExecutionRole 授予從 Amazon Simple Queue Service (Amazon SQS) 佇列中讀取訊息並寫入 CloudWatch Logs 的許可。

2022 年 2 月 14 日

AWSLambdaVPCAccessExecutionRole – Lambda 開始追蹤對此政策的變更。

AWSLambdaVPCAccessExecutionRole 授予管理 Amazon VPC 內 ENI 和寫入 CloudWatch Logs 的許可。

2022 年 2 月 14 日

AWSXRayDaemonWriteAccess – Lambda 開始追蹤對此政策的變更。

AWSXRayDaemonWriteAccess 授予將追蹤資料上傳至 X-Ray 的許可。

2022 年 2 月 14 日

CloudWatchLambdaInsightsExecutionRolePolicy – Lambda 開始追蹤對此政策的變更。

CloudWatchLambdaInsightsExecutionRolePolicy 授予將執行時間指標寫入 CloudWatch Lambda Insights 的許可。

2022 年 2 月 14 日

AmazonS3ObjectLambdaExecutionRolePolicy – Lambda 開始追蹤對此政策的變更。

AmazonS3ObjectLambdaExecutionRolePolicy 授予與 Amazon S3 Object Lambda 交互和寫入 CloudWatch Logs 的許可。

2022 年 2 月 14 日

針對某些功能,Lambda 主控台會嘗試將遺漏的許可新增到您客戶受管政策中的執行角色。這些政策的數量可能會相當多。請在啟用功能前將相關受 AWS 管理˙政策新增到您的執行角色,以避免建立額外政策。

當您使用事件來源映射來叫用函數時,Lambda 會使用執行角色來讀取事件資料。例如,Kinesis 的事件來源映射會從資料串流讀取事件,並將這些事件批次傳送到函數。您可以透過以下服務來使用事件來源映射:

除了受 AWS 管理的政策,Lambda 主控台會提供範本,您可用來建立擁有與其他使用案例許可相關的自訂政策。當您在 Lambda 主控台中建立函數時,您可以選擇使用來自一個或多個範本的許可建立新的執行角色。當您從藍圖建立函式時,或是您設定需要存取其他服務的選項時,也會自動套用這些範本。範例範本可在此指南的 GitHub 儲存庫取得。