目標:使用適用於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. 適用於iOS的AWS開發工具包:無法列出S3存儲桶中的文件
- 2. 使用適用於JavaScript的AWS開發工具包訪問AWS S3
- 3. AWS S3存儲桶用於公開發布數據
- 4. 「www」CNAME不適用於S3存儲桶
- 5. 適用於C++的AWS開發工具包:完整性檢查S3傳輸
- 6. 如何使用boto使用python監控AWS S3存儲桶?
- 7. 使用適用於python的AWS開發工具包訪問AWS Elastic Load Balancer
- 8. AWS S3存儲桶策略
- 9. 使用aws-sdk清除s3桶
- 10. 適用於.NET的AWS開發工具包ListBuckets錯誤
- 11. 適用於PHP的AWS開發工具包示例?
- 12. 適用於PHP的AWS開發工具包 - SQS錯誤
- 13. 適用於iOS區域和端點的AWS開發工具包
- 14. 如何使用IAM訪問AWS S3上的存儲桶 - 使用Node.js(aws-sdk)?
- 15. 如何使用圖像存儲在諸如AWS S3(桶)SOFTLAYER
- 16. 如何使用AWS Lambda python創建S3存儲桶?
- 17. 如何使用amazon-javascript-sdk列出AWS S3存儲桶?
- 18. 使用ProGuard與適用於Android的AWS開發工具包的錯誤
- 19. 適用於AWS的PowerShell:僅列出S3存儲桶中的「文件夾」?
- 20. 使用Aws Lambda將圖像上傳到AWS S3存儲桶
- 21. 使用適用於PHP 2的AWS開發工具包創建EBS卷
- 22. 適用於.NET的AWS開發工具包無法使用IIS訪問憑證
- 23. 使用適用於PHP 2的AWS開發工具包上傳圖像
- 24. 適用於PHP的AWS開發工具包DynamoDB僅適用於非空變量的PutItem
- 25. 如何將圖像直接存儲到AWS S3存儲桶,使用fckeditor上傳?
- 26. AWS S3錯誤的存儲桶對象
- 27. 使用適用於Node.js/Restify的AWS開發工具包通過POST將數據上傳到S3
- 28. 使用適用於PHP的AWS開發工具包以編程方式將文件夾添加到S3中
- 29. 如何將HP Fortify結果發佈到AWS S3存儲桶
- 30. 在火花中重複使用s3存儲桶之前,如何正確移除/清除s3存儲桶?
**建議:**你有聯繫AWS或閱讀他們的更新? – Ibo
我創建了這個問題來幫助其他可能面臨同樣問題的人。我已經在下面提出了我的解決方案。感謝您的提示,但! – SKRelan