AWS Lambda関数からRedis ElastiCacheクラスターに接続できますか?
構成の問題なのか、単に不可能なのかはわかりません。
PS:EC2インスタンスからテストを行い、Redisノードに接続できます。また、Lambda関数とRedisノードは同じリージョンにあります。
更新(2015年10月9日):
AmazonはAWS Lambda関数のVPCを発表しました。 詳細はこちら
これは、ElastiCacheやRDSマシンなど、VPCセキュリティグループの背後にあるAWSのリソースにアクセスできることを意味します。
UPDATE(2016年2月11日):AmazonはAWS Lambda用のVPCを開始しました。
https://aws.Amazon.com/about-aws/whats-new/2016/02/access-resources-within-a-vpc-using-aws-lambda/
2016年2月現在、AWSではラムダ関数を使用してElasticacheに接続できます。 AWS Lambdaを使用したVPC内のリソースへのアクセス を参照してください。リンクは次のとおりです- チュートリアル:Amazon VPCでAmazon ElastiCacheにアクセスするためのLambda関数の設定
HTTPプロキシまたはiptablesのセットアップは、次の理由で機能しません。
Redis呼び出しはHTTP
ではなく、HTTPプロキシによって処理されません。 iptables
(またはそれに関するポート転送)は、宛先としてドメイン名を受け入れないか、毎回必要なDNS解決のために非常に非効率的です。
最良かつ便利な方法は、EC2マシンに twemproxy
をインストールし、リクエストをルーティングすることです。おまけとして、突然素晴らしいシャーディング戦略も展開しました。
同じ問題が発生していました。直接的な解決策は見つかりませんでしたが、代わりにLambda関数を使用して、socket.ioを使用してEC2サーバーに接続しました。これは非常に簡単で、そのEC2サーバーにイベントを発行します。
EC2サーバーがイベントを受信すると、必要なRedisタスク(画像のサムネイル生成後のデータベースのクリーンアップ)を実行しました。
お役に立てれば!誰かがLambdaからElastiCacheに直接接続する方法を見つけたとしても、私はまだ知りたいです!
Lambdaをmemcached elasticacheに接続しようとしましたが、うまく機能します。 Redisも実行可能でなければなりません。
留意すべき点: