Téléchargez ce que vous avez dans la demande vers S3 avec AWS Lambda Python

Au Mokumokukai des points. Women's Club, j'ai décidé de faire un robot avec AWS Lambda, alors j'ai soulevé mon poids. La taille est vraiment lourde.

Lambda est gratuit 1 million de fois par mois, donc je pense que vous pouvez l'exécuter 23 fois par minute.

Crawler / scraping made with Lambda semble être utile, donc au début je l'ai obtenu avec request à S3 en regardant ceci J'ai décidé de télécharger quelque chose pour le moment. Le langage est bien sûr Python!

python


import boto3
import requests

BUCKET = 'test_requests'
s3 = boto3.client('s3')

def lambda_handler(event, context):
    key = 'corp.camon.tokyo'
    target_url = 'http://corp.camon.tokyo'
    target_html = requests.get(target_url).text
    s3.put_object(Bucket=BUCKET, Key=key, Body=target_html)

Comme prévu, AWS Lambda est une victoire facile! Lorsque j'appuie sur le bouton Test en pensant ...

python


"errorMessage": "Unable to import module 'lambda_function'"

Erreur \ (^ o ^) / car les demandes ne peuvent pas être lues Quand je me demandais comment installer pip sur AWS Lambda, je suis tombé sur cet article.

Déployer AWS Lambda Python avec lambda-uploader

python


pip install lambda-uploader

J'ai créé un répertoire, copié la source que j'ai écrite plus tôt et préparé lambda.json et requirements.txt.

test_requests.py


import boto3
import requests

BUCKET = 'test_requests'
s3 = boto3.client('s3')

def lambda_handler(event, context):
    key = 'corp.camon.tokyo'
    target_url = 'http://corp.camon.tokyo'
    target_html = requests.get(target_url).text
    s3.put_object(Bucket=BUCKET, Key=key, Body=target_html)

lambda.json


  {
    "name": "test_requests",
    "description": "test requests",
    "region": "ap-northeast-1",
    "handler": "test_requests.lambda_handler",
    "role": "arn:aws:iam::????????????:role/lambda_s3_exec_role",
    "timeout": 300,
    "memory": 128
  }

requirements.txt


requests

La composition est comme ça.

python


$ tree
.
├── lambda.json
├── requirements.txt
└── test_requests.py

0 directories, 3 files

Maintenant qu'il est prêt, exécutez la commande.

python


lambda-uploader

python


λ Building Package
λ Uploading Package
⁉️ Unexpected error. Please report this traceback.
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/lambda_uploader/shell.py", line 151, in main
    _execute(args)
  File "/usr/local/lib/python2.7/site-packages/lambda_uploader/shell.py", line 82, in _execute
    upldr.upload(pkg)
  File "/usr/local/lib/python2.7/site-packages/lambda_uploader/uploader.py", line 112, in upload
    self.version = self.upload_new(pkg)
  File "/usr/local/lib/python2.7/site-packages/lambda_uploader/uploader.py", line 89, in upload_new
    Publish=self._config.publish,
  File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 301, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 398, in _make_api_call
    raise ClientError(parsed_response, operation_name)
ClientError: An error occurred (AccessDeniedException) when calling the CreateFunction operation: User: arn:aws:iam::????????????:user/WakanaYoshizawa is not authorized to perform: lambda:CreateFunction

Si vous n'avez pas d'autorité

スクリーンショット 2016-04-17 22.59.59.png

Ajoutez AWSLambdaFullAccess et réexécutez

Erreur··

Ici, les points: Mokumokukai du club des femmes a reçu de la bière à la fin du match, alors j'étais malade et j'ai bu. J'ai ouvert environ la moitié de la bière et je me suis saoulé, alors je l'ai essayée avec une baguette magique ...

$ lambda-uploader
λ Building Package
λ Uploading Package
λ Fin

Il a semblé qu'il fallait du temps pour refléter l'attachement politique. Il est important de se développer avec une marge.

Je pense que je peux faire différentes choses avec Lambda, donc je vais jouer avec plus. \ (^ O ^) /

Recommended Posts

