我想要在某個帳戶中建立 AWS Lambda 函數,然後從另一個帳戶中的 AWS CloudFormation 自訂資源叫用該函數。
簡短說明
只有當函數和資源位於相同 AWS 區域時,您才可以從另一個帳戶的自訂資源調用 Lambda 函數。AWS::CloudFormation::CustomResource 的 ServiceToken 屬性必須位於您建立 AWS CloudFormation 堆疊的相同區域中。您必須使用以資源為基礎的政策,授予帳戶叫用 Lambda 函數的自訂資源許可。
**注意:**當您將 Lambda 函數與自訂資源建立關聯時,每當建立、更新或刪除自訂資源時,都會調用函數。CloudFormation 會調用 Lambda API,將請求類型和資源屬性等所有請求資料傳遞至函數。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱 AWS CLI 錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
在您的主要帳戶(帳戶 A)中,執行 AWS CLI add-permission 命令。該命令可讓 Lambda 函數存取另一個帳戶(帳戶 B)中的自訂資源。
-或-
使用 AWS::Lambda::Permission 資源,向帳戶 B 授予在帳戶 A 中調用 Lambda 函數的權限:
- 透過帳戶 A 中的堆疊建立 Lambda 函數時,請使用 AWS::Lambda::Permission 資源向帳戶 B 授予權限。
- 在帳戶 B 中,啟動包含您自訂資源的 AWS CloudFormation 堆疊。
注意:ServiceToken 務必要從帳戶 A 參考 Lambda 函數的 Amazon Resource Name (ARN)。請將要傳送至自訂資源的任何其他屬性都包含為輸入。
- 使用 Amazon CloudWatch Logs 確認帳戶 B 中的自訂資源,已在帳戶 A 中調用 Lambda 函數。
相關資訊
授予函數對其他帳戶的存取權