Ich benutze Python und Boto3, um mit S3 zu arbeiten.S3 Key nicht sofort nach der Auflistung
Ich liste ein S3-Bucket und Filterung durch einen Präfix:
bucket = s3.Bucket(config.S3_BUCKET)
for s3_object in bucket.objects.filter(Prefix="0000-00-00/", Delimiter="/"):
Das gibt mir eine iterable von S3-Objekten.
Wenn ich das Objekt drucke ich sehen:
s3.ObjectSummary(bucket_name='validation', key=u'0000-00-00/1463665359.Vfc01I205aeM627249')
Wenn ich gehe, um den Körper zu bekommen, obwohl ich eine Ausnahme erhalten:
content = s3_object.get()["Body"].read()
botocore.exceptions.ClientError: An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist.
So Boto gab mir nur den Schlüssel, aber dann sagt es, dass es nicht existiert?
Dies gilt nicht für alle Schlüssel. Nur etwas. Wenn ich in der AWS-Konsole nach dem ungültigen Schlüssel suche, findet er ihn nicht.
Danke für den Tipp auf Lese-nach-Schreiben Konsistenz, dass genau löst mein Problem. – Kong
Kühl. Es ist esoterisch. – tedder42
Beachten Sie, dass neuere Versionen von boto3/botocore auch Unterstützung für 's3-external-1' als Regionsnamen haben, so dass Sie' boto3.client ('s3', region_name = 's3-external-1') '' verwenden können oder die übliche 'AWS_DEFAULT_REGION', Region in der Konfigurationsdatei usw. – jamesls