gpt4 book ai didi

amazon-web-services - 模拟AWS Go SSM GetParameter调用

转载 作者:行者123 更新时间:2023-12-01 22:17:05 26 4
gpt4 key购买 nike

我正在尝试遵循this example,但是使用它来模拟SSM GetParameter调用。
我要做的就是发送inputParameter的值,并验证输出是否为outputParameter的值。

当我运行go test时,它只会引发我定义的错误,但不确定原因。我究竟做错了什么?

这是我的功能:

package main

import (
"fmt"
"log"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ssm"
"github.com/aws/aws-sdk-go/service/ssm/ssmiface"

)

type AWS struct {
Config *aws.Config
Session *session.Session
SSM ssmiface.SSMAPI
}



func (self *AWS) GetSSMValue(SSMPath string) string {
req, err := self.SSM.GetParameter(&ssm.GetParameterInput{
Name: aws.String(SSMPath),
WithDecryption: aws.Bool(false),
})
if err != nil {
log.Fatalln("Unable to retrieve value: ", err)
}
SSMValue := *req.Parameter.Value

return SSMValue
}


func main() {
Aws := new(AWS)
Aws.Config = &aws.Config{Region: aws.String("us-west-2")}
Aws.Session, _ = session.NewSession(Aws.Config)

ssmsvc := ssm.New(Aws.Session)
Aws.SSM = ssmiface.SSMAPI(ssmsvc)

inputParam := "/path/to/my/parameter"
myValue := Aws.GetSSMValue(inputParam)
fmt.Println(myValue)

}

和我的测试:
package main

import (
"errors"
"github.com/aws/aws-sdk-go/service/ssm"
"github.com/aws/aws-sdk-go/service/ssm/ssmiface"
"testing"
)

type mockSSM struct {
ssmiface.SSMAPI
response string
err error
}

func (sp *mockSSM) GetParameter(input *ssm.GetParameterInput) (*ssm.GetParameterOutput, error) {
output := new(ssm.GetParameterOutput)
return output, sp.err

}

func TestGetSSMValue(t *testing.T) {
inputParameter := "path/to/my/test"
outputParameter := "MyTestOutput"
retriever := new(AWS)
retriever.SSM = &mockSSM{
response: outputParameter,
err: errors.New("my custom error"),
}
if actualValue := retriever.GetSSMValue(inputParameter); actualValue != outputParameter {
t.Errorf("Expected %q but got %q", outputParameter, actualValue)
}

}

最佳答案

实际上一切都正确,您只需要添加1行代码即可初始化输出。参数:output.Parameter = &ssm.Parameter{Value: aws.String("MyTestOutput")}
而且您func必须看起来像这样:

func (sp *mockSSM) GetParameter(input *ssm.GetParameterInput) (*ssm.GetParameterOutput, error) {
output := new(ssm.GetParameterOutput)
output.Parameter = &ssm.Parameter{Value: aws.String("MyTestOutput")}
return output, nil
}

关于amazon-web-services - 模拟AWS Go SSM GetParameter调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58940962/

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