複数の SAM テンプレートで単一の APIGateway を使用しようとしています。このために、他の SAM テンプレートの基本テンプレートから RestApiId をインポートして、ラムダのイベント セクションで使用することを試みました。しかし、SAMには次のような制限があります
RestApiId は、同じテンプレート内の「AWS::Serverless::Api」リソースへの有効な参照である必要があります。
3 時間の調査の後、ベース テンプレートで API ゲートウェイを定義し、必要な機能を呼び出すことができるようにロール/ポリシー/定義を作成することで、それを達成できることがわかりました。Lambda を複数の Lambda 専用 SAM ファイルに分割しますが、その下に定義された Api タイプのイベントはありません。このようにして、Lambda と API Gateway を互いに独立して作成し、Swagger/OpenAPI を使用して統合し、権限を個別に調整することができます。
以下は、上記のアプローチを推奨する便利なリンクです。
このアプローチは少し複雑だと思います。API が swagger ファイルでさらに取得されている場合、ベース テンプレートの CFN 200 制限を超える可能性があります。誰かが異なるテンプレート間で apiGateway をインポートするより簡単な方法を提案してくれたら幸いです。