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

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

如何使用 go in lambda 安全地檢查文件是否存在于 S3 存儲(chǔ)桶中?

如何使用 go in lambda 安全地檢查文件是否存在于 S3 存儲(chǔ)桶中?

Go
qq_笑_17 2023-07-17 15:16:16
我正在為我的項(xiàng)目開(kāi)發(fā)一項(xiàng)服務(wù),用于同步 AWS 中的 Lambda 工作。這個(gè)想法是編寫(xiě)一個(gè) TrackerFile 模塊來(lái)在 S3 上存儲(chǔ)結(jié)構(gòu)。每次使用跟蹤器時(shí),我都會(huì)檢查是否有一個(gè)文件的名稱分配給被調(diào)用的跟蹤器。我不知道如何安全地檢查 S3 上是否存在給定名稱的文件。你能展示一段代碼示例嗎?如果文件存在,它能夠返回 (bool, err) 其中 bool 為 True 嗎?
查看完整描述

4 回答

?
翻翻過(guò)去那場(chǎng)雪

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

確保您具有以下權(quán)限:“s3:GetObject”、“s3:ListBucket”、


關(guān)于安全性,AWS剛剛為S3引入了強(qiáng)一致性


s3svc = s3.New(sess)

     

func keyExists(bucket string, key string) (bool, error) {

        _, err := s3svc.HeadObject(&s3.HeadObjectInput{

            Bucket: aws.String(bucket),

            Key:    aws.String(key),

        })

        if err != nil {

            if aerr, ok := err.(awserr.Error); ok {

                switch aerr.Code() {            

                case "NotFound": // s3.ErrCodeNoSuchKey does not work, aws is missing this error code so we hardwire a string

                    return false, nil

                default:

                    return false, err

                }

            }

            return false, err

        }

        return true, nil

    }


查看完整回答
反對(duì) 回復(fù) 2023-07-17
?
隔江千里

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

如果您使用適用于 Go V2 的 AWS 開(kāi)發(fā)工具包:


import (

? ? ...

? ? awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http"

? ? ...

)


func uploaded(ctx context.Context, client *s3.Client, bucket string, key string) (bool, error) {

? ? _, err := client.HeadObject(ctx, &s3.HeadObjectInput{

? ? ? ? Bucket: aws.String(bucket),

? ? ? ? Key:? ? aws.String(key),

? ? })

? ? if err != nil {

? ? ? ? var responseError *awshttp.ResponseError

? ? ? ? if errors.As(err, &responseError) && responseError.ResponseError.HTTPStatusCode() == http.StatusNotFound {

? ? ? ? ? ? return false, nil

? ? ? ? }

? ? ? ? return false, err

? ? }

? ? return true, nil

}


查看完整回答
反對(duì) 回復(fù) 2023-07-17
?
慕容3067478

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

您可以嘗試使用以下代碼來(lái)獲取對(duì)象元數(shù)據(jù):

sess, err := session.NewSession(&aws.Config{

? ? Region: aws.String("your-region"),

})


if err != nil {

? ? //handle error here

}


svc := s3.New(session.Must(sess, err))

output, err := svc.HeadObject(&s3.HeadObjectInput{

? ? Bucket: aws.String("bucket_name"),

? ? Key:? ? aws.String("object_key"),

})


if err != nil {

? ? //handle error here

}


fmt.Println(output.LastModified) //do something with metadata


查看完整回答
反對(duì) 回復(fù) 2023-07-17
?
偶然的你

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

只需參考 AWS API S3 HeadObject 方法:AWS API 文檔。如果缺少對(duì)象,它將返回狀態(tài)代碼 404。

HEAD 請(qǐng)求與對(duì)象上的 GET 操作具有相同的選項(xiàng)。該響應(yīng)與 GET 響應(yīng)相同,只是沒(méi)有響應(yīng)正文。因此,如果 HEAD 請(qǐng)求生成錯(cuò)誤,它會(huì)返回通用的 404 Not Found 或 403 Forbidden 代碼。

import (

? "context"

? "github.com/aws/aws-sdk-go-v2/aws"

? "github.com/aws/aws-sdk-go-v2/service/s3"

? "log"

)


func IsObjectExistsInS3Bucket(bucketName string, objectKey string) bool{

? _, err := executeHeadObjectMethodOnS3Api(bucketName, objectKey)

? return ! handleErrorOnS3HeadObjectAction(bucketName, objectKey, err)

}


func executeHeadObjectMethodOnS3Api(bucketName string, objectKey string) (output *s3.HeadObjectOutput, err error){

? s3Client := getS3Client()

? return s3Client.HeadObject(context.TODO(), &s3.HeadObjectInput{

? ? Bucket:? ? ? ? ? ? ? ?aws.String(bucketName),

? ? Key:? ? ? ? ? ? ? ? ? aws.String(objectKey),

? })

}


func handleErrorOnS3HeadObjectAction(bucketName, objectKey string, err error) (hit bool){

? logUnableToHeadObjectFromS3Bucket(bucketName, objectKey, err)

? return err != nil

}


func logUnableToHeadObjectFromS3Bucket(bucketName string, objectKey string, err error) {

? if err != nil {

? ? log.Printf("Unable to head object {%s} from S3 bucket {%s}: { %v }", objectKey, bucketName, err)

? }

}


查看完整回答
反對(duì) 回復(fù) 2023-07-17
  • 4 回答
  • 0 關(guān)注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報(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)