Вопросы по тегу: amazon-s3

(15)

Как импортировать текстовый файл на AWS S3 в pandas без записи на диск

У меня есть текстовый файл, сохраненный на S3, который представляет собой таблицу с разделителями табуляции. Я хочу загрузить его в pandas, но не могу сначала сохранить, потому что я работаю на сервере heroku. Вот что у меня есть на данный момент.import io import boto3 import os import pandas as pd os.environ["AWS_ACCESS_KEY_ID"] = "xxxxxxxx" os.environ["AWS_SECRET_ACCESS_KEY"] = "xxxxxxxx" s3_client = boto3.client('s3') response = s3_client.get_object(Bucket="my_bucket",Key="filename.txt") file = response["Body"] pd.read_csv(file, header=14, delimiter="\t", low_memory=False) ошибкаOSError: Expected file path name or file-like object, got type Как преобразовать тело ответа в формат, который примет панда?pd.read_csv(io.StringIO(file), header=14, delimiter="\t", low_memory=False) returns TypeError: initial_value must be str or None, not StreamingBody pd.read_csv(io.BytesIO(file), header=14, delimiter="\t", low_memory=False) returns TypeError: 'StreamingBody' does not support the buffer interface ОБНОВЛЕНИЕ - Использование следующего сработалоfile = response["Body"].read() и pd.read_csv(io.BytesIO(file), header=14, delimiter="\t", low_memory=False)
a

alpalalpal

6 лет назад

Ответов: 9

Идентификатор ключа доступа AWS не существует в наших записях

Я создал новый ключ доступа и настроил его в интерфейсе командной строки AWS с помощью aws configure. Он создал файл .ini в ~/.aws/config. Когда я запускаю aws s3 ls, это дает: При вызове операции ListBuckets произошла ошибка клиента (InvalidAccessKeyId): предоставленный вами идентификатор ключа доступа AWS не существует в наших записях. ПолитикаAmazonS3FullAccess также привязана к пользователю. Как это исправить?
k

kaushikdr

5 лет назад

Ответов: 29

Добавить данные в объект S3

Допустим, у меня есть машина, на которой я хочу иметь возможность записывать в определенный файл журнала, хранящийся в корзине S3.Итак, машина должна иметь возможность записи в это ведро, но я не хочу, чтобы у него была возможность перезаписывать или удалять любые файлы в этом ведре (включая тот, в который я хочу, чтобы он записывал).По сути, я хочу, чтобы моя машина могла только добавлять данные в этот файл журнала, не перезаписывая его и не загружая.Есть ли способ настроить мой S3 для такой работы? Может быть, я могу прикрепить к нему какую-то политику IAM, чтобы она работала так, как я хочу?
T

Theodore

5 лет назад

Ответов: 8

Nodejs AWS SDK S3 Генерирует предварительно подписанный URL

Я использую NodeJS AWS SDK для создания заранее подписанного URL-адреса S3. В документации приведен пример создания заранее подписанного URL.Вот мой точный код (с опущенной конфиденциальной информацией):const AWS = require('aws-sdk') const s3 = new AWS.S3() AWS.config.update({accessKeyId: 'id-omitted', secretAccessKey: 'key-omitted'}) // Tried with and without this. Since s3 is not region-specific, I don't // think it should be necessary. // AWS.config.update({region: 'us-west-2'}) const myBucket = 'bucket-name' const myKey = 'file-name.pdf' const signedUrlExpireSeconds = 60 * 5 const url = s3.getSignedUrl('getObject', { Bucket: myBucket, Key: myKey, Expires: signedUrlExpireSeconds }) console.log(url) Генерируемый URL-адрес выглядит так:https://bucket-name.s3-us-west-2.amazonaws.com/file-name.pdf?AWSAccessKeyId=[access-key-omitted]&Expires=1470666057&Signature=[signature-omitted] Я копирую этот URL в свой браузер и получаю следующий ответ: NoSuchBucket The specified bucket does not exist [bucket-name-omitted] D1A358D276305A5C bz2OxmZcEM2173kXEDbKIZrlX508qSv+CVydHz3w6FFPFwC0CtaCa/TqDQYDmHQdI1oMlc07wWk= Я знаю, что ведро существует. Когда я перехожу к этому элементу через веб-интерфейс AWS и дважды щелкаю по нему, он открывает объект с URL-адресом и работает нормально:https://s3-us-west-2.amazonaws.com/[bucket-name-omitted]/[file-name-omitted].pdf?X-Amz-Date=20160808T141832Z&X-Amz-Expires=300&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Signature=[signature-omitted]&X-Amz-Credential=ASIAJKXDBR5CW3XXF5VQ/20160808/us-west-2/s3/aws4_request&X-Amz-SignedHeaders=Host&x-amz-security-token=[really-long-key] Итак, меня заставили поверить, что я, должно быть, делаю что-то не так с тем, как я использую SDK.
D

