首页 > 解决方案 > Lambda 函数(有时)尝试访问 s3 时超时

问题描述

所以我试图在我的 vpc 中创建一个需要 s3 访问的 lambda 函数。大多数时候它会顺利关闭,但是,有时它会一直挂在 s3.getObject 上,直到函数超时,发生这种情况时不会出错。我已经设置了一个 VPC 端点,并且该端点位于(私有)子网的路由表中,确保对端点的访问没有被安全组或 NACL 阻止,并且 IAM 权限似乎都是有序的(虽然如果这是问题,人们会期望出现错误消息)。

为了调试这个问题,我已经将我的代码简化为一个简单的 get/put,但这里是为了以防我遗漏了非常明显的内容。我已经花了几个小时在谷歌上搜索这个,尝试了所有建议/我能想到的......并且在这一点上基本上没有想法......所以我不能足够强调我多么感激任何可以给予的帮助

更新:我已经从与 lambda 相同的 vpc/subnet/security 组内的 ec2 实例运行我的代码...似乎没有相同的问题,所以问题似乎与 lambda 配置有关,而不是任何网络配置

    try {
        const getParams = {
            Bucket: 'MY_BUCKET',
            Key: '/path/to/file'
        };

        console.log('************** about to get', getParams);
        const getObject = await s3.getObject(getParams).promise();
        console.log('************** gotObject', getObject);
        const uploadParams = {
            Bucket: 'MY_BUCKET',
            Key: '/new/path/to/file',
            Body: getObject.Body
        };
        console.log('************** about to put', uploadParams);
        const putObject = await s3.putObject(uploadParams).promise();
        console.log('*************** object was put', putObject);
    } catch (err) {
        console.log('***************** error', err);
    }
};```

标签: amazon-web-servicesamazon-s3aws-lambdatimeoutamazon-vpc

解决方案


推荐阅读