如何解决如何承担 golang xray 客户端的角色?
每个https://aws.amazon.com/xray/faqs/:
Q: My application components run in their own AWS accounts. Can I use X-Ray to collect data across AWS accounts?
Yes,the X-Ray agent can assume a role to publish data into an account different from the one in which it is running. This enables you publish data from varIoUs components of your application into a central account.
我知道我可以担任这样的角色:
st := sts.NewFromConfig(awsConf)
creds := stscreds.NewAssumeRoleProvider(st,"myRoleArn")
awsConf.Credentials = aws.NewCredentialsCache(creds)
我知道我可以使用这些凭据创建 xray 服务:
import xrayv2 "github.com/aws/aws-sdk-go-v2/service/xray"
xrayService := xrayv2.NewFromConfig(awsConf)
问题在于 xray 服务是为直接与 xray API 交互而设计的,它没有 xray 客户端提供的任何奇妙的魔法。 我知道的 xray 客户端是这样配置的:
import "github.com/aws/aws-xray-sdk-go/xray"
xray.Configure(xray.Config{
DaemonAddr: "",ServiceVersion: "",Emitter: nil,SamplingStrategy: nil,StreamingStrategy: nil,ExceptionFormattingStrategy: nil,ContextMissingStrategy: nil,LogLevel: "",LogFormat: "",})
无论我使用的是 aws 还是 aws-v2 库,我都看不到可以向 xray 客户端提供任何类型的 aws conf/凭据提供程序的地方。我可以创建自定义发射器,但我希望避免这种情况。
关于如何向 github.com/aws/aws-xray-sdk-go/xray
提供凭据缓存的任何想法?
解决方法
另一个 S.O.问题帮助我误解了我的误解。 AWS X-Ray 客户端库只是将信息发布到本地运行的守护程序。因此,代码不负责将痕迹传送到 X 射线。
按照此处的步骤操作 - https://aws.amazon.com/blogs/compute/application-tracing-on-kubernetes-with-aws-x-ray/
并设置此变量 _ = os.Setenv("AWS_XRAY_DAEMON_ADDRESS","xray-service.kube-system:2000")
,我们能够将库指向本地守护进程。
那么负责转发的是守护进程,因此我们通过覆盖 xray ConfigMap 中的 RoleArn
来覆盖守护进程正在运行的角色。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。