AWS Lambda Python에서 S3에 요청에서 얻은 것을 업로드
허리, 정말 무거워요.
Lambda라고 하면 월 100만회 무료이므로, 1분간에 23회도 실행할 수 있다고 생각합니다.
Lambda로 만드는 크롤러/스크래핑 하지만 참고가 될 것 같아서, 처음은 이것을 보면서 S3에
request
로 취득한 것을 우선 업로드 하려고 생각했습니다.언어는 물론 파이썬으로!
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)
과연 AWS Lambda 낙승이다! 라고 생각하면서 Test 버튼을 누르면 ··
"errorMessage": "Unable to import module 'lambda_function'"
requests
를 읽을 수 없어서 에러\(^o^)/AWS Lambda에서.
AWS Lambda Python을 lambda-uploader로 배포
※요 AWS CLI
pip install lambda-uploader
디렉토리를 만들고 방금 작성한 소스를 복사하여 lambda.json과 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
구성은 이런 느낌입니다.
$ tree
.
├── lambda.json
├── requirements.txt
└── test_requests.py
0 directories, 3 files
준비가 되었으므로 명령 실행.
lambda-uploader
λ 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
권한이 없으면
AWSLambdaFullAccess 추가 및 실행
오류 · ·
여기서 dots.여자부의 모쿠모쿠회가 막판에 임박해 맥주가 지급되었기 때문에 닦아 마셨습니다.
맥주 절반 정도 열고, 좋은 감기에 취해 왔기 때문에 야쿠쿠소로 실행하면,,,
$ lambda-uploader
λ Building Package
λ Uploading Package
λ Fin
정책의 첨부 반영에 시간이 걸린 것 같았습니다.
여유있게 개발하는 것이 중요하네요.
Lambda에서 여러가지 할 것 같기 때문에 더 여러가지 만나 보겠습니다\(^o^)/
Reference
이 문제에 관하여(AWS Lambda Python에서 S3에 요청에서 얻은 것을 업로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wakanayoshizawa/items/d4d00e0bdfc7758d4ad6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)