授予 Lambda 函數對其他帳戶的存取權 - AWS Lambda

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

授予 Lambda 函數對其他帳戶的存取權

若要與另一個 AWS 帳戶共用函數,請將跨帳戶許可陳述式新增至函數的資源型政策。執行 add-permission 命令,並將帳戶 ID 指定為 principal。以下範例會授予帳戶 111122223333prod 別名叫用 my-function 的許可。

aws lambda add-permission \ --function-name my-function:prod \ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal 111122223333 \ --output text

您應該會看到下列輸出:

{"Sid":"xaccount","Effect":"Allow","Principal":{"AWS":"arn:aws:iam::111122223333:root"},"Action":"lambda:InvokeFunction","Resource":"arn:aws:lambda:us-east-1:123456789012:function:my-function"}

以資源為基礎的政策會授予其他帳戶存取函數的許可,但不允許該帳戶中的使用者超過其許可。另一個帳戶中的使用者必須具有相對應的使用者許可才能使用 Lambda API。

若要限制另一個帳戶中使用者或角色的存取,請指定身分的完整 ARN 作為主體。例如: arn:aws:iam::123456789012:user/developer

別名會限制其他帳戶可叫用的版本。這需要其他帳戶在函式 ARN 中包含別名。

aws lambda invoke \ --function-name arn:aws:lambda:us-east-2:123456789012:function:my-function:prod out

您應該會看到下列輸出:

{
    "StatusCode": 200,
    "ExecutedVersion": "1"
}

然後,函數擁有者可以更新別名以指向新版本,而無需呼叫者變更他們叫用函數的方式。這可確保另一個帳戶不需要變更其程式碼來使用新版本,而且它只具有叫用與別名關聯之函數版本的許可。

您可以為在現有函式上操作之大部分 API 動作授予跨帳戶存取。例如,您可以授予對 lambda:ListAliases 的存取,來讓帳戶取得別名的清單,或 lambda:GetFunction 讓他們下載函式程式碼。個別新增每個許可,或使用 lambda:* 來授予對指定函式進行所有動作的存取。

若要授予其他帳戶多個動作或是不在函數上操作之動作的許可,我們建議您請使用 IAM 角色