Как преобразовать выходные данные в str, чтобы использовать их в качестве входных данных в ресурсах Pulumi второго проекPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как преобразовать выходные данные в str, чтобы использовать их в качестве входных данных в ресурсах Pulumi второго проек

Сообщение Anonymous »

Я пытаюсь использовать выходные данные одного проекта через ссылку на стек в качестве входных данных для второго проекта, но, похоже, мне не хватает последней части, поскольку я получаю ошибку, как показано ниже в этом выводе невозможно преобразовать в str. Точную ошибку см. ниже.
Я следил за документацией «Ссылки на стек, входы и выходы», а также несколькими ответами, которые в основном одинаковы.
Это упрощенная настройка двух проектов, каждый со стеком разработки, серверная часть — это ведро Cloud Storage. В первом проекте класс VpcComponent создает сеть VPC на Google Cloud Platform (классический поставщик). Я хочу получить vpc и простое строковое значение my_string в качестве входных данных для других ресурсов Pulumi во втором проекте. Например, используйте vpc.name в качестве входных данных в подсети, созданной во втором проекте, или my_string в качестве идентификатора родительской папки проекта GCP.

Код: Выделить всё

Versions:
pulumi CLI version   v3.62.0
Python               v3.9.2
pulumi               v3.64.0
pulumi-gcp           v6.54.0
Первый проект

Код: Выделить всё

__main__.py

Код: Выделить всё

import pulumi
from pulumi import ComponentResource, Output
from pulumi_gcp import compute

class VpcComponent(ComponentResource):
def __init__(self, name, args=None, opts=None):
super().__init__("my:vpc:VpcComponent", name, None, opts)

self.vpc_network = compute.Network(f"{name}-vpc-network")
self.subnet = compute.Subnetwork(
f"{name}-subnet",
ip_cidr_range="10.0.0.0/24",
region="us-central1",
network=self.vpc_network.id,
)

# Pass the output of network and subnet names
self.vpc = self.vpc_network

# self.register_outputs({"vpc": self.vpc})

# Create the VPC network and subnet using VpcComponent class

vpc_component = VpcComponent("my-vpc-component")

# Register VPC and String output
pulumi.export("vpc_out", vpc_component.vpc)
pulumi.export("string_out", "hello_world")
Вывод после поднятия пулуми

Код: Выделить всё

Outputs:
string_out: "hello_world"
vpc_out   : {
auto_create_subnetworks                  : true
delete_default_routes_on_create          : false
description                              : ""
enable_ula_internal_ipv6                 : false
gateway_ipv4                             : ""
id                                       : "projects/my-gcp-project/global/networks/my-vpc-component-vpc-network-cfaeac6"
internal_ipv6_range                      : ""
mtu                                      : 0
name                                     : "my-vpc-component-vpc-network-cfaeac6"
network_firewall_policy_enforcement_order: "AFTER_CLASSIC_FIREWALL"
project                                  : "my-gcp-project"
routing_mode                             : "REGIONAL"
self_link                                : "https://www.googleapis.com/compute/v1/projects/my-gcp-project/global/networks/my-vpc-component-vpc-network-cfaeac6"
urn                                      : "urn:pulumi:dev::vpc::gcp:compute/network:Network::my-vpc-component-vpc-network"
}
Второй проект
Теперь использую Справочник по стеку Я хочу использовать vpc_out и >string_out во втором проекте пулуми.

Код: Выделить всё

__main__.py

Код: Выделить всё

import pulumi
from pulumi import StackReference
from pulumi_gcp import compute

# Note:-
# vpc is pulumi project name where we stored outputs and try to access those outputs in product project
# dev is stack name

stack_ref = pulumi.StackReference("organization/vpc/dev")

vpc_in=stack_ref.get_output("vpc_out")
string_in=stack_ref.get_output("string_out")

pulumi.export("Showing VPC output", vpc_in)
pulumi.export("Showing String Output", string_in)

print("Printing VPC name ", vpc_in.id.apply(lambda id: id))
print("Printing VPC name ", vpc_in.name.apply(lambda name: name))
print("Printing string_in", string_in.apply(lambda  string: string))
Если мы используем команду pulumi up в приведенном выше коде, то она сможет распечатать выходные данные с помощью pulumi.export(), но я не могу просто распечатать() .

Код: Выделить всё

print("Printing VPC name ", vpc_in.name.apply(lambda name: name))
и

Код: Выделить всё

print("Printing string_in", string_in.apply(lambda  string: string))
оба выдадут такую ​​ошибку:

Код: Выделить всё

Calling __str__ on an Output[T] is not supported.
To get the value of an Output[T] as an Output[str] consider:
1.  o.apply(lambda v: f"prefix{v}suffix")
See https://pulumi.io/help/outputs for more details.
This function may throw in a future version of Pulumi.
Printing string_in Calling __str__ on an Output[T] is not supported.
Что еще более важно, но, вероятно, по той же причине, я не могу использовать vpc_in.name или string_in в качестве значений в ресурсах Pulumi второго проекта, где он ожидает введите str и не принимает значение типа Output.
Как преобразовать вывод в str, чтобы их можно использовать в качестве входных данных для ресурсов Пулуми второго проекта?

Подробнее здесь: https://stackoverflow.com/questions/760 ... urces-of-t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»