ansible-collections/community.aws

aws_ssm.Connection._get_boto_client lose access_key, token when using aws profile

dlscjf151 opened this issue · 0 comments

Summary

I'm using ansible with aws ssm connection. I authenticated with aws credential profile, but encountered error on s3 client initializing


....

    File "/.venv/lib/python3.11/site-packages/botocore/signers.py", line 199, in sign
    auth.add_auth(request)
  File "/.venv/lib/python3.11/site-packages/botocore/auth.py", line 437, in add_auth
    self._inject_signature_to_request(request, signature)
  File "/.venv/lib/python3.11/site-packages/botocore/auth.py", line 440, in _inject_signature_to_request
    auth_str = ['AWS4-HMAC-SHA256 Credential=%s' % self.scope(request)]
                                                   ^^^^^^^^^^^^^^^^^^^
  File "/.venv/lib/python3.11/site-packages/botocore/auth.py", line 388, in scope
    print('/'.join(scope))
          ^^^^^^^^^^^^^^^
TypeError: sequence item 0: expected str instance, NoneType found
fatal: [*************]: FAILED! => {
    "msg": "Unexpected failure during module execution: sequence item 0: expected str instance, NoneType found",
    "stdout": ""
}

I printed debug log at fail point, access_key and token was None

ReadOnlyCredentials(access_key=None, secret_key='******************', token=None)

Because of this, scope becomes [None, '20240514', 'ap-northeast-2', 's3', 'aws4_request'] and raise error doing join None type

Issue Type

Bug Report

Component Name

ansible_collections.community.aws.plugins.connection.aws_ssm.Connection._get_boto_client

Ansible Version

