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

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

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

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

Amazon VPC

Amazon VPC(Amazon Virtual Private Cloud) は、仮想的なネットワークです。 独自の IP アドレスレンジの選択、サブネットの作成、ルートテーブル、 ネットワークゲートウェイの設定など、仮想ネットワーク環境を完全にコントロール可能です。

AWS(Amazon Web Services)

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

Q&A

1回答

551閲覧

awsのlambda+VPCの構成でインターネットに繋がったり繋がらなかったりする

Fushihara

総合スコア52

AWS Lambda

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

Amazon VPC

Amazon VPC(Amazon Virtual Private Cloud) は、仮想的なネットワークです。 独自の IP アドレスレンジの選択、サブネットの作成、ルートテーブル、 ネットワークゲートウェイの設定など、仮想ネットワーク環境を完全にコントロール可能です。

AWS(Amazon Web Services)

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

0グッド

1クリップ

投稿2022/08/31 20:38

前提

nodejsでhttps://example.com にアクセスするコードを書いて、lambdaで動かしています。
VPCを設定していない時は問題なくアクセス出来るのですが、VPCを設定するとアクセス出来たり出来なかったりします。

アクセスできる時は問題なく出来るのですが、1時間後等に実行すると、httpリクエストが返ってこなくなり lambdaのタイムアウトになってしまいます。
lambdaのタイムアウトの時間は1分まで伸ばして試しましたが、状況は変わりませんでした。
実行方法は、awsのlambdaの管理画面のテストページからコードを実行して確認しました。

httpにアクセスするnodejsのコード抜粋は以下の通りです。

js:index.ts