Téléchargez ce que vous avez dans la demande vers S3 avec AWS Lambda Python
Connectez-vous à s3 avec AWS Lambda Python
[AWS] Que faire lorsque vous souhaitez piper avec Lambda
Télécharger des fichiers sur Google Drive avec Lambda (Python)
[AWS lambda] Déployer, y compris diverses bibliothèques avec lambda (générer un zip avec un mot de passe et le télécharger vers s3) @ Python
Je veux AWS Lambda avec Python sur Mac!
[Python] Scraping dans AWS Lambda
Que faire si vous exécutez python sur IntelliJ et quittez avec une erreur
[AWS] Essayez d'ajouter la bibliothèque Python à la couche avec SAM + Lambda (Python)
Ravi de vous rencontrer avec python
Notifier HipChat avec AWS Lambda (Python)
Python | Ce que vous pouvez faire avec Python
Notez ce que vous avez fait pour utiliser Flycheck avec Python
Que faire si vous ne pouvez pas installer pyaudio avec pip #Python
Que faire si vous obtenez moins zéro en Python
Envoyer les images prises avec ESP32-WROOM-32 vers AWS (API Gateway → Lambda → S3)
Ce à quoi j'étais accro avec json.dumps dans l'encodage base64 de Python
[Couches Python / AWS Lambda] Je souhaite réutiliser uniquement le module dans AWS Lambda Layers
[Pour Python] Créez rapidement un fichier de téléchargement vers AWS Lambda Layer
Traitez le fichier gzip UNLOADed avec Redshift avec Python de Lambda, gzipez-le à nouveau et téléchargez-le sur S3
Si vous rencontrez des problèmes avec les délais d'expiration lors de la mise en œuvre de SlashCommand de Slack dans Python d'AWS Lambda
[AWS] Utilisation de fichiers ini avec Lambda [Python]
Essayez de vous connecter à qiita avec Python
PUT gzip directement dans S3 en Python
Comment utiliser BigQuery en Python
[AWS] Associez Lambda et S3 à boto3
Pour faire fonctionner la station d'horodatage en Python
[AWS] Faites des choses de type SSI avec S3 / Lambda
Télécharger des images sur Google Drive avec Python
ImportError lors de la tentative d'utilisation du package gcloud avec la version AWS Lambda Python
Que faire si vous ne parvenez pas à envoyer un e-mail à Yahoo avec Python.
Surveillance simple du serveur avec AWS Lambda (Python) et notification des résultats avec Slack
Que faire si vous vous perdez dans la référence de fichier avec FileNotFoundError
Que faire si vous ne pouvez pas installer avec pip dans l'environnement babun
Déplacez la tortue à l'endroit où vous cliquez sur la souris avec la tortue en Python
Que faire lorsque vous vous fâchez avec "Value Error: unknown local: UTF-8" dans python manage.py syncdb
Comment télécharger avec Heroku, Flask, Python, Git (4)
Télécharger les artefacts récupérés dans Scrapy Cloud vers S3
Comment savoir quel type de fichier est stocké dans S3 en Python
Python: j'ai pu récurer en lambda
Vous devenez ingénieur en 100 jours - Jour 35 - Python - Ce que vous pouvez faire avec Python
LINE BOT avec Python + AWS Lambda + API Gateway
Application sans serveur avec AWS SAM! (APIGATEWAY + Lambda (Python))
Connectez-vous facilement à AWS avec plusieurs comptes
Exemple de notification Slack avec python lambda
Que comparez-vous avec Python et ==?
Comment utiliser tkinter avec python dans pyenv
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
Que faire si vous obtenez «Python non configuré». Utilisation de PyDev dans Eclipse
[AWS / Lambda] Comment charger une bibliothèque externe Python
[Python] Choses à vérifier lorsqu'une erreur de décodage Unicode apparaît dans Django
Premiers pas avec AWS IoT facilement en Python
Débutants en Python accro à Django
Résumé de l'étude de Python pour utiliser AWS Lambda
Télécharger des images sur S3 avec une interface graphique à l'aide de tkinter
Créez des paramètres dans terraform pour envoyer des messages depuis AWS Lambda Python3.8 vers Slack
Que faire pour obtenir une feuille de calcul Google en Python
Qu'utilisez-vous lorsque vous testez avec Python?