VPC

VPC Interface EndpointとAPI GatewayをLambdaから呼び出す。

セキュリティ上の理由から、すべてのLambdaをVPCに移動し、VPCに追加されたインターフェースエンドポイントを介して、すべてのAWSサービスにPrivateLinkを使用しているところです。私は、実行APIサービスのエンドポイントインターフェース(プライベートDNSが有効)とAPI GatewayでREST APIを呼び出そうとしている問題があります。

Private APIの場合、APIリソースポリシーに我々のVPCが追加され、問題なくAPIを呼び出せるので、これでいいのです。しかし、我々は一つのラムダからWebhookを呼び出す必要があり、それはAWSにあるかどうかわかりません。AWSの外では問題なく動作しますが、同じアカウントのユニットテストのWebhook (REGIONAL)REST APIでは、プライベートにしてAPI Gateway用のエンドポイントIDを添付しないと403エラーで失敗します。ラムダのセキュリティグループはすべての送信トラフィックを許可しており、インターネットからpostman経由で問題なくWebhookを呼び出すことができます。

REGIONALだと403エラーになり、PRIVATEでないと動作しない理由がわからず苦戦しています。私たちはAWSの内部と外部のランダムなWebhook URLを呼び出します。私の理解では、エンドポイントインターフェースはプライベートリンクへのエントリポイントであり、すべてのAPI Gatewayコールはパブリックエンドポイントを経由しないが、それ以外は同じ動作をすることだった。どなたか、私がここで何を見逃しているのかご存知でしょうか。ドキュメントを読んでも、どこが間違っているのかわからないのです...

Much appreciated.

Hi WearsTheFoxHat,

API GW VPCエンドポイントをvpcに追加する際に「Enable Private DNS Name」を有効にすると、すべてのREGIONALおよびPRIVATE APIがVPCエンドポイントにルーティングされるようになります。

1で述べたように、「ただし、プライベートDNSが有効になっているAPI Gateway VPCエンドポイントを使用してVPCからパブリックAPIにアクセスすることはできません。」(私の強調)

これを解決するには、2つの方法があります。

  • プライベートDNS名を有効にし、すべての公開APIがEdgeに最適化されたカスタムドメイン名からアクセスされるようにする。
  • プライベートDNS名を無効にしますが、これには、エンドポイントを介してプライベートAPIを呼び出す必要があります。ホストヘッダーを明示的に設定するか2、Route53エイリアスを使用します3

参考になれば幸いです。

Best, Alf

1 AmazonAPIGatewayでプライベートAPIを作成する-APIGateway<code class = "code"> execute-api</code>のインターフェースVPCエンドポイントを作成する-https ://docs.aws.amazon.com/apigateway/latest/ developerguide / apigateway-private-apis.html#apigateway-private-api-create-interface-vpc-endpoint

2プライベートAPIを呼び出す方法-エンドポイント固有のパブリックDNSホスト名を使用してプライベートAPIを呼び出す-https ://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-api-test-invoke-url。 html#apigateway-private-api-public-dns

3プライベートAPIを呼び出す方法-Route53エイリアスを使用してプライベートAPIにアクセスする-https ://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-api-test-invoke-url.html#apigateway -private-api-route53-alias




公開されたWebhookにアクセスするには、VPCラムダにインターネットへのアクセスを許可する必要があります。これは、セキュリティグループの設定よりも少し複雑です。この記事が参考になるかもしれません。

https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/