在 Golang 上使用 Pulumi 创建新的 ec2 实例会出现意外

我正在尝试在 Golang 上使用 Pulumi 创建一个新的 AWS EC2 实例。


这是我的功能:


    ec2, errEc2 := ec2.NewInstance(ctx, name, &ec2.InstanceArgs{

    SubnetId:               pulumi.String(subnet.Id),

    Ami:                    pulumi.String("ami-0022f774911c1d690"),

    AvailabilityZone:       pulumi.String("us-east-1"]),

    InstanceType:           pulumi.String("t3.micro"),

    VpcSecurityGroupIds:    pulumi.StringArray{secGroup.ID()},

    Tags: pulumi.StringMap{

        "Project": pulumi.String("projectName"),

        "Name": pulumi.String("exampleName"),

        "Environment": pulumi.String("staging"),

    },

})

使用此文档作为参考,输入参数对我来说看起来不错


但是当我跑步时


pulumi up

我收到这个奇怪的错误


    error: 1 error occurred:

    * creating EC2 Instance: MissingParameter: The request must contain the parameter ImageId

    status code: 400, request id: 91babb9b....

在文档或网络中的任何地方,我都没有发现需要使用 ImageId,并且当我尝试将其提供给 ec2.NewInstance 函数时,出现“未知字段”语法错误


笔记:


我正在使用这些包


github.com/pulumi/pulumi-aws/sdk/v5/go/aws/ec2


github.com/pulumi/pulumi/sdk/v3/go/pulumi


波斯汪
浏览 101回答 2
2回答

HUX布斯

修复了错误——我不知道是什么问题,因为 ID 是相同的,但我修复它的方法是这样做:之前使用 LookupAmi 函数:func GetAmi(ctx *pulumi.Context, Ami map[string]string) (*ec2.LookupAmiResult, error){ami, amiErr := ec2.LookupAmi(ctx, &ec2.LookupAmiArgs{    NameRegex:  pulumi.StringRef(Ami["Name"]),    Owners: []string {        Ami["Owner"],    },})if amiErr != nil {    log.Fatal("Got error while trying to get ami image!", amiErr)}return ami, amiErr}然后才使用先前函数中的 ami.Id 字段创建 ec2 实例:    ec2, errEc2 := ec2.NewInstance(ctx, name, &ec2.InstanceArgs{    SubnetId:               pulumi.String(subnet.Id),    Ami:                    pulumi.String(ami.Id),    AvailabilityZone:       pulumi.String(Ec2["AvailabilityZone"]),    InstanceType:           pulumi.String(Ec2["InstanceType"]),    VpcSecurityGroupIds:    pulumi.StringArray{secGroup.ID()},    Tags: pulumi.StringMap{        "Project": pulumi.String(Ec2["Name"]),        "Name": pulumi.String(name),        "Environment": pulumi.String(environment),    },})if errEc2 != nil {    log.Fatalln("Got error while trying to create ec2 instance!", errEc2)}return ec2, errEc2

撒科打诨

我看到您的代码有一些错误:AvailabilityZone:       pulumi.String("us-east-1"]),这里多了一句],应该是:AvailabilityZone:       pulumi.String("us-east-1"),除此之外,它us-east-1不是一个有效的可用区,你可能想要us-east-1a,所以最终:AvailabilityZone:       pulumi.String("us-east-1a"),关于您的图像 ID 问题,我会检查您引用的 AMI 是否确实存在于您的帐户中。图像 ID 属性由Amiid 发送,所以应该足够了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go