Использование загрузки S3 для запуска лямбда-функции для создания тома EBS, который будет создавать том EBS на основе размера загрузки S3 (с использованием boto3) - PullRequest
0 голосов
/ 24 марта 2020

В настоящее время я использую триггер S3 для запуска лямбда-функции после помещения файла в S3.

Я намереваюсь получить размер из загрузки S3 и передать это значение в Size поле в автоматизированной функции, которая создает том EBS.

Я пытаюсь создать том EBS на основе размера файла. Затем скопируйте файл на том EBS, который будет прикреплен к экземпляру EC2, который затем обработает файл. Я использую тома EBS, потому что файлы, загружаемые в основное хранилище S3, представляют собой сжатые файлы, которые необходимо распаковать и обработать.

Существует ли способ создания тома EBS Size на основе исходного файла что было загружено?

response = client.create_volume(
    AvailabilityZone='string',
    Encrypted=True|False,
    Iops=123,
    KmsKeyId='string',
    OutpostArn='string',
    Size=123,
    SnapshotId='string',
    VolumeType='standard'|'io1'|'gp2'|'sc1'|'st1',
    DryRun=True|False,
    TagSpecifications=[
        {
            'ResourceType': 'client-vpn-endpoint'|'customer-gateway'|'dedicated-host'|'dhcp-options'|'elastic-ip'|'fleet'|'fpga-image'|'host-reservation'|'image'|'instance'|'internet-gateway'|'key-pair'|'launch-template'|'natgateway'|'network-acl'|'network-interface'|'placement-group'|'reserved-instances'|'route-table'|'security-group'|'snapshot'|'spot-fleet-request'|'spot-instances-request'|'subnet'|'traffic-mirror-filter'|'traffic-mirror-session'|'traffic-mirror-target'|'transit-gateway'|'transit-gateway-attachment'|'transit-gateway-multicast-domain'|'transit-gateway-route-table'|'volume'|'vpc'|'vpc-peering-connection'|'vpn-connection'|'vpn-gateway'|'vpc-flow-log',
            'Tags': [
                {
                    'Key': 'string',
                    'Value': 'string'
                },
            ]
        },
    ],
    MultiAttachEnabled=True|False
)

1 Ответ

1 голос
/ 24 марта 2020

Похоже, ваша цель состоит в том, чтобы экземпляр Amazon EC2 обработал файл, который был загружен в Amazon S3.

Во-первых, нет необходимости отправлять файл через том Amazon EBS. Вместо этого, программное обеспечение, работающее на экземпляре EC2, может просто получить S3.

Основное архитектурное решение - как запустить процесс на экземпляре EC2 , когда файл был загружен.

Я бы порекомендовал эту архитектуру:

  • Создать Amazon SQS Queue
  • Настроить Amazon S3 Event для pu sh сообщение в очередь SQS , когда файл был загружен (это будет включать в себя имя сегмента и имя файла)
  • Запуск процесса на экземпляре Amazon EC2, который регулярно проверяет очередь SQS (например, каждую минуту или чаще / реже в зависимости от ваших требований)
  • Если сообщение найдено, приложение должно:
    • Загрузить файл из Amazon S3
    • Обработка файла
    • Удаление локального файла
    • Необязательно: Удалить файл из S3

Кроме того, вы можете обработать файл по возможности в AWS Lambda без использования экземпляра Amazon EC2. Однако вы не предоставили достаточно информации в своем вопросе, чтобы определить, возможно ли это.

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