#python #google-cloud-platform #pulumi
#python #google-cloud-platform #pulumi
Вопрос:
Я создаю хранилище GCP и агрегированный приемник журналов, используя Pulumi и Python. Для создания приемника мне нужно значение идентификатора корзины из Pulumi.
bucket = storage.Bucket(resource_name=bucket_name,
location="us-central1",
storage_class="REGIONAL",
uniform_bucket_level_access=True)
# destination value is needed to create the logging sink.
destination = Output.all(bucket.id).apply(lambda l: f"storage.googleapis.com/{l[0]}")
print(destination)
Я ожидал бы получить вывод на печать переменной назначения, аналогичной "storage.googleapis.com/bucket_id"
. Вместо этого я получаю
<pulumi.output.Output object at 0x10c39ae80>
. Я также пытался использовать метод Pulumi concat, как описано в документах Pulumi.
destination = Output.concat("storage.googleapis.com/", bucket.id)
print(destination)
<pulumi.output.Output object at 0x10c39ae80>
Вместо ожидаемой строки возвращается то же самое.
Любые предложения будут оценены.
Ответ №1:
Вы не можете распечатать Output
, потому что вывод является контейнером для отложенного значения, которое еще не доступно при print
вызове. Вместо этого попробуйте экспортировать значение в виде вывода стека
pulumi.export("destination", destination)
Если вы действительно хотите распечатать его, попробуйте сделать это из apply
:
destination.apply(lambda v: print(v))
Кстати, ваш первый фрагмент можно упростить до
destination = bucket.id.apply(lambda id: f"storage.googleapis.com/{id}")
но concat
на самом деле все еще проще.
Комментарии:
1. Спасибо, это имеет смысл. Чего я не могу определить, так это как создать это целевое строковое значение в качестве входных данных для ресурса приемника организации. Целевым значением является строка storage.googleapis.com / вдоль проволочного ведра я бы.
2. Например, после создания корзины, которую я использую
sink = logging.OrganizationSink("resource-ops-sink", destination=f"storage.googleapis.com/{bucket.id}", filter=filter, org_id=org)
, я получаю сообщение об ошибке в переменной назначения « gcp: logging:OrganizationSink (resource-ops-sink): ошибка: произошла ошибка 1: * googleapi: ошибка 404: корзина Выходной объект по адресу 0x10bcc16a0> не существует, не найден «3. Используйте
destintion=Output.concat("storage.googleapis.com/", bucket.id)
вместо прямого форматирования строки