【问题标题】:Cypress AWS S3 List/Upload/Download Objects赛普拉斯 AWS S3 列表/上传/下载对象
【发布时间】:2022-11-06 13:58:17
【问题描述】:

我正在尝试列出对象,如果以后可以将文件下载/上传到 AWS S3。下面的代码会引发错误。我做错了什么,这不起作用?我已经通过以下所有可能的方式传递了 accessKeyId 和 accessSecretKey。我在 mac 上有一个配置和凭据文件,在 windows 上我只有一个 awscredentials 文件,并且在我的 windows 上也设置了它 设置 AWS_SDK_LOAD_CONFIG=1

代码

    const AWS = require('aws-sdk');
    
    function listS3Objects(file, name, type) {
      const s3bucket = new AWS.S3({
        accessKeyId: process.env.AWS_ACCESS_KEY_ID, 
        accessSecretKey: process.env.AWS_SECRET_ACCESS_KEY, 
        
       // accessKeyId: 'my actual key in credentials file', //aws_access_key_id
       // accessSecretKey: 'my actual secret key in credentials file', //aws_secret_access_key
        region: "ap-southeast-1"
      });
      const params = {
        Bucket: 'testbucketName',
      };
      s3bucket.listObjects(params, (err, data) => {
        if (err) { throw err; }
        /* eslint-disable no-console */
        console.log('Success!');
        console.log(data);
        return data;
        /* eslint-enable no-console */
      });
    }
    
    const objs = listS3Objects()
    //Test AWS Credentials
    it('Tests', () => {
      cy.log(objs)
    })

错误

以下错误源自您的测试代码,而不是赛普拉斯。

配置中缺少凭证,如果使用 AWS_CONFIG_FILE,请设置 AWS_SDK_LOAD_CONFIG=1

当赛普拉斯检测到源自您的测试代码的未捕获错误时,它将自动使当前测试失败。

赛普拉斯无法将此错误与任何特定测试相关联。

我们动态生成了一个新的测试来显示这个失败。 node_modules/aws-sdk/lib/config.js:400:1 398 | 399 |函数 credError(msg, err) {

400 | return new AWS.util.error(err || new Error(), { | ^ 401 |代码:'CredentialsError', 402 |消息:味精, 403 |名称:'CredentialsError'

【问题讨论】:

    标签: amazon-s3 cypress


    【解决方案1】:

    我会这样解决它:

    1. 能否运行脚本单独上传或下载?如果没有,那么它的凭据。
    2. 如果不是凭据,并且它可以完美运行,是否可以将此脚本导入到您的规范中并运行?让脚本解析并返回一个承诺,然后在您的规范中使用返回值。

      您可以考虑的其他选项和 cy.exec("aws command goes here")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 2020-12-23
      相关资源
      最近更新 更多