Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AWS S3-错误:无法获取本地颁发者证书_Javascript_Amazon Web Services_Amazon S3_Protractor - Fatal编程技术网

Javascript AWS S3-错误:无法获取本地颁发者证书

Javascript AWS S3-错误:无法获取本地颁发者证书,javascript,amazon-web-services,amazon-s3,protractor,Javascript,Amazon Web Services,Amazon S3,Protractor,我正在尝试在量角器测试套件执行完成后将html结果文件上载到AWS S3。我在自动化中使用JavaScript。请在此处帮助我解决错误: static uploadtoS3() { const AWS = require('aws-sdk'); var FILE_NAME_LOCAL; var crypt = require("crypto"); fs.readdirSync("./reports/html/").forEach(file => {

我正在尝试在量角器测试套件执行完成后将html结果文件上载到AWS S3。我在自动化中使用JavaScript。请在此处帮助我解决错误:

  static uploadtoS3() {
    const AWS = require('aws-sdk');
    var FILE_NAME_LOCAL;
    var crypt = require("crypto");

    fs.readdirSync("./reports/html/").forEach(file => {
      if (file.startsWith("execution_report")) {
        FILE_NAME_LOCAL = process.cwd() + "\\reports\\html\\" + file;
      }
    });
    console.log("File name: " + FILE_NAME_LOCAL);
    // Get file stream
    const fileStream = fs.createReadStream(FILE_NAME_LOCAL);

    var hash = crypt.createHash("md5")
      .update(new Buffer.from(FILE_NAME_LOCAL, 'binary'))
      .digest("base64");
    console.log("Hash: "+hash);
    // Call S3 to retrieve upload file to specified bucket
    const uploadParams = {
      Bucket: 'my.bucket',
      Key: 'automation_report.html',
      Body: fileStream,
      ContentType: "text/html",
      ContentMD5: hash,
      // CacheControl: "max-age=0,no-cache,no-store,must-revalidate",
      ACL: 'public-read',
    };

    const s3 = new AWS.S3({
      // TODO: use this `accessKeyId: <key>` annotation to indicate the presence of a key instead of placing the actual key here. 
      endpoint: "https://3site-abc-wip1.nam.nsroot.net",
      accessKeyId: <access_key_id>,
      secretAccessKey: <secret_access_key>,
      signatureVersion: 'v4',
      ca: fs.readFileSync('C:\\Users\\AB11111\\InternalCAChain_PROD.pem'),
      sslEnabled: true
    });
    // Create S3 service object and upload
    s3.upload(uploadParams, function (err, data) {
      console.log("Inside upload..");
      if (err) {
        throw err;
      } if (data) {
        console.log('Upload Success. File location:' + data.Location);
      }
    });
  }
static uploadtoS3(){
const AWS=require('AWS-sdk');
var文件\u名称\u本地;
var crypt=require(“加密”);
fs.readdirSync(“./reports/html/”).forEach(文件=>{
if(file.startsWith(“执行报告”)){
文件\u NAME\u LOCAL=process.cwd()+“\\reports\\html\\”+文件;
}
});
log(“文件名:”+文件名\u本地);
//获取文件流
const fileStream=fs.createReadStream(文件名本地);
var hash=crypt.createHash(“md5”)
.update(新的Buffer.from(文件名\u LOCAL,'binary'))
.摘要(“base64”);
log(“散列:“+Hash”);
//调用S3将上传文件检索到指定的bucket
常量上载参数={
水桶:“我的水桶”,
关键字:“automation_report.html”,
正文:文件流,
ContentType:“文本/html”,
ContentMD5:hash,
//CacheControl:“最大年龄=0,无缓存,无存储,必须重新验证”,
ACL:“公共读取”,
};
常数s3=新的AWS.s3({
//TODO:使用此`accessKeyId:`注释来指示是否存在键,而不是将实际键放在此处。
端点:“https://3site-abc-wip1.nam.nsroot.net",
accessKeyId:,
secretAccessKey:,
签名版本:“v4”,
ca:fs.readFileSync('C:\\Users\\AB11111\\InternalCAChain\u PROD.pem'),
sslEnabled:对
});
//创建S3服务对象并上传
s3.上传(上传参数、函数(错误、数据){
console.log(“内部上传…”);
如果(错误){
犯错误;
}如果(数据){
log('Upload Success.File location:'+data.location);
}
});
}
错误:无法在获取本地颁发者证书 TLSSocket.onConnectSecure(_tls_wrap.js:1049:34)位于TLSSocket.emit (events.js:182:13)位于TLSSocket.EventEmitter.emit(domain.js:442:20) 完成时(包装:631:8)


我成功了。我需要在AWS.Config中添加证书。完整的工作代码如下。这可能对某人有所帮助。注意:以下凭据和URL仅用于表示,它们不是真实的:

const AWS = require('aws-sdk');
const https = require('https');
var FILE_NAME_LOCAL;

AWS.config.update({
  httpOptions: {
    agent: new https.Agent({
      rejectUnauthorized: false,
      ca: fs.readFileSync('./support/InternalCAChain_PROD.pem')
    })
  }
});

const s3 = new AWS.S3({
  s3BucketEndpoint: true,
  endpoint: "https://my.bucket.3site-abc.nam.nsroot.net/",
  accessKeyId: "abABcdCD",
  secretAccessKey: "kjlJLlklkLlUYt",
});

// Get file stream
fs.readdirSync("./reports/html/").forEach(file => {
  if (file.startsWith("execution_report")) {
    FILE_NAME_LOCAL = process.cwd() + "\\reports\\html\\" + file;
  }
});
const fileStream = fs.readFileSync(FILE_NAME_LOCAL);

// Call S3 to retrieve upload file to specified bucket
const uploadParams = {
  Bucket: 'my.bucket',
  Key: path.basename(FILE_NAME_LOCAL),
  Body: fileStream,
  ContentType: "text/html",
  ContentEncoding: 'UTF-8',
  ACL: 'public-read',
};

// Create S3 service object and upload
s3.upload(uploadParams, function (err, data) {
  console.log("Inside upload..");
  if (err) {
    throw err;
  } if (data) {
    s3FileLocation = data.Location;
    console.log('Upload Success. File location:' + data.Location);
  }
});

您是否设置了正确的凭据?您缺少
AWS.config.update({accessKeyId,secretAccessKey})谢谢,但是
AWS.config.update({accessKeyId,secretAccessKey})没有帮助。我对凭证很有把握。我只是希望它们不是有效凭证。你不认为错误的凭证会产生错误吗?我没有看到任何错误。我已经用最近遇到的错误更新了我的问题。我请求你再调查一下。