Скрипт на Python для получения входного файла yaml для создания темы sns

#python #amazon-web-services #yaml #devops #amazon-sns

#python #amazon-web-services #yaml #devops #amazon-sns

Вопрос:

Этот скрипт не выдает никаких ошибок, он просто отображает код yaml на консоли

Скрипт на Python:

test_sns_topic.py

 import boto3
import yaml

client =  boto3.resource(
's3',
aws_access_key_id = '',
aws_secret_access_key = '',
aws_session_token = '',
region_name = 'us-west-2'

)

sns = boto3.client('sns')

with open('sns.yaml') as f:
   data = yaml.load(f,Loader= yaml.FullLoader)
   print(data)
  

sns.yaml

 Type: AWS::SNS::Topic
Properties:
  DisplayName: Test
  KmsMasterKeyID: 7fba2279-673-73878748343
  TopicName: test_sns_topic
  

Я пытаюсь создать тему, используя скрипт python, который принимает файл yaml в качестве входных данных.

Вывод:

Теперь он считывает файл yaml, но не создает какую-либо тему в aws, он просто отображает код yaml на консоли.

Комментарии:

1. Это похоже на инструкцию cloudformation для создания темы sns. Клиент boto3 для создания темы sns выглядит так sns.create_topic(Name='my-topic')

2. @AlexandreJuma спасибо, что ознакомились с этим, я внес изменения, но он по-прежнему выдает мне ошибку.

3. Какую последнюю ошибку вы получаете?

4. @balderman <код> импорт boto3 импорт yaml client = boto3.resource(‘s3’, aws_access_key_id = «, aws_secret_access_key = «, aws_session_token = «, region_name = ‘us-west-2’ ) sns = boto3.client(‘sns’) с открытым (‘sns.yaml’)как f: data = yaml.load(f,Loader= yaml. FullLoader) print(data) <code> но этот скрипт просто отображает данные yaml, но не выполняет инструкции yaml.

5. Я спросил, какова последняя ошибка, но вы опубликовали код.

Ответ №1:

Этот код выглядит так, как будто он принадлежит шаблону CloudFormation:

 Type: AWS::SNS::Topic
Properties:
  DisplayName: Test
  KmsMasterKeyID: 7fba2279-673-73878748343
  TopicName: test_sns_topic
  

(Это часть шаблона, а не полный шаблон.)

AWS CloudFormation может развертывать инфраструктуру на основе определений из шаблона. Для этого фрагмента он создаст тему Amazon SNS с заданным именем и ключом KMS. Он должен быть развернут как часть более полного шаблона CloudFormation. Как написано, он ничего не будет делать из Python.

Если вы хотите создать раздел Amazon SNS на Python (вместо CloudFormation), вам следует использовать create_topic() команду.