Dustin

5 лет назад

Ответов: 6

Как указать учетные данные при подключении к boto3 S3?

В boto я указывал свои учетные данные при подключении к S3 таким образом:import boto from boto.s3.connection import Key, S3Connection S3 = S3Connection( settings.AWS_SERVER_PUBLIC_KEY, settings.AWS_SERVER_SECRET_KEY ) Затем я мог бы использовать S3 для выполнения своих операций (в моем случае удаления объекта из корзины).С boto3 все примеры, которые я нашел, такие:import boto3 S3 = boto3.resource( 's3' ) S3.Object( bucket_name, key_name ).delete() Я не смог указать свои учетные данные, поэтому все попытки заканчиваются с ошибкой InvalidAccessKeyId.Как я могу указать учетные данные с помощью boto3?
R

Robert Brax

4 года назад

Ответов: 7

AWS S3 CLI - не удалось подключиться к URL-адресу конечной точки

$ aws s3 ls Could not connect to the endpoint URL: "https://s3.us-east-1a.amazonaws.com/" В чем может быть проблема?
P

Prabhat

5 лет назад

Ответов: 15

Получение имен вложенных папок в корзине S3 из boto3

Используя boto3, я могу получить доступ к своей корзине AWS S3:s3 = boto3.resource('s3') bucket = s3.Bucket('my-bucket-name') Теперь корзина содержит папку первого уровня, которая сама содержит несколько подпапок, названных с меткой времени, например 1456753904534. Мне нужно знать названия этих подпапок для другой работы, которую я выполняю, и мне интересно, мог бы я получить их за меня с помощью boto3.Итак, я попробовал:objs = bucket.meta.client.list_objects(Bucket='my-bucket-name') , который дает словарь, ключ которого 'Contents' дает мне все файлы третьего уровня вместо каталогов временных меток второго уровня, на самом деле я получаю список, содержащий вещи как {u'ETag ':' "etag" ', u'Key': first-level / 1456753904534 / part-00014 ', u'LastModified': datetime.datetime (2016, 2, 29, 13, 52, 24, tzinfo = tzutc ()), u'Owner ': {u'DisplayName': 'owner', u'ID ': 'id'}, u'Size ': size, u'StorageClass': 'storageclass'} вы можете видеть, что определенные файлы, в данном случае part-00014, извлекаются, в то время как я хотел бы получить только имя каталога. В принципе, я мог бы исключить имя каталога из всех путей, но уродливо и дорого извлекать все на третьем уровне, чтобы получить второй уровень!Я тоже пробовал что-то сообщенное здесь:for o in bucket.objects.filter(Delimiter='/'): print(o.key) но я не получаю папки нужного уровня.Есть ли способ решить эту проблему?
m

mar tin

6 лет назад

Ответов: 18

Отказано в доступе при вызове операции PutObject с разрешением на уровне корзины

Я следовал примеру http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html#iam-policy-example-s3, чтобы предоставить пользователю доступ только к одной корзине.Затем я протестировал конфигурацию с помощью плагина W3 Total Cache Wordpress. Тест не пройден.Я также пробовал воспроизвести проблему, используя aws s3 cp --acl=public-read --cache-control='max-age=604800, public' ./test.txt s3://my-bucket/ и это не удалось сupload failed: ./test.txt to s3://my-bucket/test.txt A client error (AccessDenied) occurred when calling the PutObject operation: Access Denied Почему я не могу загрузить в корзину?
G

Greg

6 лет назад

Ответов: 17

Действие S3 Bucket не распространяется ни на какие ресурсы

Я следую инструкциям из этого ответа, чтобы сгенерировать следующую политику корзины S3:{ "Id": "Policy1495981680273", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1495981517155", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::surplace-audio", "Principal": "*" } ] } Я получаю сообщение об ошибке: Action does not apply to any resource(s) in statement Что мне не хватает в моем полисе?
P

Philip Kirkbride

5 лет назад

Ответов: 15

How to upgrade AWS CLI to the latest version?

I recently noticed that I am running an old version of AWS CLI that is lacking some functionality I need:$aws --version aws-cli/1.2.9 Python/3.4.3 Linux/3.13.0-85-generic How can I upgrade to the latest version of the AWS CLI (1.10.24)?Edit:Running the following command fails to update AWS CLI:$ pip install --upgrade awscli Requirement already up-to-date: awscli in /usr/local/lib/python2.7/dist-packages Cleaning up... Checking the version:$ aws --version aws-cli/1.2.9 Python/3.4.3 Linux/3.13.0-85-generic
B

Borealis

6 лет назад

Ответов: 15

