Chef 部署无法在 Ubuntu 14.04 上运行,需要凭证

Chef 部署无法在 Ubuntu 14.04 上运行,需要凭证

我正在使用 Ubuntu 14.04 chef-solo 堆栈,但从今天起,当我运行部署脚本时,它给出了以下错误。请帮忙。

========== ubuntu@i-production-base:~$ sudo /var/chef/scripts/deploy.rb /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/credential_providers.rb:140:in `credentials': (AWS::Errors::MissingCredentialsError) 缺少凭证。

找不到 AWS 凭证。您可以通过几种不同的方式配置 AWS 凭证:

  • 使用 :access_key_id 和 :secret_access_key 调用 AWS.config

  • 将 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 导出到 ENV

  • 在 EC2 上,您可以使用 IAM 实例配置文件运行实例,并且凭证将从这些实例上的实例元数据服务自动加载。

  • 使用 :credential_provider 调用 AWS.config。凭证提供程序应包含 AWS::Core::CredentialProviders::Provider 或响应相同的公共方法。

= Ruby on Rails

在 Ruby on Rails 应用程序中,您还可以通过以下方式指定您的凭据:

  • 通过使用上述任何方法的配置初始化脚本(例如 RAILS_ROOT/config/initializers/aws-sdk.rb)。

  • 通过位于 RAILS_ROOT/config/aws.yml 的 yaml 配置文件。此文件的格式应与默认的 RAILS_ROOT/config/database.yml 文件相同。

    来自/usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/credential_providers.rb:62:in access_key_id' from /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/client.rb:549:inbuild_request' 来自 /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/client.rb:491:in build_request block (3 levels) in client_request' from /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/response.rb:175:in'来自 /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/response.rb:114:in initialize' from /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/client.rb:203:innew' 来自 /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/client.rb:203:in来自 /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/client.rb:391:in 的 client_request 中的块new_response' from /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/client.rb:490:in(2 个级别) 来自 /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/client.rb:373:in的client_request 来自(eval):3:in来自 /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/ec2/resource_tag_collection.rb:194:in的 fetch_ec2_meta_data 来自 /var/chef/scripts/deploy.rb:221:in来自 /var/chef/scripts/deploy.rb:328:in `'log_client_request' from /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/client.rb:477:inreturn_or_raise' from /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/client.rb:476:indescribe_tags' from /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/ec2/filtered_collection.rb:44:into_h' from /var/chef/scripts/deploy.rb:243:ininitialize' from /var/chef/scripts/deploy.rb:328:in

答案1

看起来您需要使用有权访问凭证的角色启动实例。您可以阅读相关内容这里或者

  • 通过环境导出 IAM 密钥和机密(在 Linux 上将进入 shell bash 例如export AWS_ACCESS_KEY_ID=YOUR_KEY; export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY

  • 配置AWS sdk...这种情况不太可能发生,因为这意味着对您的脚本进行了一些更改。

相关内容