简体   繁体   English

NoCredentialProviders:使用 AWS S3 的电子更新程序中的链错误中没有有效的提供者

[英]NoCredentialProviders: no valid providers in chain error in electron-updater with AWS S3

I'm trying to implement autoupdate of my electron-react application using electron-updater and AWS S3 bucket.我正在尝试使用电子更新器和 AWS S3 存储桶实现我的电子反应应用程序的自动更新。 But getting error:但出现错误:

⨯ NoCredentialProviders: no valid providers in chain. Deprecated.
        For verbose messaging see aws.Config.CredentialsChainVerboseErrors
github.com/develar/app-builder/pkg/publisher.upload
        Y:/Documents/app-builder/pkg/publisher/s3.go:169
github.com/develar/app-builder/pkg/publisher.ConfigurePublishToS3Command.func1
        Y:/Documents/app-builder/pkg/publisher/s3.go:57
github.com/alecthomas/kingpin.(*actionMixin).applyActions
        C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/actions.go:28
github.com/alecthomas/kingpin.(*Application).applyActions
        C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:557
github.com/alecthomas/kingpin.(*Application).execute
        C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:390
github.com/alecthomas/kingpin.(*Application).Parse
        C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:222
main.main
        Y:/Documents/app-builder/main.go:90
runtime.main
        c:/go/src/runtime/proc.go:203
runtime.goexit
        c:/go/src/runtime/asm_amd64.s:1373  
  ⨯ NoCredentialProviders: no valid providers in chain. Deprecated.
        For verbose messaging see aws.Config.CredentialsChainVerboseErrors
github.com/develar/app-builder/pkg/publisher.upload
        Y:/Documents/app-builder/pkg/publisher/s3.go:169
github.com/develar/app-builder/pkg/publisher.ConfigurePublishToS3Command.func1
        Y:/Documents/app-builder/pkg/publisher/s3.go:57
github.com/alecthomas/kingpin.(*actionMixin).applyActions
        C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/actions.go:28
github.com/alecthomas/kingpin.(*Application).applyActions
        C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:557
github.com/alecthomas/kingpin.(*Application).execute
        C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:390
github.com/alecthomas/kingpin.(*Application).Parse
        C:/Users/develar/go/pkg/mod/github.com/alecthomas/kingpin@v2.2.6+incompatible/app.go:222
main.main
        Y:/Documents/app-builder/main.go:90
runtime.main
        c:/go/src/runtime/proc.go:203
runtime.goexit
        c:/go/src/runtime/asm_amd64.s:1373  
  ⨯ Cannot cleanup: 

Error #1 --------------------------------------------------------------------------------
Error: D:\directoryofmyapp\myappname\node_modules\app-builder-bin\win\x64\app-builder.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
    at ChildProcess.<anonymous> (D:\directoryofmyapp\myappname\node_modules\builder-util\src\util.ts:243:14)
    at Object.onceWrapper (events.js:422:26)
    at ChildProcess.emit (events.js:315:20)
    at maybeClose (internal/child_process.js:1048:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)

Error #2 --------------------------------------------------------------------------------
Error: D:\directoryofmyapp\myappname\node_modules\app-builder-bin\win\x64\app-builder.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
    at ChildProcess.<anonymous> (D:\directoryofmyapp\myappname\node_modules\builder-util\src\util.ts:243:14)
    at Object.onceWrapper (events.js:422:26)
    at ChildProcess.emit (events.js:315:20)
    at maybeClose (internal/child_process.js:1048:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)  stackTrace=

Here is my package.json:这是我的 package.json:

{
  "name": "myappname",
  "version": "0.1.0",
  "private": true,
  "license": "MIT",
  "productName": "myappname",
  "author": "Bakhrom",
  "description": "myappname",
  "homepage": "./",
  "main": "./public/electron.js",
  "build": {
    "appId": "com.myappname.electron-app",
    "files": [
      "build/electron.js",
      "build/.env",
      "./~/.aws/credentials",
      "~/.aws/credentials",
      "./.env",
      ".env"
    ],
    "directories": {
      "buildResources": "./public/**/*"
    },
    "win": {
      "icon": "./public/img/favicon.png"
    },
    "publish": {
      "provider": "s3",
      "bucket": "mybucketname",
      "region": "ap-southeast-1"
    }
  },
  "dependencies": {
    "@fluentui/react": "^7.146.0",
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.3.2",
    "@testing-library/user-event": "^7.1.2"
    "electron-is-dev": "^1.2.0",
    "electron-pos-printer": "^1.2.0",
    "electron-updater": "^4.3.5",
    ... other packages
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "node --expose-gc --max-old-space-size=1900 node_modules/react-scripts/scripts/build.js",
    "test": "react-scripts test",
    "dev": "concurrently \"npm start\" \"wait-on http://localhost:3000 && electron .\"",
    "electron-build": "npm run build && electron-builder build",
    "deploy": "npm run build && electron-builder build --win --publish always",
    "postinstall": "electron-builder install-app-deps"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "concurrently": "^5.3.0",
    "dotenv": "^8.2.0",
    "electron": "^9.1.0",
    "electron-builder": "^22.9.1",
    "electron-rebuild": "^2.3.2",
    "wait-on": "^5.2.1"
  }
}

