我正在使用 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:in
build_request' 来自 /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/client.rb:491:in build_requestblock (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:ininitialize' from /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/client.rb:203:in
new' 来自 /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:in
return_or_raise' from /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/core/client.rb:476:in
describe_tags' from /usr/local/lib/ruby/gems/2.3.0/gems/aws-sdk-v1-1.66.0/lib/aws/ec2/filtered_collection.rb:44:in
to_h' from /var/chef/scripts/deploy.rb:243:in
initialize' 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...这种情况不太可能发生,因为这意味着对您的脚本进行了一些更改。