我想了解 AWS Lambda 函數執行角色權限和調用權限之間的差異。我還想知道 Lambda AWS Identity and Access Management (IAM) 權限的兩種類型有什麼不同。
解決方案
重要事項: 建立 IAM 政策時,最佳實務是只授與所需的權限,以執行特定任務。
Lambda 函數執行角色權限
Lambda 執行角色權限是 IAM 權限,可授與 Lambda 函數存取特定 AWS 服務和資源的權限。當您未授與服務或資源的函數執行角色權限時,函數無法存取該服務或資源。
授與執行角色權限
若要授與 Lambda 執行角色權限,請在 IAM 政策陳述式的 Action (動作) 元素中列出服務特定的 API 動作,例如 s3:GetObject 或 sns:Publish。然後,您可以將政策連接到 Lambda 函數在調用時所擔任的 IAM 執行角色。
對於產生佇列或資料串流的服務,您必須為 Lambda 設定事件來源映射,以便對佇列或資料串流進行輪詢。事件來源映射會使用函數執行角色中的權限,來讀取和管理事件來源中的項目。
注意事項: 權限、事件結構、設定和輪詢行為會因事件來源而異。如需包含 Lambda 輪詢權限的 IAM 政策範例,請參閱允許 AWS Lambda 函數的 IAM 政策,以存取 Amazon DynamoDB 串流記錄。
Lambda 函數調用權限
Lambda 函數調用權限是 IAM 權限,可授與特定服務或資源權限來調用 Lambda 函數。當您未授與 Lambda 函數的服務或資源調用權限時,該服務或資源無法調用您的函數。
重要事項: 您必須授與服務調用權限,以推送事件資源到 Lambda 函數。例如,使用該函數的資源型政策,以授與 Amazon API Gateway 權限來調用 Lambda 函數。
授與調用權限
若要授與 Lambda 調用權限,請在 Lambda 函數的 IAM 資源型政策陳述式的 Action (動作) 元素中,列出 lambda:InvokeFunction API 動作。您可以將 Lambda 函數的資源型政策與函數的執行角色分開設定。
注意事項: 在這種情況下,lambda:InvokeFunction 動作識別碼與調用 API 作業不同。對於其他動作,動作識別碼的作業名稱帶有 lambda: 前綴。
當您使用 Lambda 主控台將觸發器新增至函數時,必要的調用權限會自動新增至函數的資源型政策中。若要授與權限給主控台中無法使用的 AWS 帳戶或服務,您必須使用 Lambda AddPermission API 動作。
如需詳細資訊,請參閱授予 AWS 服務的 Lambda 函數存取權。
相關資訊
管理 AWS Lambda 中的權限
在執行角色中使用 AWS 受管政策