gpt4 book ai didi

go - 不能使用 "LATEST"(字符串类型)作为字段值中的 *string 类型

转载 作者:IT王子 更新时间:2023-10-29 01:16:28 25 4
gpt4 key购买 nike

我正在尝试使用新的 aws-sdk-go (v2) 运行 ECS 任务。我在初始化 &ecs.RunTaskInput{} 结构时遇到了一些麻烦。

根据文件,这是结构定义:

type RunTaskInput struct {
_ struct{} `type:"structure"`

// The short name or full Amazon Resource Name (ARN) of the cluster on which
// to run your task. If you do not specify a cluster, the default cluster is
// assumed.
Cluster *string `locationName:"cluster" type:"string"`

// The number of instantiations of the specified task to place on your cluster.
// You can specify up to 10 tasks per call.
Count *int64 `locationName:"count" type:"integer"`

// The name of the task group to associate with the task. The default value
// is the family name of the task definition (for example, family:my-family-name).
Group *string `locationName:"group" type:"string"`

// The launch type on which to run your task.
LaunchType LaunchType `locationName:"launchType" type:"string" enum:"true"`

// The network configuration for the task. This parameter is required for task
// definitions that use the awsvpc network mode to receive their own Elastic
// Network Interface, and it is not supported for other network modes. For more
// information, see Task Networking (http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)
// in the Amazon Elastic Container Service Developer Guide.
NetworkConfiguration *NetworkConfiguration `locationName:"networkConfiguration" type:"structure"`

// A list of container overrides in JSON format that specify the name of a container
// in the specified task definition and the overrides it should receive. You
// can override the default command for a container (that is specified in the
// task definition or Docker image) with a command override. You can also override
// existing environment variables (that are specified in the task definition
// or Docker image) on a container or add new environment variables to it with
// an environment override.
//
// A total of 8192 characters are allowed for overrides. This limit includes
// the JSON formatting characters of the override structure.
Overrides *TaskOverride `locationName:"overrides" type:"structure"`

// An array of placement constraint objects to use for the task. You can specify
// up to 10 constraints per task (including constraints in the task definition
// and those specified at run time).
PlacementConstraints []PlacementConstraint `locationName:"placementConstraints" type:"list"`

// The placement strategy objects to use for the task. You can specify a maximum
// of five strategy rules per task.
PlacementStrategy []PlacementStrategy `locationName:"placementStrategy" type:"list"`

// The platform version on which to run your task. If one is not specified,
// the latest version is used by default.
PlatformVersion *string `locationName:"platformVersion" type:"string"`

// An optional tag specified when a task is started. For example if you automatically
// trigger a task to run a batch process job, you could apply a unique identifier
// for that job to your task with the startedBy parameter. You can then identify
// which tasks belong to that job by filtering the results of a ListTasks call
// with the startedBy value. Up to 36 letters (uppercase and lowercase), numbers,
// hyphens, and underscores are allowed.
//
// If a task is started by an Amazon ECS service, then the startedBy parameter
// contains the deployment ID of the service that starts it.
StartedBy *string `locationName:"startedBy" type:"string"`

// The family and revision (family:revision) or full ARN of the task definition
// to run. If a revision is not specified, the latest ACTIVE revision is used.
//
// TaskDefinition is a required field
TaskDefinition *string `locationName:"taskDefinition" type:"string" required:"true"`
}

我卡在 PlatformVersion 的值上,错误是:

不能在字段值中使用“LATEST”(字符串类型)作为类型 *string

对我来说,发生的事情并不明显。我的代码:

  _ := svc.RunTaskRequest(&ecs.RunTaskInput{
LaunchType: "FARGATE",
// Count: 1,
PlatformVersion: "LATEST",
// NetworkConfiguration: ecs.NetworkConfiguration{
// AwsvpcConfiguration: ecs.AwsvpcConfiguration{
// Subnets: []string{},
// AssignPublicIp: "ENABLED",
// },
// },
})

LaunchTypePlatformVersion 具有相同的类型,但一个可以工作,另一个不能。

老实说,Count 也发生了同样的事情:

cannot use 1 (type int) as type *int64 in field value

我应该怎么做才能解决这些问题?谢谢。

最佳答案

如错误消息所示,所需的类型是*string(指向string 的指针),但您只是传递了一个string 值。这些不可互换。由于 AWS API 的模糊性,AWS SDK 的大部分输入都使用字符串指针。它包含一个辅助函数 aws.String,用于此目的:

PlatformVersion: aws.String("LATEST"),

这将返回一个指向提供的字符串的指针。同样,对于您的 *int64,还有 aws.Int64:

Count:                aws.Int64(1),

这些助手是 documented at the very top of the SDK documentation .

关于go - 不能使用 "LATEST"(字符串类型)作为字段值中的 *string 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49160305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com