我正在尝试访问存储在AWS3桶中的文本文件。目前,它只包含“测试”一词。
起初,我以为我的fs.readfile有问题,但现在我发现问题更根本。我根本无法访问该文件。node.js的AWS似乎根本无法看到该文件。
我正在使用以下Lambda函数:
const aws = require('aws-sdk');
const s3 = new aws.S3; //({ apiVersion: '2006-03-01' });
exports.handler = async (event, context) => {
// Get the object from the event and show its content type
const bucket = 's3://'+ event.Records[0].s3.bucket.name;
const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
console.log('Bucket = ' + bucket);
console.log('key = ' + key);
var params = {Bucket: bucket, Key: key};
console.log('Checking file existence');
console.log(params);
s3.getObject(params, function(err, data) {
console.log('S3.getObject called');
console.log('err = ' + err);
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
};
测试床函数包含以下代码:
{
"Records": [
{
"eventVersion": "2.0",
"eventSource": "aws:s3",
"awsRegion": "us-east-1",
"eventTime": "1970-01-01T00:00:00.000Z",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "EXAMPLE"
},
"requestParameters": {
"sourceIPAddress": "127.0.0.1"
},
"responseElements": {
"x-amz-request-id": "EXAMPLE123456789",
"x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH"
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "testConfigRule",
"bucket": {
"name": "wgtiplists",
"ownerIdentity": {
"principalId": "EXAMPLE"
},
"arn": "arn:aws:s3:::wgtiplists"
},
"object": {
"key": "tiplist.txt",
"size": 1024,
"eTag": "0123456789abcdef0123456789abcdef",
"sequencer": "0A1B2C3D4E5F678901"
}
}
}
]
}
结果如下所示(我删除了时间戳和请求ID文本):
INFO Bucket = s3://wgtiplists
INFO key = tiplist.txt
INFO Checking file existence
INFO { Bucket: 's3://wgtiplists', Key: 'tiplist.txt' }
由此,我得出结论,没有调用S3函数,尽管我可能弄错了。
我做错了什么?
我相信你需要在这里加上括号:
const s3 = new aws.S3();
您不应该将s3:/
添加到bucket名称中,只需执行以下操作:
const bucket = event.Records[0].s3.bucket.name;
我在Lambda函数上收到来自S3 AWS服务的acccess denied错误。 这是代码: 这是CloudWatch上的错误: 这是堆栈错误: 没有关于S3的任何其他描述或信息,桶权限允许每个人、放置、列表和删除。 我可以做什么来访问S3桶? PS:在Lambda事件属性上,主体是正确的,并且具有管理特权。
我有一个lambda函数,它使用一个具有以下策略摘录的角色 我的桶策略如下所示 我在角色和bucket策略上都允许使用GetObject和ListBucket。但是,当我的函数运行时 我明白了 [错误]ClientError:调用GetObject操作时发生错误(AccessDenied):拒绝访问 我还需要添加哪些权限?对象就在那里,当我使用管理员角色在本地运行代码时,我可以得到它。 最新消息
使用Java AWS SDK,我创建了一个lambda函数来从s3 bucket读取csv文件。我已经将bucket公之于众,可以从任何浏览器轻松访问它和文件。为了测试它,我使用lambda控制台上的test按钮。我正在使用hello world测试配置输入模板。 它失败的原因是: 错误消息:指定的桶无效。(服务:Amazon S3;状态代码:400;错误代码:InvalidBucketName;
lambda执行角色具有对51个函数的s3访问权限,包括ListBuckets和所有其他读操作。 我的S3 bucket有一个允许从lambda角色访问的策略。(反正是在同一个帐户中,所以我不认为这是必需的)。 我甚至只是为了好玩才让桶公共访问。 这是λ码。我不知道为什么bucket.objects.all()无法访问S3。 Lambda执行角色策略
问题内容: 我在AWS中有一个Node 4.3 Lambda函数。我希望能够将文本文件写入S3,并阅读了许多有关如何与S3集成的教程。但是,所有这些都涉及在写入S3之后如何调用Lambda函数。 如何使用节点从Lambda在S3中创建文本文件?这可能吗?亚马逊的文件似乎没有涵盖它。 问题答案: 是的,绝对有可能! 通过选择或更新执行lambda的IAM角色,确保为Lambda函数提供对目标s3存储
我们有一个Lambda函数,需要能够访问私有的S3桶。 该存储桶已启用“阻止所有公共访问”,并具有以下资源策略: 我还将AmazonS3FullAccess策略直接附加到Lambda使用的IAM角色。但是,当Lambda函数尝试访问S3存储桶时,会出现访问被拒绝错误: 使用IAM用户凭据连接到S3的外部系统在尝试访问存储桶时也会收到相同的错误。 有人知道是什么导致了这个错误吗? 以下是发生错误的L