Загрузите файл с помощью boto3 в контейнере Docker, развернутом в Sagemaker Endpoint - PullRequest
1 голос
/ 01 июля 2019

Я создал свой собственный контейнер Docker, который предоставляет код логического вывода для развертывания в качестве конечной точки в Amazon Sagemaker. Однако этот контейнер должен иметь доступ к некоторым файлам из s3. Используемая роль IAM имеет доступ ко всем сегментам s3, к которым я пытаюсь обратиться.

Код для загрузки файлов с помощью клиента boto3:

import boto3

model_bucket = 'my-bucket'

def download_file_from_s3(s3_path, local_path):
    client = boto3.client('s3')
    client.download_file(model_bucket, s3_path, local_path)

Политики роли IAM:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::my-bucket/*"
            ]
        }
    ]
}

Запуск Docker-контейнера локально позволяет мне скачивать файлы с s3, как и ожидалось.

Развертывание в качестве конечной точки в Sagemaker, однако время ожидания запроса:

botocore.vendored.requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='my-bucket.s3.eu-central-1.amazonaws.com', port=443): Max retries exceeded with url: /path/to/my-file (Caused by ConnectTimeoutError(<botocore.awsrequest.AWSHTTPSConnection object at 0x7f66244e69b0>, 'Connection to my-bucket.s3.eu-central-1.amazonaws.com timed out. (connect timeout=60)'))

Любая помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Для всех, кто сталкивался с этим вопросом, при создании модели свойство «Включить изоляцию сети» по умолчанию имеет значение True.Из документов AWS:

Если вы включите изоляцию сети, контейнеры не смогут совершать какие-либо исходящие сетевые вызовы, даже на другие сервисы AWS, такие как Amazon S3.Кроме того, учетные данные AWS недоступны для среды выполнения контейнера.

Таким образом, это свойство должно быть установлено в False для подключения к любой другой службе AWS.

Изоляция сети пользовательского интерфейса AWS Sagemaker установлена ​​в False

0 голосов
/ 01 июля 2019

по соображениям безопасности они не позволяют ему обращаться к s3 изначально, вам нужно подключить его к VPC https://docs.aws.amazon.com/sagemaker/latest/dg/host-vpc.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...