-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
Describe the bug
I am encountering a 401 Unauthorized error when attempting to download an S3 object from an EC2 instance using the aws-sdk-ruby gem. I have verified that the IAM role attached to the instance has the necessary s3:GetObject permission.
*** LOCAL GEMS ***
aws-sdk-core (3.220.1)
aws-sdk-kms (1.99.0)
aws-sdk-s3 (1.182.0)
aws-sdk-secretsmanager (1.113.0)
ruby-version: 3.2.2
chef-version:18.4.12 which is using embedded ruby version (3.1.2)
OS: Amazon Linux 2023
RestClient::Unauthorized: 401 Unauthorized
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/abstract_response.rb:249:inexception_with_response' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/abstract_response.rb:129:inreturn!'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:836:inprocess_result' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:743:inblock in transmit'
/opt/chef/embedded/lib/ruby/3.1.0/net/http.rb:966:instart' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:727:intransmit'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:163:inexecute' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient/request.rb:63:inexecute'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/rest-client-2.1.0/lib/restclient.rb:66:inget' /var/cache/chef/cookbooks/s3_file/providers/default.rb:24:inblock in class_from_file'
(eval):2:inblock in action_create' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/provider.rb:304:ininstance_eval'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/provider.rb:304:incompile_and_converge_action' (eval):2:inaction_create'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/provider.rb:245:inrun_action' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/resource.rb:601:inblock in run_action'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/resource.rb:628:inwith_umask' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/resource.rb:600:inrun_action'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/runner.rb:74:inrun_action' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/runner.rb:108:inblock in run_all_actions'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/runner.rb:108:ineach' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/runner.rb:108:inrun_all_actions'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/runner.rb:132:inblock in converge' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/resource_collection/resource_list.rb:96:inblock in execute_each_resource'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/resource_collection/stepable_iterator.rb:114:incall_iterator_block' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/resource_collection/stepable_iterator.rb:85:instep'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/resource_collection/stepable_iterator.rb:103:initerate' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/resource_collection/stepable_iterator.rb:54:ineach_with_index'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/resource_collection/resource_list.rb:94:inexecute_each_resource' /opt/chef/embedded/lib/ruby/3.1.0/forwardable.rb:238:inexecute_each_resource'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/runner.rb:130:inconverge' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/client.rb:869:inblock in converge'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/client.rb:864:incatch' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/client.rb:864:inconverge'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/client.rb:888:inconverge_and_save' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/client.rb:298:inrun'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/application.rb:305:inrun_with_graceful_exit_option' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/application.rb:281:inblock in run_chef_client'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/local_mode.rb:42:inwith_server_connectivity' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/application.rb:264:inrun_chef_client'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/application/base.rb:354:inrun_application' /opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-18.4.12/lib/chef/application.rb:67:inrun'
/opt/chef/embedded/lib/ruby/gems/3.1.0/gems/chef-bin-18.4.12/bin/chef-client:25:in<top (required)>' /usr/bin/chef-client:183:inload'
Regression Issue
- Select this option if this issue appears to be a regression.
Expected Behavior
The S3 object should be downloaded successfully.
Current Behavior
s3_file "/etc/chef/#{node['encrypted_data_bag_key_file']}" do
remote_path "#{node['encrypted_data_bag_key_path']}/#{node['encrypted_data_bag_key_file']}"
bucket "#{node['packages']['bucket']}"
end
This code fails with 401 Unauthorized error
Reproduction Steps
s3_file "/etc/chef/#{node['encrypted_data_bag_key_file']}" do
remote_path "#{node['encrypted_data_bag_key_path']}/#{node['encrypted_data_bag_key_file']}"
bucket "#{node['packages']['bucket']}"
end
Possible Solution
No response
Additional Information/Context
No response
Gem name ('aws-sdk', 'aws-sdk-resources' or service gems like 'aws-sdk-s3') and its version
aws-sdk-s3 (1.182.0)
Environment details (Version of Ruby, OS environment)
ruby-version: 3.2.2, OS: Amazon Linux 2023