我对所有IAM权利都有完全相同的行为,并且在我开始工作之前失去了一点时间。
如果您的lambda函数在VPC内部运行,则必须为 AWS 创建一个端点,如AWS博客的本文所述。
如果要查看挂起的详细信息,可以使用以下代码。 不要给出回调,而是保留对请求的引用并基本观察它的事件(参见S3.putObject和AWS.Request的文档)。
var obj = s3.putObject(params);
obj.on('validate', (...args)=>{args.unshift('validate'); console.log(...args);})
.on('build', (...args)=>{args.unshift('build'); console.log(...args);})
.on('sign', (...args)=>{args.unshift('sign'); console.log(...args);})
.on('send', (...args)=>{args.unshift('send'); console.log(...args);})
.on('retry', (...args)=>{args.unshift('retry'); console.log(...args);})
.on('extractError', (...args)=>{args.unshift('extractError'); console.log(...args);})
.on('extractData', (...args)=>{args.unshift('extractData'); console.log(...args);})
.on('success', (...args)=>{args.unshift('success'); console.log(...args);})
.on('error', (...args)=>{args.unshift('error'); console.log(...args);})
.on('complete', (...args)=>{args.unshift('complete'); console.log(...args);})
.on('httpHeaders', (...args)=>{args.unshift('httpHeaders'); console.log(...args);})
.on('httpData', (...args)=>{args.unshift('httpData'); console.log(...args);})
.on('httpUploadProgress', (...args)=>{args.unshift('httpUploadProgress'); console.log(...args);})
.on('httpDownloadProgress', (...args)=>{args.unshift('httpDownloadProgress'); console.log(...args);})
.on('httpError', (...args)=>{args.unshift('httpError'); console.log(...args);})
.on('httpDone', (...args)=>{args.unshift('httpDone'); console.log(...args);})
.send();
通过这样做,我得到了底层的HTTP请求试图到达桶的公共URL,除非你有端点,否则这是不可能的。
以下是关于从AWS博客也从VPC访问AWS资源的另一篇文章 。