Как переименовать AWS S3 Bucket name

После всех кропотливых работ по миграции и т. Д. Просто поймите, что если нужно обслуживать контент, используя CNAME (например, media.abc.com). Имя сегмента должно начинаться с media.abc.com/S3/amazon.com, чтобы обеспечить его безупречную работу.Просто поймите, что S3 не позволяет прямое переименование с консоли.Есть какие-нибудь способы обойти это?
C

Carson Lee

5 лет назад

Ответов: 3

AccessDenied for ListObjects for S3 bucket when permissions are s3:*

Получаю: Произошла ошибка (AccessDenied) при вызове операции ListObjects: Доступ запрещен Когда я пытаюсь получить папку из своего ведра S3.Используя эту команду: aws s3 cp s3://bucket-name/data/all-data/ . --recursive Разрешения IAM для корзины выглядят следующим образом:{ "Version": "version_id", "Statement": [ { "Sid": "some_id", "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::bucketname/*" ] } ] } Что мне нужно изменить, чтобы скопировать и ls успешно?
u

user1411335

5 лет назад

Ответов: 18

Лучший способ хранить скопированные изображения на S3

Чтобы дать небольшой контекст, в настоящее время я создаю приложение с рецептами, используя Rails API и интерфейс Ember. Чтобы получить рецепты, я просматриваю определенные веб-сайты и сохраняю информацию в базе данных PG.Поскольку изображений так много, я хотел бы сохранить их на S3. Раньше я использовал Paperclip для обработки загрузки изображений в S3, но поскольку мое приложение rails - это просто API, я не совсем уверен, какой подход / инструменты лучше всего. Кто нибудь подобное делал?
N

Nicholas Haley

6 лет назад

Ответов: 1

AWS S3, как я могу сделать так, чтобы пути к активам были равны домену?

Так, я только что установил свой сайт по адресу http://www.deesign.today.s3-website-us-west-2.amazonaws.com/ (серверы имен распространяются) - вы увидите, что пути к моим активам неверны. Я использую: www.mydomain.com/css/main.css, но это, очевидно, не работает, поскольку файлы активов хранятся в другом месте.Я мог бы просто изменить пути, но пути уродливы! :) : https://s3-us-west-2.amazonaws.com/www.deesign.today/css/main.cssЯ хочу просто указать на мои файлы активов, например, так: http://www.deesign.today/css/main.cssЯ не могу понять, как это сделать :( Я уже несколько часов пытаюсь найти ответ. Я могу создать поддомен assets и добавить запись cname, но я не хочу этого делать.Кто-нибудь уже сделал это?
d

doobada

6 лет назад

Ответов: 1

Невозможно определить схему для Parquet. Ее необходимо указать вручную

Я запускаю весь код из EMR Notebooks. spark.version '3.0.1-amzn-0' temp_df.printSchema() root |-- dt: string (nullable = true) |-- AverageTemperature: double (nullable = true) |-- AverageTemperatureUncertainty: double (nullable = true) |-- State: string (nullable = true) |-- Country: string (nullable = true) |-- year: integer (nullable = true) |-- month: integer (nullable = true) |-- day: integer (nullable = true) |-- weekday: integer (nullable = true) temp_df.show(2) +----------+------------------+-----------------------------+-----+-------+----+-----+---+-------+ | dt|AverageTemperature|AverageTemperatureUncertainty|State|Country|year|month|day|weekday| +----------+------------------+-----------------------------+-----+-------+----+-----+---+-------+ |1855-05-01| 25.544| 1.171| Acre| Brazil|1855| 5| 1| 3| |1855-06-01| 24.228| 1.103| Acre| Brazil|1855| 6| 1| 6| +----------+------------------+-----------------------------+-----+-------+----+-----+---+-------+ only showing top 2 rows temp_df.write.parquet(path='s3://project7878/clean_data/temperatures.parquet', mode='overwrite', partitionBy=['year']) spark.read.parquet(path='s3://project7878/clean_data/temperatures.parquet').show(2) An error was encountered: Unable to infer schema for Parquet. It must be specified manually.; Traceback (most recent call last): File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 353, in parquet return self._df(self._jreader.parquet(_to_seq(self._spark._sc, paths))) File "/usr/lib/spark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py", line 1305, in __call__ answer, self.gateway_client, self.target_id, self.name) File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 134, in deco raise_from(converted) File "", line 3, in raise_from pyspark.sql.utils.AnalysisException: Unable to infer schema for Parquet. It must be specified manually.; Я обращался к другим постам в stack overflow, но представленное там решение (проблема из-за записи пустых файлов) ко мне не относится.Пожалуйста, помогите мне. Спасибо!!!
v

vjp

год назад

Ответов: 1

2022 WebDevInsider