Как повторно вызвать функцию со списком парных аргументов из файла YAML в Python, используя AWS SDK? - PullRequest
0 голосов
/ 22 октября 2018

Я хочу написать скрипт, который будет принимать значения учетной записи AWS из файла YAML с помощью python boto 3 и создавать несколько учетных записей в рамках организации AWS.Найдите следующие шаги, которые я хочу выполнить: шаг 1: У меня есть список значений учетной записи AWS в файле YAML, как показано ниже: (config.yaml)

Name:
   test1
   test2
Email:
    test1@gmail.com
    test2@gmail.com

шаг 2: написать скрипт на python для автоматизации процесса

import yaml

with open("config.yml", 'r') as ymlfile:
    account = yaml.safe_load(ymlfile)

for section in cfg:
    print(section)
    print(account['Name'])
    print(account['Email'])
  • Pyhon - новый для меня ... Я пытался с помощью приведенного выше кода загрузить значение из файла, но он печатает только значения
  • Может кто-нибудь помочь, как я могу загрузить значения YAML в приведенном ниже коде?

    • Я могу создать только одну учетную запись, используя приведенный ниже простой скрипт:

      import json
      import boto3
      client = boto3.client('organizations')
      
      response = client.create_account(
      Email="test1@gmail.com",
      AccountName= "Test1" 
      )
      

1 Ответ

0 голосов
/ 22 октября 2018

Как я вижу, ваш конфигурационный файл выглядит неправильно.Наличие двух «параллельных» списков редко является хорошей идеей (я полагаю, это было ваше намерение, даже если тире не хватает).Я бы дал ему такую ​​структуру:

accounts:
- name: test1
  email: test1@gmail.com
- name: test2
  email: test2@gmail.com

и прочитал бы ее примерно так:

import yaml

with open("config.yml", 'r') as ymlfile:
    config = yaml.safe_load(ymlfile)
accounts = config['accounts']
for account in accounts:
    print()
    print(account['name'])
    print(account['email'])


ОБНОВЛЕНИЕ

Возможно, вам нужно сделатьчто-то вроде этого?

# ...
for account in accounts:
    response = client.create_account(
        AccountName = account['name'],
        Email       = account['email'])

(какое у boto3 соглашение о непифонических именах!)

...