Ошибка неверного значения параметра в файле YAML
Я работаю в организации AWS: в настоящее время создаю политики scp в организации AWS, как показано ниже:
Файл Python:
policies = config['policies']
for policy in policies:
try:
OUPolicy = client.create_policy(
Description=policy['description'],
Name= policy['Name'],
Content=policy['content'],
Type='SERVICE_CONTROL_POLICY'
)
YAML файл:
policies:
- Name: xyz
description: Service Control Policies for xyz
content:
Version: 2012-10-17
Statement:
- Effect: Allow
Resource: "*"
Action: "*"
- Effect: Deny
Resource: "*"
Action: "*
Я проверил шаблон YAML, и он в правильном формате, но все равно получаю ошибку, как показано ниже:
Parameter validation failed:
Invalid type for parameter Content, value: {'Version': datetime.date(2012, 10, 17), 'Statement': [{'Effect': 'Allow', 'Resource': '*', 'Action': '*'}, {'Effect': 'Deny', 'Resource': '*', 'Action': '*'}]}, type: <class 'dict'>, valid types: <class 'str'>
2 ответа
Согласно документации create_policy
что вы показали,
Содержимое (строка) - [ОБЯЗАТЕЛЬНО] Содержимое политики, добавляемое в новую политику. Например, если вы создаете политику управления службами (SCP), эта строка должна быть текстом JSON, в котором указаны разрешения, которые администраторы в подключенных учетных записях могут делегировать своим пользователям, группам и ролям.
вам нужно закодировать словарь policy['content']
(который вы декодировали из документа YAML) обратно в строку JSON.
Вы можете сделать это используя json.dumps:
import json
...
client.create_policy(
...
Content=json.dumps(policy['content']),
...
)
Ответ:
policies = config['policies']
for policy in policies:
try:
OUPolicy = client.create_policy(
Description=policy['description'],
Name= policy['Name'],
Content=json.dumps(policy['content']),
Type='SERVICE_CONTROL_POLICY'
)