TerraformのAWS LambdaのAPI Gatewayからエンドポイントを取得 -- amazon-web-services フィールド と aws-lambda フィールド と terraform フィールド と terraform-provider-aws フィールド 関連 問題

Get endpoint from API Gateway for an AWS lambda in terraform












2
vote

問題

日本語

私はAWSに展開されたλを持っています、統合は lambda-proxy です。これで、Lambdaを呼び出すためのエンドポイントを私に与えるAPIゲートウェイがあります。このエンドポイントのURLをTerraform設定で入手する必要があります。

データソースはURLを公開しない

<事前> <コード> data "aws_lambda_function" "myfunction" { function_name = "my-function-name" } data "aws_api_gateway_rest_api" "my_rest_api" { name = "my-rest-api" }

api_gateway_deployment <コード> invoke_url < / CODE>ではなく、インポートできません。それ以外の場合は、リソースを宣言してから<コード> terraform import ...

を使用できました。 <事前> <コード> resource "aws_api_gateway_rest_api" "my_rest_api" { name = "my-rest-api" tags = { STAGE = "prod" } } resource "aws_api_gateway_deployment" "my_rest_api" { rest_api_id = aws_api_gateway_rest_api.my_rest_api.id stage_name = "prod" }

編集:明確にするために、LambdaはTerraformによってデプロイまたは管理されていません。

英語

I have a lambda deployed to AWS, integration is lambda-proxy, now I have an API Gateway which gives me an endpoint for calling the lambda. I need to get this endpoint URL in a terraform configuration, how can I do this?

Data sources don't expose any URL

data "aws_lambda_function" "myfunction" {   function_name = "my-function-name" }  data "aws_api_gateway_rest_api" "my_rest_api" {   name = "my-rest-api" } 

api_gateway_deployment does expose an invoke_url, but infortunately it can't be imported, otherwise I could have declared the resources and then use terraform import ...

resource "aws_api_gateway_rest_api" "my_rest_api" {   name        = "my-rest-api"   tags = {     STAGE = "prod"   } }  resource "aws_api_gateway_deployment" "my_rest_api" {   rest_api_id = aws_api_gateway_rest_api.my_rest_api.id   stage_name  = "prod" } 

EDIT: to clarify, the lambda is not deployed or managed by terraform.

</div
           
     
     

回答リスト

0
 
vote

私はわずかに異なるが同様のセットアップを持っています。

私は使用しました:
- terraform AWS APIゲートウェイカスタムドメインをプロビジョニングする - Serverless Framework 展開する&amp。ラムダスを上記で作成したAPI GW URLにリンクします。

私は terraform から出力変数としてAPI GW URLをエクスポートしました。そして、関数展開中にサーバーレスフレームワークに環境変数として渡しました。

ここにはどうやって行動中です。

1 / main.tf API GW URLのエクスポートを担当する

<事前> <コード> D516

2 / serverless.yml このAPI GW URL

へのラムダ機能のリンクを担当します。 <事前> <コード> digitalWrite(3, !switchL ); digitalWrite(4, switchL && !switchR); digitalWrite(5, switchL && switchR); digitalWrite(6, !switchL && switchR); digitalWrite(7, !switchR); 7

これはそれらをまとめたコマンド(マイオートメーションパイプライン)です。

最初の部分は、Terraformの出力変数値(すなわち、以前に作成されたAPI GW URL)を読み取り、それ自体を環境変数APIGW_DOMAIN_NAMEに設定する責任があります。

後の部分は、Lambda関数のマッピングを担当するサーバーレスドメインマネージャプラグインを初期化し、URLをAPIGW URLに展開し、サーバーレス設定を展開します。

<事前> <コード> digitalWrite(3, !switchL ); digitalWrite(4, switchL && !switchR); digitalWrite(5, switchL && switchR); digitalWrite(6, !switchL && switchR); digitalWrite(7, !switchR); 8

歓声、
RAM

 

I have a slightly different but similar setup working on my end.

I used:
- Terraform to provision AWS API Gateway Custom Domain
- Serverless Framework to deploy & link Lambdas to the API GW URL created above.

I exported API GW URL from Terraform as an Output Variable. And, passed it as an environment variable to Serverless Framework during function deployment.

Here it is how in action.

1/ main.tf responsible for exporting API GW URL

output "tf_output_aws_apigw_domain_name__domain_name" {   value = "${aws_api_gateway_domain_name.tf_aws_apigw_domain_for_apis.domain_name}" } 

2/ serverless.yml responsible for linking Lambda function to this API GW URL

[...]   customDomain:     domainName: ${env:APIGW_DOMAIN_NAME}     basePath: /myapi     stage: dev     createRoute53Record: true [...] 

