Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking 从aws lambda访问S3_Networking_Amazon S3_Aws Lambda_Amazon Vpc_Routetable - Fatal编程技术网

Networking 从aws lambda访问S3

Networking 从aws lambda访问S3,networking,amazon-s3,aws-lambda,amazon-vpc,routetable,Networking,Amazon S3,Aws Lambda,Amazon Vpc,Routetable,我制作了一个aws lambda函数,用于读取s3数据并进行处理。 它工作得很好(当我有证书时,能够阅读我的桶或其他人的桶) 然后,我为elasticache添加了VPC。在做了一些配置工作(vpc)之后,elasticache也能很好地工作 但是,现在我无法阅读属于其他人的S3 这过去是毫无问题的 var aws = require('aws-sdk'); aws.config.update(...); var s3 = new aws.S3({...}); s3.listObjects(..

我制作了一个aws lambda函数,用于读取s3数据并进行处理。 它工作得很好(当我有证书时,能够阅读我的桶或其他人的桶)

然后,我为elasticache添加了VPC。在做了一些配置工作(vpc)之后,elasticache也能很好地工作

但是,现在我无法阅读属于其他人的S3

这过去是毫无问题的

var aws = require('aws-sdk');
aws.config.update(...);
var s3 = new aws.S3({...});
s3.listObjects(...)
我仍然可以访问我的S3存储桶

所以我认为,VPC和Config有一些奇怪的东西阻止我对S3SDK API进行(https?)调用。 我想我允许所有的互联网接入。(我可以从另一个lambda中调用此lambda)

我所遵循的允许internet访问的步骤就是从这个链接开始的。


什么会阻止S3SDK请求?我该如何修复它们呢?

如果您可以为一个bucket访问S3,那么您也应该能够将其用于其他bucket(或者至少用于同一地区的其他bucket)。您收到的错误消息是什么?您可以通过启动具有相同角色(或具有相同权限的角色)的Amazon EC2实例并使用尝试访问存储桶来测试凭据。它只是挂在那里。。如果有凭证问题,它会说“访问被拒绝”。另外,我很清楚我使用的是ring凭据,因为它在没有VPC的情况下工作。这真的很奇怪。你确定lambda以同样的方式访问我的s3和其他人的s3吗?有一种。唯一的问题可能是另一个bucket位于不同的区域,并且安全组不允许访问另一个区域。从一个干净的设置开始(例如没有VPC),并尝试改变一些东西,直到它坏了,你知道是什么导致了问题。试试不同的桶。尝试通过EC2复制(根据我上面的评论)。有些可疑之处,您只需缩小范围以确定问题所在。如果您可以访问一个bucket的S3,那么您也应该能够将其用于其他bucket(或者至少用于同一地区的其他bucket)。您收到的错误消息是什么?您可以通过启动具有相同角色(或具有相同权限的角色)的Amazon EC2实例并使用尝试访问存储桶来测试凭据。它只是挂在那里。。如果有凭证问题,它会说“访问被拒绝”。另外,我很清楚我使用的是ring凭据,因为它在没有VPC的情况下工作。这真的很奇怪。你确定lambda以同样的方式访问我的s3和其他人的s3吗?有一种。唯一的问题可能是另一个bucket位于不同的区域,并且安全组不允许访问另一个区域。从一个干净的设置开始(例如没有VPC),并尝试改变一些东西,直到它坏了,你知道是什么导致了问题。试试不同的桶。尝试通过EC2复制(根据我上面的评论)。有些事情是可疑的,你只需要缩小范围来确定问题所在。