Amazon web services 无法从链中的任何提供商加载AWS凭据-Jenkins&;AWS代码管道

Amazon web services 无法从链中的任何提供商加载AWS凭据-Jenkins&;AWS代码管道,amazon-web-services,jenkins,amazon-ec2,aws-codepipeline,Amazon Web Services,Jenkins,Amazon Ec2,Aws Codepipeline,目前我正试图让Jenkins与AWS代码管道一起工作。我在EC2实例上运行Jenkins。但是,由于某些原因,Jenkins无法加载AWS的默认凭据。我尝试了以下选项: 使用“aws配置”命令初始化aws凭据 使用Jenkins中的aws凭据插件 执行导出AWS\u访问\u密钥\u ID=。。。。和AWS_SECRET_ACCESS_KEY=。。。。在詹金斯cli 如果存在凭据,请检查~/.aws/credentials文件(实际情况) 遵循AWS文档中的所有步骤,使Jenkins和代码管道协

目前我正试图让Jenkins与AWS代码管道一起工作。我在EC2实例上运行Jenkins。但是,由于某些原因,Jenkins无法加载AWS的默认凭据。我尝试了以下选项:

  • 使用“aws配置”命令初始化aws凭据
  • 使用Jenkins中的aws凭据插件
  • 执行导出AWS\u访问\u密钥\u ID=。。。。和AWS_SECRET_ACCESS_KEY=。。。。在詹金斯cli
  • 如果存在凭据,请检查~/.aws/credentials文件(实际情况)
  • 遵循AWS文档中的所有步骤,使Jenkins和代码管道协同工作()
  • 确保用户通过AWS上的IAM界面拥有凭据
  • 通过所有步骤,多次重新启动Jenkins服务器
“我的作业”中的轮询日志提供以下输出:

ERROR: Failed to record SCM polling for hudson.model.FreeStyleProject@75b77936[job-name]
com.amazonaws.AmazonClientException: Unable to load AWS credentials from any provider in the chain
at com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:131)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.getCredentialsFromContext(AmazonHttpClient.java:1028)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1048)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:948)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:661)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:635)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:618)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$300(AmazonHttpClient.java:586)
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:573)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:445)
at com.amazonaws.services.codepipeline.AWSCodePipelineClient.doInvoke(AWSCodePipelineClient.java:1785)
at com.amazonaws.services.codepipeline.AWSCodePipelineClient.invoke(AWSCodePipelineClient.java:1761)
at com.amazonaws.services.codepipeline.AWSCodePipelineClient.pollForJobs(AWSCodePipelineClient.java:1228)
at com.amazonaws.codepipeline.jenkinsplugin.AWSCodePipelineSCM.pollForJobs(AWSCodePipelineSCM.java:240)
at com.amazonaws.codepipeline.jenkinsplugin.AWSCodePipelineSCM.compareRemoteRevisionWith(AWSCodePipelineSCM.java:176)
at hudson.scm.SCM.poll(SCM.java:408)
at hudson.model.AbstractProject._poll(AbstractProject.java:1460)
at hudson.model.AbstractProject.poll(AbstractProject.java:1363)
at hudson.triggers.SCMTrigger$Runner.runPolling(SCMTrigger.java:563)
at hudson.triggers.SCMTrigger$Runner.run(SCMTrigger.java:609)
at hudson.util.SequentialExecutionQueue$QueueEntry.run(SequentialExecutionQueue.java:119)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

对进一步的方向有什么建议吗?由于我不使用HTTPS,我想阻止直接将凭据传递到配置页面中的作业。

根据您的描述,您为jenkins使用IAM角色工作正常。对于您的问题,jenkins用户可能无法使用您的凭据

因此,首先检查您使用的是AmazonLinux用户还是jenkins用户。如果是AmazonLinux用户,请更改它

第二件事是,您必须在服务器或Amazon EC2实例上配置代理和防火墙设置,以允许到Jenkins项目使用的端口的入站连接&在要与AWS CodePipeline一起使用的Jenkins的任何实例上安装用于Jenkins的AWS CodePipeline插件


参考链接:

您是否使用IAM角色启动了EC2实例?否,我与Jenkins已经有一个EC2实例。根据他们建议创建IAM角色的文档。在我们的部署堆栈中,我们为jenkins使用IAM角色,它工作正常。对于您的问题,jenkins用户可能无法使用您的凭据。如果您使用的是amazon linux。更改为jenkins用户并尝试aws cli操作。