$ ansible --version
ansible [core 2.16.6]
  config file = /ansible.cfg
  configured module search path = ['/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = .venv/lib/python3.11/site-packages/ansible
  ansible collection location = /.ansible/collections:/usr/share/ansible/collections
  executable location = /.venv/bin/ansible
  python version = 3.11.8 (v3.11.8:db85d51d3e, Feb  6 2024, 18:02:37) [Clang 13.0.0 (clang-1300.0.29.30)] (/.venv/bin/python3.11)
  jinja version = 3.1.4
  libyaml = True

Collection Versions

$ ansible-galaxy collection list
Collection                               Version
---------------------------------------- -------
amazon.aws                               7.5.0  
ansible.netcommon                        5.3.0  
ansible.posix                            1.5.4  
ansible.utils                            2.12.0 
ansible.windows                          2.3.0  
arista.eos                               6.2.2  
awx.awx                                  23.9.0 
azure.azcollection                       1.19.0 
check_point.mgmt                         5.2.3  
chocolatey.chocolatey                    1.5.1  
cisco.aci                                2.9.0  
cisco.asa                                4.0.3  
cisco.dnac                               6.13.3 
cisco.intersight                         2.0.8  
cisco.ios                                5.3.0  
cisco.iosxr                              6.1.1  
cisco.ise                                2.8.1  
cisco.meraki                             2.18.0 
cisco.mso                                2.6.0  
cisco.nxos                               5.3.0  
cisco.ucs                                1.10.0 
cloud.common                             2.1.4  
cloudscale_ch.cloud                      2.3.1  
community.aws                            7.2.0  
community.azure                          2.0.0  
community.ciscosmb                       1.0.7  
community.crypto                         2.19.0 
community.digitalocean                   1.26.0 
community.dns                            2.9.0  
community.docker                         3.9.0  
community.general                        8.6.0  
community.grafana                        1.8.0  
community.hashi_vault                    6.2.0  
community.hrobot                         1.9.2  
community.library_inventory_filtering_v1 1.0.1  
community.libvirt                        1.3.0  
community.mongodb                        1.7.3  
community.mysql                          3.9.0  
community.network                        5.0.2  
community.okd                            2.3.0  
community.postgresql                     3.4.0  
community.proxysql                       1.5.1  
community.rabbitmq                       1.3.0  
community.routeros                       2.15.0 
community.sap                            2.0.0  
community.sap_libs                       1.4.2  
community.sops                           1.6.7  
community.vmware                         4.3.0  
community.windows                        2.2.0  
community.zabbix                         2.3.1  
containers.podman                        1.13.0 
cyberark.conjur                          1.2.2  
cyberark.pas                             1.0.25 
dellemc.enterprise_sonic                 2.4.0  
dellemc.openmanage                       8.7.0  
dellemc.powerflex                        2.3.0  
dellemc.unity                            1.7.1  
f5networks.f5_modules                    1.28.0 
fortinet.fortimanager                    2.4.0  
fortinet.fortios                         2.3.6  
frr.frr                                  2.0.2  
gluster.gluster                          1.0.2  
google.cloud                             1.3.0  
grafana.grafana                          2.2.5  
hetzner.hcloud                           2.5.0  
hpe.nimble                               1.1.4  
ibm.qradar                               2.1.0  
ibm.spectrum_virtualize                  2.0.0  
ibm.storage_virtualize                   2.3.1  
infinidat.infinibox                      1.4.5  
infoblox.nios_modules                    1.6.1  
inspur.ispim                             2.2.0  
inspur.sm                                2.3.0  
junipernetworks.junos                    5.3.1  
kubernetes.core                          2.4.2  
lowlydba.sqlserver                       2.3.2  
microsoft.ad                             1.5.0  
netapp.aws                               21.7.1 
netapp.azure                             21.10.1
netapp.cloudmanager                      21.22.1
netapp.elementsw                         21.7.0 
netapp.ontap                             22.11.0
netapp.storagegrid                       21.12.0
netapp.um_info                           21.8.1 
netapp_eseries.santricity                1.4.0  
netbox.netbox                            3.17.0 
ngine_io.cloudstack                      2.3.0  
ngine_io.exoscale                        1.1.0  
openstack.cloud                          2.2.0  
openvswitch.openvswitch                  2.1.1  
ovirt.ovirt                              3.2.0  
purestorage.flasharray                   1.27.0 
purestorage.flashblade                   1.17.0 
purestorage.fusion                       1.6.1  
sensu.sensu_go                           1.14.0 
splunk.es                                2.1.2  
t_systems_mms.icinga_director            2.0.1  
telekom_mms.icinga_director              1.35.0 
theforeman.foreman                       3.15.0 
vmware.vmware_rest                       2.3.1  
vultr.cloud                              1.12.1 
vyos.vyos                                4.1.0  
wti.remote                               1.0.5  

AWS SDK versions

$ pip show boto boto3 botocore
WARNING: Package(s) not found: boto
Name: boto3
Version: 1.34.104
Summary: The AWS SDK for Python
Home-page: https://github.com/boto/boto3
Author: Amazon Web Services
Author-email: 
License: Apache License 2.0
Location: /.venv/lib/python3.11/site-packages
Requires: botocore, jmespath, s3transfer
Required-by: 
---
Name: botocore
Version: 1.34.104
Summary: Low-level, data-driven core of boto 3.
Home-page: https://github.com/boto/botocore
Author: Amazon Web Services
Author-email: 
License: Apache License 2.0
Location: /.venv/lib/python3.11/site-packages
Requires: jmespath, python-dateutil, urllib3
Required-by: boto3, s3transfer

Configuration

$ ansible-config dump --only-changed
CONFIG_FILE() = /ansible.cfg
PAGER(env: PAGER) = less

OS / Environment

M1 Mac

Steps to Reproduce

playbook.yml
---
- name: 'Main Playbook'
  hosts: 'aws_ec2'
  gather_facts: true
  roles:
    - role: 'check_disk_storage'

vars.yml
---
ansible_python_interpreter: '/usr/bin/python3'
ansible_connection: 'aws_ssm'
ansible_aws_ssm_bucket_name: '********'

Expected Results

successfully connect to s3 and ec2 instance

Actual Results

....

    File "/.venv/lib/python3.11/site-packages/botocore/signers.py", line 199, in sign
    auth.add_auth(request)
  File "/.venv/lib/python3.11/site-packages/botocore/auth.py", line 437, in add_auth
    self._inject_signature_to_request(request, signature)
  File "/.venv/lib/python3.11/site-packages/botocore/auth.py", line 440, in _inject_signature_to_request
    auth_str = ['AWS4-HMAC-SHA256 Credential=%s' % self.scope(request)]
                                                   ^^^^^^^^^^^^^^^^^^^
  File "/.venv/lib/python3.11/site-packages/botocore/auth.py", line 388, in scope
    print('/'.join(scope))
          ^^^^^^^^^^^^^^^
TypeError: sequence item 0: expected str instance, NoneType found
fatal: [*************]: FAILED! => {
    "msg": "Unexpected failure during module execution: sequence item 0: expected str instance, NoneType found",
    "stdout": ""
}

Code of Conduct

  • I agree to follow the Ansible Code of Conduct