

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

# 授予 Lambda 函數對其他帳戶的存取權
<a name="permissions-function-cross-account"></a>

若要與另一個 共用函數 AWS 帳戶，請將跨帳戶許可陳述式新增至函數[的資源型政策](access-control-resource-based.md)。執行 [add-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html) 命令，並將帳戶 ID 指定為 `principal`。以下範例會授予帳戶 `111122223333` 以 `prod` 別名叫用 `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"}
```

以資源為基礎的政策會授予其他帳戶存取函數的許可，但不允許該帳戶中的使用者超過其許可。另一個帳戶中的使用者必須具有相對應的[使用者許可](access-control-identity-based.md)才能使用 Lambda API。

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

[別名](configuration-aliases.md)會限制其他帳戶可叫用的版本。這需要其他帳戶在函式 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 角色](access-control-identity-based.md)。