簡體   English   中英

不能在字段值中使用“LATEST”(類型字符串)作為類型*字符串

[英]Cannot use “LATEST” (type string) as type *string in field value

我正在嘗試使用新的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的值上:

cannot use "LATEST" (type string) as type *string in field value

對我而言,發生的事情並不明顯。 我的代碼:

  _ := 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),

這些幫助程序記錄在SDK文檔的最頂層

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM