如何使用联合身份验证向AWS进行身份验证以启动ec2实例

时间:2019-01-20 18:35:34

标签: amazon-ec2 ansible

我是AWS的新手。我的公司使用AD联合身份登录到AWS管理控制台。我正在尝试通过Ansible 2.7.5启动ec2实例,但是我认为我需要使用sts_session_token模块向AWS进行身份验证?

可调整2.7.5   配置文件=无   配置的模块搜索路径= ['〜/ .ansible / plugins / modules','/ usr / share / ansible / plugins / modules']   ansible python模块位置= /usr/local/Cellar/ansible/2.7.5/libexec/lib/python3.7/site-packages/ansible   可执行位置= / usr / local / bin / ansible   python版本= 3.7.2(默认,2019年1月13日,12:50:15)[Clang 10.0.0(clang-1000.11.45.5)]

我的想法是从这里的链接:https://www.google.com/url?sa=i&source=images&cd=&cad=rja&uact=8&ved=2ahUKEwi-xbHX-_zfAhWGiOAKHUslBdAQjRx6BAgBEAU&url=https%3A%2F%2Fwww.slideshare.net%2FAmazonWebServices%2Fdelegating-access-to-your-aws-environment&psig=AOvVaw2fyLa59UGpxplzXgLCyDqB&ust=1548094527815558

我的想法是从这里的链接:https://www.google.com/url?sa=i&source=images&cd=&cad=rja&uact=8&ved=2ahUKEwi-xbHX-_zfAhWGiOAKHUslBdAQjRx6BAgBEAU&url=https%3A%2F%2Fwww.slideshare.net%2FAmazonWebServices%2Fdelegating-access-to-your-aws-environment&psig=AOvVaw2fyLa59UGpxplzXgLCyDqB&ust=1548094527815558

对于python,我安装了boto,boto3和botocore。

我有一个带有凭据和配置的〜/ .aws /目录

凭据

[默认]

aws_access_key_id =

aws_secret_access_key =

配置

[默认]

region = us-east-1

output = json

Ansible Playbook

 ---
 - hosts: localhost
   gather_facts: False
   tasks:

      - name: Get Session Token Credentials from STS
        sts_session_token:
         duration_seconds: 3600
        register: session_credentials

      - debug:
         var: session_credentials

      - name: Assume Role AWS
        sts_assume_role:
         role_arn: "arn:aws:iam::<id+role>"
         role_session_name: "session role name"
        register: assumed_role

      - debug:
         var: assumed_role`

错误的结果:

完整的回溯是: 追溯(最近一次通话):   在第113行中输入文件“〜/ .ansible / tmp / ansible-tmp-1548008584.240192-70823728355355706 / AnsiballZ_sts_session_token.py”     _ansiballz_main()   _ansiballz_main中第105行的文件“〜/ .ansible / tmp / ansible-tmp-1548008584.240192-70823728355355706 / AnsiballZ_sts_session_token.py”     invoke_module(zipped_mod,temp_path,ANSIBALLZ_PARAMS)   在invoke_module中的文件“〜/ .ansible / tmp / ansible-tmp-1548008584.240192-70823728355355706 / AnsiballZ_sts_session_token.py”,第48行     imp.load_module(' main ',mod,module,MOD_DESC)   在第155行中输入文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ma​​in.py”   主文件151行中的文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ma​​in.py”   get_session_token中的第124行的文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ma​​in.py”   文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ansible_sts_session_token_payload.zip/ansible/module_utils/basic.py”,第2369行,位于fail_json中   文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ansible_sts_session_token_payload.zip/ansible/module_utils/basic.py”,第2341行,以_return   文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ansible_sts_session_token_payload.zip/ansible/module_utils/basic.py”,行522,在remove_values中   文件“ /var/folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ansible_sts_session_token_payload.zip/ansible/module_utils/basic.py”,第505行,位于_recondition TypeError:未知类型的值:,调用GetSessionToken操作时发生错误(InvalidClientTokenId):请求中包含的安全令牌无效。

致命:[localhost]:失败! => {     “已更改”:错误,     “ module_stderr”:“追踪(最近一次通话最近):\ n文件\”〜/ .ansible / tmp / ansible-tmp-1548008584.240192-70823728355355706 / AnsiballZ_sts_session_token.py \“,第\ 113行,位于\ n _ansiballz_main()\ n在_ansiballz_main \ n invoke_module(zipped_mod,temp_path,ANSIBALLZ_PARAMS)的文件\“〜/ .ansible / tmp / ansible-tmp-1548008584.240192-70823728355355706 / AnsiballZ_sts_session_token.py \”行105中,\ n文件\“〜/。 /ansible-tmp-1548008584.240192-70823728355706/AnsiballZ_sts_session_token.py \“,第48行,invoke_module \ n imp.load_module(' main ',mod,module,MOD_DESC)\ n文件\” / var / folders / gn / 2zrt_ymj2_qf1dqysz6rgk99ymbz39 / T / ansible_sts_session_token_payload_6Rj3ys / main .py \“,第155行,位于\ n文件\” / var / folders / gn / 2zrt_ym_y_s_y_s_yz_yz_y_st_yz_yz_y_s_yj_ys_yj_ys_k_ys_y_s_y_s_yj_ys_ys_y_j_ys_y_s_y_j_ys_ys_k_ys_y_s_yj_ys_y_j_ys_k_ys_y_s_y_s_ys_k_ys_ys_ys_k_ys_ys_y_j_y_s_ys_k_y_s_y_s_y_sjy .py \”,主\ n文件\“ / var / folders / gn / 2zrt_ymj2_qf1dqysz6rgk99ymbz39 / T / ansible_sts_session_token_payload_6Rj3ys / .py \”中的第151行get_session_token \ n文件中的第124行,“ / var / folders / gn / 2zrt_ymj2_qf1dqysz6rgk99ymbz39 / T / ansible_sts_session_token_payload_6Rj3ys / ansible_sts_session_token_payload.zip / ansible / module_pys / bas,ic / 369” /folders/gn/2zrt_ymj2_qf1dqysz6rgk99ymbz39/T/ansible_sts_session_token_payload_6Rj3ys/ansible_sts_session_token_payload.zip/ansible/module_utils/basic.py \ “线2341,在_return_formatted \ n文件\” 的/ var /文件夹/ GN / 2zrt_ymj2_qf1dqysz6rgk99ymbz39 / T / ansible_sts_session_token_payload_6Rj3ys / ansible_sts_session_token_payload。 zip / ansible / module_utils / basic.py \“,第522行,位于remove_values \ n文件\” / var / folders / gn / 2zrt_ymj2_qf1dqysz6rgk99ymbz39 / T / ansible_sts_session_token_payken_payload_6Rj3ys / ansible_sts_session_pys_ans / ansible_sts_session_tos_session_to。 ,在_remove_values_conditions \ nTypeError:未知类型的值:中,调用GetSessionToken操作时发生错误(InvalidClientTokenId):要求中包含的安全令牌st无效。\ n“,     “ module_stdout”:“”,     “ msg”:“模块失败\ n请参阅stdout / stderr了解确切错误”,     “ rc”:1 }

1 个答案:

答案 0 :(得分:0)

您需要尝试使用EC2 module并安装boto并configure。您可能会找到示例剧本here。这是最简单的方法。但是不建议将凭证存储在EC2实例(您的方框)中,建议您使用AWS角色。