Here are the commands which glue them together (in my automation pipeline).

First part is responsible to read the terraform's output variable value (i.e. API GW URL that was created earlier) and sets itself to an environment variable APIGW_DOMAIN_NAME.

Later part initializes serverless-domain-manager plug-in responsible for mapping lambda function to APIGW URL and deploys a serverless setup.

terraform init ... terraform refresh ... export APIGW_DOMAIN_NAME=`terraform output tf_output_aws_apigw_domain_name__domain_name`  sls plugin install -n serverless-domain-manager sls deploy --debug 

cheers,
ram

</div
 
 

関連する質問

1  Terraformオブジェクトの出力値を使用してください  ( Use output value in terraform object ) 
私は複数の出力変数を持っています、私は1つの親を変数にしてから他の出力をそれに入れたいです。私はそれについて検索し、私たちがそれのためにTerraformオブジェクトをユーザーにすることができるが構文権を得ることができないことがわかった。 output.tf ...

0  ASGおよびEFSのようなその他のリソースに関するTerraform動的タグ  ( Terraform dynamic tags on asg and other resources like efs ) 
aws_autoscaling_group リソースですが、ドキュメント内の例とは異なり、私はまだそこにあるものがまだありません、そしてタグを他のリソースと共有する必要があります。以下の例ではEFSになりますが、基本的に他のすべてのAWSリソースが影響を受...

0  データソースを補間します  ( Interpolate data source ) 
私は異なるMySQLバージョンAMISをサポートする一般的なTerraformコードを作成しようとしています。 MySQLのAMIは私のAWSアカウントにはありません。それらは別のAWSアカウントにあり、私のアカウントと共有しています。使ってます さまざまなア...

1  0.13にアップグレードした後、Terraform Unsupported属性 "ses_smtp_password"を修正するにはどうすればよいですか。  ( How do you fix terraform unsupported attribute ses smtp password after upgradi ) 
アップグレード後、 terraform plan :を実行するときは、次のようなメッセージが表示されていました。 <事前> <コード> Error: Invalid resource instance data in state on iam_serve...

0  TerraformとLocalStackの組み合わせでLambDapersissionを作成できません:作成:予期しない状態 ''、ターゲット 'Active'が欲しかった  ( Unable to create lambdapermission with terraform and localstack combination cre ) 
S3からLambdaへのイベントを送信するためのリソース aws_lambda_permission を追加しています。しかし、Terraformは次のエラーメッセージに不満を示しています。 <事前> <コード> Error: error waiting f...

6  ローカル変数でTerraform Proviringer "Local-Exec"を格納し、 "Remote-Exec"で変数値を使用する方法  ( How to store terraform provisioner local exec output in local variable and use ) 
私はTerraform Pocisharと協力しています。そして1つのシナリオでは、「local-exec」Provisionarを実行し、コマンドの出力[IPアドレスの配列]を次の 'Remote-Exec' Proviewarに使用する必要があります。 ...

2  Terraformを介してAWS S3 VPCエンドポイントのACLルールを作成する方法  ( How to create acl rules for an aws s3 vpc endpoint via terraform ) 
Terraformを介してS3のVPCエンドポイントを設定する必要があります。 そうするためには、適切な領域でS3で使用されるCIDRブロックの のために私のACLにルールを追加する必要があります。 <コード> aws_prefix_list データソース...

1  Terraform AWSプロバイダファイルプロバイダーのSSHタイムアウトの問題をどのようにデバッグしますか?  ( How do you debug a terraform aws provider file provisioner ssh timeout issue ) 
ファイルプロバイダをAWS_LAUNCH_CONFIGURATIONリソースに追加し、SSHタイムアウトを見ています。 <事前> <コード> P5 作成されたセキュリティグループがインバウンドSSHトラフィックを許可することを確認しました。 これは私の関連す...

0  無効または不明なキーを与えるTerraform Fargate ECS:要求されていない  ( Terraform fargate ecs giving invalid or unknown key requires compatibilities ) 
私はFargateを有効にするためにTerraformスクリプトでTerraformプランを実行しましたが、次のエラーが発生します。 エラー:AWS_ECS_TASK_DEFINITION.TASK ::無効または不明キー: 要求_compatibili...

2  VPCのTerraform Lambda(MongoDBアトラスでピアリング)接続NATゲートウェイ  ( Terraform lambda in vpc peered with mongodb atlas connection nat gateway ) 
MongoDB ATLAS Cloud ClusterをデプロイするTerraform Configを内蔵し、AWSアカウントを使用してVPCピアを設定しました。 Terraform設定は、認証情報をAWS Secrets Managerに格納します。残念な...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有