Direkt zum Inhalt

外部APIを使用するlambdaのテストのために、プライベートDNSを使ってVPC内のlambdaを呼び出したい

0

AWSで、外部REST APIサービスを使うlambdaを作成しています。 製造中、テストにおいて、本物のAPIを呼ばずに、内部で作成したlambaで擬似レスポンスを返したいと思っています。 テストしたいソースには、変更を加えずテストしたいので、 PrivateDNS → API Gateway → lambda のような構成にできればと思っています。 色々な情報から、 Route53に、実際に呼び出すドメインを登録し、Aレコードを作成しました。 名前解決はできているようなのですが、結果は 403になってしまいます。

2 Antworten
0

AWS環境で外部APIを使用するLambdaをテストするために、プライベートDNSを使ってVPC内のLambdaを呼び出す構成についてご質問いただきました。

ご質問の内容から、実際の外部APIの代わりにモック応答を返すLambda関数を作成し、本番環境と同じドメイン名でアクセスできるようにしたいとのことですね。

Route53でプライベートホストゾーンを設定し、実際の外部APIのドメイン名をVPC内で内部リソースに向けるアプローチは正しい方向です。しかし、403エラーが発生しているということは、名前解決はできていても、APIへのアクセス権限に問題がある可能性があります。

この問題を解決するためには、以下の点を確認してください:

  1. API Gatewayのリソースポリシーが適切に設定されているか確認してください。VPC内からのアクセスを許可する必要があります。

  2. API GatewayとLambda間の権限設定が正しいか確認してください。API GatewayがLambdaを呼び出す権限を持っているか確認します。

  3. エンドポイントタイプとして「プライベート」を選択し、VPCエンドポイントを適切に設定しているか確認してください。

  4. VPCエンドポイントのセキュリティグループとルートテーブルの設定が適切か確認してください。

また、日本語入力に関連する問題が発生した場合は、AppStream 2.0のセッションで日本語入力モードの切り替えに使用できるキーボードショートカットがあります。例えば、「半角/全角/漢字」キーまたはAlt+`で英数字モードと日本語モードを切り替えることができます。

これらの設定を確認し調整することで、VPC内からプライベートDNSを使用してモックAPIにアクセスできるようになるはずです。
Sources
Troubleshooting AppStream 2.0 User Issues - Amazon AppStream 2.0

beantwortet vor einem Jahr

0

403エラーなのでおそらくリソースポリシーの問題だと思います。
API Gatewayのドメイン設定にあるリソースポリシーはどのような設定になっていますでしょうか?
一例ですが、以下のドキュメントで紹介されているようにVPCエンドポイントからの接続は許可されていますでしょうか?
https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-custom-domains-tutorial.html

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ],
            "Condition" : {
                "StringNotEquals": {
                    "aws:SourceVpce": "vpce-abcd1234efg"
                }
            }
        }
    ]
}

また、ドメイン設定のリソースポリシーだけでなくAPI Gateway自体のリソースポリシーも設定が必要です。
こちらも以下のようにVPCエンドポイントからの接続を許可してください。
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-resource-policies-examples.html?icmpid=apigateway_console_help#apigateway-resource-policies-source-vpc-example

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ],
            "Condition" : {
                "StringNotEquals": {
                    "aws:SourceVpce": "vpce-1a2b3c4d"
                }
            }
        }
    ]
}
EXPERTE

beantwortet vor einem Jahr

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.