目標:使用適用於GOlang的AWS開發工具包清空現有S3存儲桶。如何使用適用於GOlang的AWS開發工具包清空S3存儲桶?
1
A
回答
0
NOTE:這些代碼片段可能需要您在您的側面進行更改以使其運行。
您將需要實現以下方法:
//EmptyBucket empties the Amazon S3 bucket
func (s awsS3) EmptyBucket(bucket string) error {
log.Info("removing objects from S3 bucket : ", bucket)
params := &s3.ListObjectsInput{
Bucket: aws.String(bucket),
}
for {
//Requesting for batch of objects from s3 bucket
objects, err := s.Client.ListObjects(params)
if err != nil {
return err
}
//Checks if the bucket is already empty
if len((*objects).Contents) == 0 {
log.Info("Bucket is already empty")
return nil
}
log.Info("First object in batch | ", *(objects.Contents[0].Key))
//creating an array of pointers of ObjectIdentifier
objectsToDelete := make([]*s3.ObjectIdentifier, 0, 1000)
for _, object := range (*objects).Contents {
obj := s3.ObjectIdentifier{
Key: object.Key,
}
objectsToDelete = append(objectsToDelete, &obj)
}
//Creating JSON payload for bulk delete
deleteArray := s3.Delete{Objects: objectsToDelete}
deleteParams := &s3.DeleteObjectsInput{
Bucket: aws.String(bucket),
Delete: &deleteArray,
}
//Running the Bulk delete job (limit 1000)
_, err = s.Client.DeleteObjects(deleteParams)
if err != nil {
return err
}
if *(*objects).IsTruncated { //if there are more objects in the bucket, IsTruncated = true
params.Marker = (*deleteParams).Delete.Objects[len((*deleteParams).Delete.Objects)-1].Key
log.Info("Requesting next batch | ", *(params.Marker))
} else { //if all objects in the bucket have been cleaned up.
break
}
}
log.Info("Emptied S3 bucket : ", bucket)
return nil
}
UPDATE:AWS SDK爲GO的最新版本已經解決了這個問題之前,我有。
0
適用於Go的AWS開發工具包具有Amazon S3批處理抽象。看看here。
0
不要忘記,默認情況下,ListObjects最多隻能返回1000個存儲桶項目。如果您可能擁有超過1000個,請在返回值上檢查IsTruncated屬性。如果爲true,則使用返回值中的NextMarker屬性獲取下一個1000項。
相關問題
- 1. AWS S3存儲桶用於公開發布數據
- 2. 「www」CNAME不適用於S3存儲桶
- 3. 適用於C++的AWS開發工具包:完整性檢查S3傳輸
- 4. 如何使用boto使用python監控AWS S3存儲桶?
- 5. 使用適用於python的AWS開發工具包訪問AWS Elastic Load Balancer
- 6. ZF1 Aws S3存儲桶SDK可用性
- 7. 如何使用IAM訪問AWS S3上的存儲桶 - 使用Node.js(aws-sdk)?
- 8. 適用於AWS的PowerShell:僅列出S3存儲桶中的「文件夾」?
- 9. 使用Aws Lambda將圖像上傳到AWS S3存儲桶
- 10. 適用於.NET的AWS開發工具包無法使用IIS訪問憑證
- 11. 使用適用於PHP 2的AWS開發工具包上傳圖像
- 12. 使用適用於PHP的AWS開發工具包以編程方式將文件夾添加到S3中
- 13. 如何使用REST向S3存儲桶發送發佈請求?
- 14. AWS S3錯誤的存儲桶對象
- 15. AWS S3 - 如何將IAM用戶限制爲單個存儲桶?
- 16. 僅適用於公共限制的Amazon S3存儲桶策略
- 17. 使用AWS IAM的AWS S3存儲桶API調用用戶角色憑證:
- 18. 使用AWS CLI下載S3存儲桶中的最新文件?
- 19. AWS Cloudfront重定向到S3存儲桶
- 20. AWS Lambda Java,寫入S3存儲桶
- 21. 文件AWS S3存儲桶自動
- 22. 從AWS S3存儲桶顯示img
- 23. 如何定義特定存儲桶僅允許S3完全存取策略僅適用於該存儲桶?
- 24. 具有多個區域的AWS S3存儲桶
- 25. 使用PHP爲AWS S3存儲桶中包含的圖像添加水印?
- 26. 爲什麼AWS Beanstalk服務使用S3存儲桶?
- 27. 在Sinatra中使用AWS :: S3列出存儲桶
- 28. Powershell:使用臨時憑證訪問AWS s3存儲桶
- 29. 使用iText在AWS S3存儲桶中編輯pdf文件
- 30. 啓用MFA的S3 AWS桶
**建議:**你有聯繫AWS或閱讀他們的更新? – Ibo
我創建了這個問題來幫助其他可能面臨同樣問題的人。我已經在下面提出了我的解決方案。感謝您的提示,但! – SKRelan