第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

S3 存儲(chǔ)桶命名策略問(wèn)題,以及嘗試將開(kāi)發(fā)工具包生成的請(qǐng)求發(fā)送到實(shí)現(xiàn) S3 API 的 API 的問(wèn)題

S3 存儲(chǔ)桶命名策略問(wèn)題,以及嘗試將開(kāi)發(fā)工具包生成的請(qǐng)求發(fā)送到實(shí)現(xiàn) S3 API 的 API 的問(wèn)題

Go
波斯汪 2022-08-01 19:02:03
如果標(biāo)題措辭沒(méi)有正確描述問(wèn)題,請(qǐng)道歉,我不完全確定如何措辭。我正在開(kāi)發(fā)一個(gè)可以像處理S3 API一樣處理請(qǐng)求的API,因此應(yīng)該與Go S3 SDK一起使用,我在嘗試將存儲(chǔ)桶名稱傳遞給Go S3 SDK函數(shù)時(shí)遇到了一個(gè)問(wèn)題。例如:result, err := svc.CreateBucket(&s3.CreateBucketInput{     Bucket:aws.String(bucketName), })當(dāng)存儲(chǔ)桶名稱設(shè)置為我認(rèn)為正在解析為兩個(gè)單獨(dú)標(biāo)簽的字符串時(shí),例如或SDK似乎生成一個(gè)請(qǐng)求,其中主機(jī)地址設(shè)置為終端節(jié)點(diǎn)地址,即 后跟存儲(chǔ)桶名稱,我的 API 可以相應(yīng)地接受、處理和響應(yīng)該名稱。testBucketmyBuckethttp://localhost:8000/s3/但是,當(dāng)存儲(chǔ)桶名稱包含解析為單個(gè)標(biāo)簽(如 or)的字符串時(shí),SDK 會(huì)生成一個(gè)主機(jī)地址,其中存儲(chǔ)桶名稱位于主機(jī)之前,即 這會(huì)導(dǎo)致錯(cuò)誤,因?yàn)槲揖帉懙腁PI不支持此主機(jī)地址。testbuckettestbuckethttp://test.localhost:8000/s3/理想情況下,我需要以某種方式支持使用單標(biāo)簽存儲(chǔ)桶名稱,通過(guò)擴(kuò)展 API 處理請(qǐng)求的方式,或者通過(guò)制定一種方法來(lái)強(qiáng)制 SDK 停止更改主機(jī) URL 格式。如果有人能夠幫助解決問(wèn)題,或提供建議,我將不勝感激。
查看完整描述

2 回答

?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

因此,我逐步了解了 AWS 開(kāi)發(fā)工具包 V2,該函數(shù)是導(dǎo)致主機(jī)異常的原因。我要提到這一點(diǎn),這取決于AWS看看這是否是一個(gè)錯(cuò)誤。不過(guò)有辦法解決這個(gè)問(wèn)題!moveBucketNameToHost(req.URL, bucket)


您需要將“端點(diǎn)解析器”屬性設(shè)置為 。這將阻止它被此功能更改。HostnameImmutabletrue


示例:創(chuàng)建自定義沖突解決程序時(shí)


// for custom localstack endpoint

    customResolver := aws.EndpointResolverFunc(func(service, region string) (aws.Endpoint, error) {

        if service == s3.ServiceID {

            return aws.Endpoint{

                PartitionID:   "aws",

                URL:           "http://localhost:4566",

                SigningRegion: "eu-west-1",

                HostnameImmutable: true, // This must be set to true to disable the host changing

            }, nil

        }

        // returning EndpointNotFoundError will allow the service to fallback to it's default resolution

        return aws.Endpoint{}, &aws.EndpointNotFoundError{}

    })


    config, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("eu-west-1"), config.WithEndpointResolver(customResolver))

    if err != nil {

        log.Fatalf("unable to load SDK config, %v", err)

    }


    client := s3.NewFromConfig(config)

更新


默認(rèn)情況下,S3 使用虛擬主機(jī)路徑樣式對(duì)存儲(chǔ)桶進(jìn)行尋址。這就是主機(jī)名被突變?yōu)?{bucketname}.localhost:4566 的原因。


S3 對(duì)有效存儲(chǔ)桶名稱的要求很少。因此,根據(jù)要求,camelCase 是一個(gè)無(wú)效的存儲(chǔ)桶名稱,因此 SDK 回退到路徑樣式的 url。因此,主機(jī)名不會(huì)發(fā)生突變,您會(huì)看到 localhost:4566/camelCase。


根據(jù)解決方法,如果 HostnameImmutable 屬性設(shè)置為 true,則 SDK API 客戶端將不會(huì)修改 URL 的主機(jī)名。如果 API 要求客戶端使用特定于操作的主機(jī)名值,這可能會(huì)導(dǎo)致 API 客戶端無(wú)法正常運(yùn)行。


在您的情況下,更好的解決方案是直接在S3選項(xiàng)上啟用UsePathStyle選項(xiàng)


result, err :=  client.CreateBucket(ctx, &input, func(o *s3.Options) {

        o.UsePathStyle = true

})


查看完整回答
反對(duì) 回復(fù) 2022-08-01
?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊

我相信這是由于對(duì)SDK進(jìn)行了更改,以刪除對(duì)基于路徑的存儲(chǔ)桶路由的支持:http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html

您可以更新 的配置,將存儲(chǔ)桶名稱作為子域(默認(rèn))或路徑。https://docs.aws.amazon.com/sdk-for-go/api/aws/#ConfigConfig.S3ForcePathStyle


查看完整回答
反對(duì) 回復(fù) 2022-08-01
  • 2 回答
  • 0 關(guān)注
  • 261 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)