I'm running the command below:我正在运行以下命令:

"deploy": "npm run build && electron-builder build --win --publish always"

The bucket is public.存储桶是公开的。 I can't figure out what is going on?我不知道发生了什么事? I also mentioned aws_access_key_id and aws_secret_access_key in environment variables and ~/.aws/credentials file.我还在环境变量和 ~/.aws/credentials 文件中提到了 aws_access_key_id 和 aws_secret_access_key。 But no result.但没有结果。

As per the official documentation, you need to have something like this S3Options根据官方文档,你需要有这样的东西S3Options

AWS credentials are required, please see getting your credentials.需要 AWS 凭证,请参阅获取您的凭证。 Define AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables.定义AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量。 Or in the ~/.aws/credentials .或在~/.aws/credentials中。

  "build":
    "publish": {
      "provider": "s3",
      "bucket": "bucket-name"
    }
  }
}

You export secrets into windows environment:您将机密导出到 windows 环境中:

setx AWS_ACCESS_KEY_ID AKIAIOSFODNN7EXAMPLE
setx AWS_SECRET_ACCESS_KEY wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
setx AWS_DEFAULT_REGION us-west-2

You don't have to make the bucket Public unless you want to.除非您愿意,否则您不必将存储桶设为Public Make sure the User's credentials you are using, have the following permissions at least to access the bucket:确保您使用的User's凭证至少具有以下访问存储桶的权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:ListMultipartUploadParts",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::bucketName/*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::bucketName"
        }
    ]
}

On the side note why you are bundling your credentials files附注为什么要捆绑凭据文件

      "./~/.aws/credentials",
      "~/.aws/credentials",

Double-check the format of your ~/.aws/credential file.仔细检查 ~/.aws/credential 文件的格式。

For example in AWS SDK for JavaScript correctly work with uppercase and lowercase params:例如,在 AWS SDK 中,JavaScript 可以正确使用大写和小写参数:

[profile]
AWS_ACCESS_KEY_ID=
or
[profile]
aws_access_key_id=

But in AWS SDK for Go correctly work only lowercase params:但在 AWS SDK 中,Go 只能正确工作小写参数:

[profile]
aws_access_key_id=
aws_secret_access_key=

Electron-builder used AWS SDK for Go in deployments. Electron-builder 在部署中将 AWS SDK 用于 Go。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Electron-Updater 和 AWS S3 存储桶策略 - 错误:HttpError: 403 Forbidden - Electron-Updater and AWS S3 bucket policy - Error: HttpError: 403 Forbidden 带有 IAM 的 EC2 上的 S3:错误 NoCredentialProviders:链中没有有效的提供者。 已弃用 - S3 on EC2 with IAM: Error NoCredentialProviders: no valid providers in chain. Deprecated 带有Docker容器的AWS Cloudwatch日志-NoCredentialProviders:链中没有有效的提供商 - AWS Cloudwatch logs with Docker Container - NoCredentialProviders: no valid providers in chain 使用 AWS-SDK-GO 时出错(NoCredentialProviders:链中没有有效的提供者) - Error when using AWS-SDK-GO (NoCredentialProviders: no valid providers in chain) AWS X-RAY [错误] 发送分段批处理失败,原因是:NoCredentialProviders:链中没有有效的提供程序。 已弃用 - AWS X-RAY [Error] Sending segment batch failed with: NoCredentialProviders: no valid providers in chain. Deprecated 错误:FATAL NoCredentialProviders:链中没有有效的提供者,原因是:EnvAccessKeyNotFound: - Error: FATAL NoCredentialProviders: no valid providers in chain caused by: EnvAccessKeyNotFound: 注册错误:NoCredentialProviders: no valid providers in chain ECS 代理错误 - Error registering: NoCredentialProviders: no valid providers in chain ECS agent error Golang 中 AWS S3 中的 NoCredentialproviders - NoCredentialproviders in AWS S3 in Golang 获取错误'NoCredentialProviders:链中没有有效的提供者。 已弃用。 在 golang 中调用 acmpca.GetCertificate() - Getting Error 'NoCredentialProviders: no valid providers in chain. Deprecated.' while calling acmpca.GetCertificate() in golang 错误:NoCredentialProviders:链中没有有效的提供者。 已弃用。 脱水工具错误 - Error: NoCredentialProviders: no valid providers in chain. Deprecated. error with dehydrated tool
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM