amazon web services - Hur man löser felet 'Calling [toString] on an [Output<T>] is not supported' från pulumi typescript?


Jag skapar en S3-bucket med Pulumi TypeScript och vill använda den här bucketen i EC2 User Data för att kopiera ett objekt. Följande är min kod för båda.

const bucket = new aws.s3.Bucket("bucket-name", {
    acl: "private",
});

Jag laddade upp en index.html-fil och här är användardata för EC2:-

const userData = 
`#!/bin/bash
sudo apt update -y
sudo apt install -y apache2 && sudo apt install -y awscli 
aws s3 cp s3://`+pulumi.interpolate`${bucket.id}`+`/index.html /var/www/html/index.html
sudo systemctl start apache2`;

Jag använde pulumi.interpolate$ {bucket.id}` för att anropa bucket Id, men när jag kontrollerade på EC2 för användardata fick jag följande fel.

aws s3 cp s3://Calling [toString] on an [Output<T>] is not supported.

To get the value of an Output<T> as an Output<string> consider either:
1: o.apply(v => `prefix${v}suffix`)
2: pulumi.interpolate `prefix${v}suffix`

kan någon hjälpa hur kan jag kalla på bucket-namnet i skriptet?

Svar #1

Du bör placera interpolate utanför alla strängoperationer

const userData = pulumi.interpolate`#!/bin/bash
sudo apt update -y
sudo apt install -y apache2 && sudo apt install -y awscli 
aws s3 cp s3://${bucket.id}/index.html /var/www/html/index.html
sudo systemctl start apache2`;

Om din kod, operationen + anropar toString på resultatet och leder till felet.

Relaterade artiklar