gpt4 book ai didi

go - Snowball Edge - Golang 中的 aws-sdk-go 包 - 无法连接到 S3

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:17 28 4
gpt4 key购买 nike

我正在使用 Golang 中的 aws-sdk-go 包连接到 Amazon S3 以提供基于云的存储池。我有这个运作良好。我希望能够使用 Snowball 支持批量高速传输,因此我得到了一个 Snowball Edge 来在我的实验室中对此进行测试。我还没有弄清楚如何让它工作,而且 Snowball Edge 的文档似乎并不完整。此配置可能会受到订购 Snowball Edge 而不仅仅是 Snowball 的影响。

我发现 Edge 问题更多的原因是,普通的 Snowball 需要一个名为 snowballAdapter 的应用程序才能运行,它看起来可以处理一些端口映射问题。但是,此应用程序似乎与 Edge 设备不兼容,因为它报告说它不适用于“Snowball Edge Manifest 文件”。

我查看了真实 AWS S3 和 nmap 报告中可用的端口:

nmap -v -sT -Pn s3.us-east-1.amazonaws.com
...
Scanning s3.us-east-1.amazonaws.com (52.216.161.53) [1000 ports]
Discovered open port 443/tcp on 52.216.161.53
Discovered open port 80/tcp on 52.216.161.53

而在 Snowball Edge 上,端口是:

nmap -v -sT -Pn 192.168.1.4
....
Scanning 192.168.1.4 [1000 ports]
Discovered open port 8080/tcp on 192.168.1.4
Discovered open port 22/tcp on 192.168.1.4
Discovered open port 9091/tcp on 192.168.1.4
Discovered open port 8443/tcp on 192.168.1.4
....
PORT STATE SERVICE
22/tcp open ssh
8080/tcp open http-proxy
8443/tcp open https-alt
9091/tcp open xmltec-xmlmail

因此,在我看来,问题可能在于我必须让 aws 包将端口 8443 用于 Snowball Edge 而不是 443 用于真正的 S3。连接到 S3 的代码非常简单:

creds := credentials.NewStaticCredentials(s3Config.S3AccessKey, s3Config.S3SecretAccessKey, s3Config.S3Token)
_, err := creds.Get()

if err != nil {
return nil, nil, err
}

if len(baseFolder) > 0 {
baseFolder = baseFolder + "/"
}

cfg := aws.NewConfig().WithRegion(s3Config.S3Region).WithCredentials(creds)
svc := s3.New(session.New(), cfg)

params := &s3.ListObjectsInput{
Bucket: aws.String(s3Config.S3BucketName),
Prefix: aws.String(baseFolder),
Delimiter: aws.String("/"),
}

resp, err := svc.ListObjects(params)

那么,问题是,如何更改代码以指向 Snowball Edge?我尝试从 Amazon S3 端点映射到/etc/hosts 中的 Snowball Edge。在发现端口不同后,我明白了为什么这不起作用。我试过添加不同形式的“WithEndpoint(”...host...”) 但没有成功。或者,我是在完全错误的轨道上,应该能够让 snowballAdapter 与 Snowball 一起工作边缘?

顺便说一句,所有 snowballEdge 命令都按预期工作,因此设备似乎工作正常,例如:

./snowballEdge list-access-keys

{
"AccessKeyIds" : [ "..." ]
}

./snowballEdge get-secret-access-key --access-key-id ....

[snowballEdge]
aws_access_key_id = ...
aws_secret_access_key = ...

而且,我使用了与该设备关联的正确 key ,并且它确实配置了 S3 服务:

./snowballEdge list-services
{
"ServiceIds" : [ "s3" ]
}

最佳答案

Snowball Edge 与 AWS S3 截然不同。除了访问 key 和 secret 访问 key 之外,它还需要端点和证书形式的附加凭据。真正的 AWS S3 有一个有效的证书,由证书颁发机构支持,但 Snowball Edge 有一个自签名证书。

配置可以这样创建:

cfg := aws.NewConfig().WithRegion(s3Config.S3Region).WithCredentials(creds).WithEndpoint(s3Config.S3Endpoint).WithHTTPClient(httpClient)
svc = s3.New(session.New(), cfg)

端点如下所示(您在上面的问题文本中看到 Snowball Edge 在端口 8443 上响应):

https://192.168.1.4:8443

证书的格式必须与文件中的格式相同(包括所有换行符。它看起来像这样(同样,您传入的字符串必须在每一行之后包含换行符):

-----BEGIN CERTIFICATE-----
MIIC7zCCAdegAwIBAgIJBJZB/gkBP0B5MA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
BAMMCzE3Mi4yMC4xLjE3NB4XDTE3MDQyODIwMTMwOFoXDTE5MDQxODIwMTMwOFow
FjEUMBIGA1UEAwwLMTcyLjIwLjEuMTcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQCrLWlTfrSj9R1of5Z98EHYIEEPBgnWxnlrvA+ryAzPmiXbYomI4Tpl
PsuIA+7hGXG10H0zwlz0n22EUv4pE79toYcd3czOJUAHEuSelhtP7u91vM4GguFx
A00gosu04RFUD+BYNeaLTQfd7vdmQB3bY3KEbn7Dfrs/1MYFhKb8J77mgCuUbAPu
PNvwLoV+hBL+ndgs+bIu4MtXjUJDiigRZkacpMQaduDMqEq6seoc+JwrKNBjRBRu
3l/fcQoWf+g902oZJaXXnVGqqb7o2YAQFehUAbmCJfuKFSl5tu0B+3KvQQni7lK+
SV8WItdrPumS98BBlt6NpzgC5fTwCmapAgMBAAGjQDA+MAwGA1UdEwQFMAMBAf8w
HQYDVR0OBBYEFMAvKzKgKI+izqPX6DJjJz/0fELtMA8GA1UdEQQIMAaHBKwUAREw
DQYJKoZIhvcNAQELBQADggEBAGwyzmI+9psQu9/N/oClN7Lej7e4E8cC8vymVfPz
fdW45IMNVEYHxHbu9+JzLOtLxfuDmD6B6fEYVoPubb6tsnacuwOSMZhTvhhy9nv2
f+2Pslgj/kYTeMePbHOPTyQ4sd1BE7ALdNiL/hd08ZNhqObagixNYw9eYeHEStBy
tOADKcY9gOxek1k9t+96nATgSy0WIytwra0uEgyipKQ2gXKpgg15SI4nDxQLLEgG
lb3FtRk+PfJxQ4zbHZe/cRNflcGwVCefycLQOA2Sdr8pgHW7gvETu9i9ywF0UV6f
b9wsPcDmg3EaxBa+wrLlYSzaPhI+rZYh6bpnTn311QIFZ+s=
-----END CERTIFICATE-----

发现使用 S3 的 Snowball Edge 存储速度非常快。我们能够实现大约 1,100 兆字节/秒的复制速率。

关于go - Snowball Edge - Golang 中的 aws-sdk-go 包 - 无法连接到 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49284342/

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