无法使用javascript从AWS S3 bucket获取文件计数或列表
我正在使用Cypress测试,其中一个验证是获取S3存储桶中的文件数。 但我无法获得S3存储桶中的文件数无法使用javascript从AWS S3 bucket获取文件计数或列表,javascript,amazon-web-services,amazon-s3,cypress,Javascript,Amazon Web Services,Amazon S3,Cypress,我正在使用Cypress测试,其中一个验证是获取S3存储桶中的文件数。 但我无法获得S3存储桶中的文件数 const AWS = require("aws-sdk"); const fs = require("fs"); AWS.config.update({ accessKeyId: 'xxxxx', secretAccessKey: 'yyyyyyy', region: 'abide', }); const ge
const AWS = require("aws-sdk");
const fs = require("fs");
AWS.config.update({
accessKeyId: 'xxxxx',
secretAccessKey: 'yyyyyyy',
region: 'abide',
});
const getCountOfFiles = async (bucketname, prefix) => {
try {
cy.log(bucketname)
cy.log(prefix)
const data = await s3.listObjectsV2({
Bucket: bucketname,
Prefix: prefix, // Limcits response to keys that begin with specified prefix
}).promise().then(mydata => {
return mydata;
})
cy.log('---------')
if (data.$response.error) {
throw new Error('Could not list files in S3: ${data.$response.error}');
}
return data;
} catch {e} {
cy.log(e.message)
//throw new Error('Could not list files in S3: ${e.message}');
}
};
下面是Cypress代码
describe('Validate api field validation', () => {
it('Verify objects land in correct AWS S3 bucket', () => {
var date = new Date();
var bucketDirectory = date.getUTCFullYear()
var bucketLocation = Cypress.env('aws_bucketLocation')
cy.log(bucketDirectory)
try{
var ss=getCountOfFiles(bucketLocation,bucketDirectory)
}
catch(err){
cy.log(err)
}
cy.log(ss)
})
}
下面是我用来获取S3存储桶中文件数量的函数
const AWS = require("aws-sdk");
const fs = require("fs");
AWS.config.update({
accessKeyId: 'xxxxx',
secretAccessKey: 'yyyyyyy',
region: 'abide',
});
const getCountOfFiles = async (bucketname, prefix) => {
try {
cy.log(bucketname)
cy.log(prefix)
const data = await s3.listObjectsV2({
Bucket: bucketname,
Prefix: prefix, // Limcits response to keys that begin with specified prefix
}).promise().then(mydata => {
return mydata;
})
cy.log('---------')
if (data.$response.error) {
throw new Error('Could not list files in S3: ${data.$response.error}');
}
return data;
} catch {e} {
cy.log(e.message)
//throw new Error('Could not list files in S3: ${e.message}');
}
};
我试图将日志中发生的事情打印出来,但即使是我也无法捕获异常。我不确定我在这里哪里出了问题。
所有数据都是完美的。这是我正在做的傻事。
该目录存在于AWS中。即使它不存在或输入数据中有错误,为什么不打印异常??
谁能帮我一下吗。这是Cypress的限制吗???您可以添加您获得的日志输出吗?而且,
getCountOfFiles
是async
,因此它会返回一个承诺,非常感谢JessefTerren。这里没有输出。cypress测试为绿色,表示一切正常。S3的bucket名称和前缀被打印出来并停在那里。我的意思是,console.log(ss)不会打印任何东西。只有一个空格如果你用getCountOfFiles(bucketLocation,bucketDirectory)替换var ss
行,你会得到什么控制台输出?然后(data=>console.log(“data:”,data))
@jessefteren-只是一个{}