全体的に、私はVPC内でAWS Lambdaを使用するとかなり混乱します。問題は、S3バケットにアクセスしようとしているときにラムダがタイムアウトしてしまうことです。ソリューションはVPCエンドポイントのようです。VPC内のLambdaからAWS S3にアクセス
ラムダ関数をVPCに追加して、RDSホストデータベースにアクセスできるようにしました(以下のコードでは表示されていませんが、機能しています)。しかし、今は私はS3にアクセスすることはできません。
私はVPC S3エンドポイントを作成しようとしましたが、何も変更されていません。
VPCの設定
私は最初のEC2インスタンスを作った時はいつでも私は、デフォルトで作成されたシンプルなVPCを使用しています。これには4つのサブネットがあり、すべてデフォルトで作成されます。
VPCのルートテーブル
_Destination - Target - Status - Propagated_
172.31.0.0/16 - local - Active - No
pl-63a5400a (com.amazonaws.us-east-1.s3) - vpce-b44c8bdd - Active - No
0.0.0.0/0 - igw-325e6a56 - Active - No
シンプルS3ダウンロードラムダ:
import boto3
import pymysql
from StringIO import StringIO
def lambda_handler(event, context):
s3Obj = StringIO()
return boto3.resource('s3').Bucket('marineharvester').download_fileobj('Holding - Midsummer/sample', s3Obj)
VPC S3エンドポイントには、ルートテーブルの設定とセキュリティポリシーの設定が必要です。これらの設定をどのように設定したらよいか分かります。このドキュメントは次の場所にあります:http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.htmlまた、VPCの外部にあるすべてのものにラムダ機能がアクセスできるようにNATゲートウェイをVPCに追加することもできますS3サービスだけでなく、 –
これはvpc設定の問題です。ルートテーブル上のnatゲートウェイを使用して、任意のsbunet assosiatioを設定します。まだ問題を探していますか? –
VPC設定に関する情報を追加しました。私は問題がどこにあるのだろうと考えましたが、VPCは主に私にとってブラックボックスです。何が誤って構成されているかを確認するために何を確認するのか分かりません。 – noobiemcfoob