質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

399閲覧

AWSのSAMテンプレートで既存のAPI Gatewayを指定する方法

takabooo

総合スコア25

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2023/11/17 04:06

awsのsamテンプレートでlamda関数とrest apiを定義しています。
lambda関数のapiパスは既存のapi gatewayと結びつけたいと思っています。

AWSTemplateFormatVersion: "2010-09-09" Transform: "AWS::Serverless-2016-10-31" Description: "aws:states:opt-out" Resources: DevApiCompanies: Type: "AWS::Serverless::Function" Properties: FunctionName: "my-test" Handler: index.handler Runtime: nodejs18.x Description: "aws:states:opt-out" MemorySize: 128 Timeout: 60 Role: "arn:aws:iam::xxxxxxxx" Events: Api: Type: Api Properties: Path: "/hello" Method: GET RestApiId: !Ref RestApi RestApi: Type: AWS::Serverless::Api Properties: Name: my-ag StageName: prod

上記のようにすると、my-agというapi gatwewayに紐付けできるのですが、すでにあるmy-agではなく新たに作成されたmy-agに紐づいてしまいます。
そこで、RestApiIdの値を既存のapi gatewayのリソースIDに書き換えてみたところ、テンプレートに定義されたリソースを指定してくださいという意味合いのエラーが出てしまいます。
当方の目標とする既存のapi gatwewayを指定する方法はどのようにして記述すれば良いのでしょうか。
リファレンスを見ましたが特にそのようなオプションが見つけられませんでした。ご存知の方おりましたらよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/11/17 14:28

私が今やりたいことなのでChatGPTに聞いてみました。 AWS Serverless Application Model (SAM) を使用して既存のAPI GatewayをLambda関数のトリガーとして指定する方法は以下の通りです: 1.Apiリソースの指定: SAMテンプレート内で、既存のAPI Gatewayを指定するためにApiリソースを使用します。このリソースをCloudFormationスタックにインポートし、RestApiIdをイベントソースとして使用することができます。 2.Lambda関数の設定: Lambda関数の定義内で、イベントソースとしてこのAPI Gatewayを指定します。これにより、指定したAPI GatewayがLambda関数のトリガーとして機能します 。 3.カスタムドメインの使用: カスタムドメインを使用している場合、SAMを使用して新しいAPI Gatewayを既存のカスタムドメインに関連付けることも可能です。これにより、マイクロサービスごとにベースパスを作成することができます 現在私がやっているのは2のコンパネで作ったリソースを使ってプログラミングするというものです。詳しいことはAIチャットに聞いていただければいいかと思いますが、あなたがやりたいのは1に近いと思います。一行設定すれば動くようなものを望んでいると思います(私もそうです)が一回、Cloudformationに落とさないといけないみたいですね。
guest

回答1

0

ベストアンサー

ざっと見た感じSAMでは難しいのではないでしょうか。
差し支えないのであれば素直に作り直すのが早いと思います。

SAM以外のツール(Terraformなど)を使ったらできないこともないと思います。

投稿2023/11/17 08:40

yu_1985

総合スコア7640

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takabooo

2023/11/18 06:24

ありがとうございます。ということはやはりsamでは既存のapi gatewayを指定するということは無理なのですね。 Terraformというのは使ったことがないので調べてみます。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問