本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
授予 Lambda 函數對其他帳戶的存取權
若要與另一個 AWS 帳戶共用函數,請將跨帳戶許可陳述式新增至函數的資源型政策。執行 add-permissionprincipal
。以下範例會授予帳戶 111122223333
以 prod
別名叫用 my-function
的許可。
aws lambda add-permission \ --function-name my-function:
prod
\ --statement-id xaccount \ --action lambda:InvokeFunction \ --principal111122223333
\ --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 角色。