1async function getExampleCom(accessUrl: string) { 2 console.log(`${accessUrl} へのアクセス 開始`); // この行のログは出力されているので、lambdaのコールドスタート問題でも無いと想います 3 try { 4 const response = await fetch(accessUrl); 5 const body = await response.text(); 6 const bodyText = body.replace(/\s+/g, " "); 7 console.log(`${accessUrl} へのアクセス 成功 ${bodyText.substring(0, 100)}`); 8 } catch (e) { 9 console.log(`${accessUrl} へのアクセス 失敗 ${e}`); 10 } 11}

VPCを設定した事が問題だと思うのですが、時間が経つと(lambdaから)インターネットにアクセス出来たり 出来なくなったりする現象が解消出来ません。
ご存じの方、教えてください。

VPCの環境はcloudFormationで以下の通りです。
こちらから抜粋して一部修正しています。

yaml

1AWSTemplateFormatVersion: '2010-09-09' 2Transform: 'AWS::Serverless-2016-10-31' 3Description: hoge環境 4Resources: 5 6Resources: 7 VPC: 8 Type: "AWS::EC2::VPC" 9 Properties: 10 CidrBlock: "10.0.0.0/16" 11 InstanceTenancy: "default" 12 EnableDnsHostnames: true # 2022-0901-0352 この行を追加 13 EnableDnsSupport: true # 2022-0901-0352 この行を追加 14 Tags: 15 - Key: "Name" 16 Value: "vpc-test-2022-0901-0106" 17 18 InternetGateway: 19 Type: "AWS::EC2::InternetGateway" 20 21 VPCGatewayAttachment: 22 Type: "AWS::EC2::VPCGatewayAttachment" 23 Properties: 24 VpcId: !Ref "VPC" 25 InternetGatewayId: !Ref "InternetGateway" 26 27 RouteTable: 28 Type: "AWS::EC2::RouteTable" 29 Properties: 30 VpcId: !Ref "VPC" 31 32 InternetRoute: 33 Type: "AWS::EC2::Route" 34 Properties: 35 DestinationCidrBlock: "0.0.0.0/0" 36 GatewayId: !Ref InternetGateway 37 RouteTableId: !Ref RouteTable 38 39 SubnetA: 40 Type: "AWS::EC2::Subnet" 41 Properties: 42 AvailabilityZone: !Select 43 - 0 44 - !GetAZs 45 Ref: 'AWS::Region' 46 VpcId: !Ref "VPC" 47 CidrBlock: "10.0.0.0/24" 48 49 SubnetB: 50 Type: "AWS::EC2::Subnet" 51 Properties: 52 AvailabilityZone: !Select 53 - 1 54 - !GetAZs 55 Ref: 'AWS::Region' 56 VpcId: !Ref "VPC" 57 CidrBlock: "10.0.1.0/24" 58 59 SubnetC: 60 Type: "AWS::EC2::Subnet" 61 Properties: 62 AvailabilityZone: !Select 63 - 2 64 - !GetAZs 65 Ref: 'AWS::Region' 66 VpcId: !Ref "VPC" 67 CidrBlock: "10.0.2.0/24" 68 69 SubnetARouteTableAssociation: 70 Type: "AWS::EC2::SubnetRouteTableAssociation" 71 Properties: 72 RouteTableId: !Ref RouteTable 73 SubnetId: !Ref SubnetA 74 75 EIP: 76 Type: "AWS::EC2::EIP" 77 Properties: 78 Domain: "vpc" 79 80 Nat: 81 Type: "AWS::EC2::NatGateway" 82 Properties: 83 AllocationId: !GetAtt "EIP.AllocationId" 84 SubnetId: !Ref "SubnetA" 85 86 NatRouteTable: 87 Type: "AWS::EC2::RouteTable" 88 Properties: 89 VpcId: !Ref "VPC" 90 91 NatRoute: 92 Type: "AWS::EC2::Route" 93 Properties: 94 DestinationCidrBlock: "0.0.0.0/0" 95 NatGatewayId: !Ref "Nat" 96 RouteTableId: !Ref "NatRouteTable" 97 98 SubnetBRouteTableAssociation: 99 Type: "AWS::EC2::SubnetRouteTableAssociation" 100 Properties: 101 RouteTableId: !Ref NatRouteTable 102 SubnetId: !Ref SubnetB 103 104 SubnetCRouteTableAssociation: 105 Type: "AWS::EC2::SubnetRouteTableAssociation" 106 Properties: 107 RouteTableId: !Ref NatRouteTable 108 SubnetId: !Ref SubnetC 109 110 InstanceSecurityGroup: 111 Type: "AWS::EC2::SecurityGroup" 112 Properties: 113 GroupName: "all-wildcard-security-group" 114 GroupDescription: "Lambda Traffic" 115 VpcId: !Ref "VPC" 116 SecurityGroupEgress: 117 - IpProtocol: "-1" 118 CidrIp: "0.0.0.0/0" 119 120 InstanceSecurityGroupIngress: 121 Type: "AWS::EC2::SecurityGroupIngress" 122 DependsOn: "InstanceSecurityGroup" 123 Properties: 124 GroupId: !Ref "InstanceSecurityGroup" 125 IpProtocol: "tcp" 126 FromPort: "0" 127 ToPort: "65535" 128 SourceSecurityGroupId: !Ref "InstanceSecurityGroup" 129 130 InstanceSecurityGroupIngress2: 131 Type: "AWS::EC2::SecurityGroupIngress" 132 DependsOn: "InstanceSecurityGroup" 133 Properties: 134 GroupId: !Ref "InstanceSecurityGroup" 135 IpProtocol: -1 136 CidrIp: "0.0.0.0/0" 137 138 InstanceSecurityGroupIngress3: 139 Type: "AWS::EC2::SecurityGroupIngress" 140 DependsOn: "InstanceSecurityGroup" 141 Properties: 142 GroupId: !Ref "InstanceSecurityGroup" 143 IpProtocol: -1 144 CidrIpv6: "::/0" 145 146 147 148Outputs: 149 VpcId: 150 Description: The VPC ID 151 Value: !Ref VPC

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

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

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

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

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

yu_1985

2022/09/01 04:37

Lambda Functionはどのサブネットで動かす設定にしているんでしょうか。
guest

回答1

0

発生頻度が少なくいずれかのSubnetやAZに配置しても同様の症状が発生する場合、Lambdaの仕様です(AWSに問い合わせ済み)
AWSの回答はAWS-SDKやaxios,fetch APIなどはタイムアウトを設定し、サーバー側とクライアントどちらにもリトライ処理を設けて冪等性を担保すべきとのことでした。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-function-idempotent/

技術的な回答は貰えなかったため個人的な憶測になりますが、Lambdaは一定時間すぎると一度使ったコンテナを削除し、再び再リクエストを行うとコールドスタートが発生しますが、このときにnetworkのアタッチを行ってると思われます。このアタッチに失敗または遅れているためタイムアウトが発生してるのではと思っています。

投稿2022/09/04 07:18

tamanegine

総合スコア177

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問