[2021.06.29] 인턴 +120 How to connect AWS S3 using Python ?(+boto3)
Boto3 란?
-> Python 언어 용 AWS 서비스와 쉽게 통합 할 수 있도록 AWS는 boto3 라는 SDK를 제공
-> Python 애플리케이션을 S3 , DynamoDB , SQS 및 더 많은 서비스와 통합 할 수 있음 (데이터 저장, 검색 및 삭제가능)
how to install Boto3 ?
pip install boto3
Sample code for using boto3 module
import boto3
lambda_client = boto3.client('lambda',
region_name='ap-northeast-2',
aws_access_key_id='자격증명 생성시 나오는 access_key',
aws_secret_access_key='자격증명 생성시 나오는 secret_key'
)
response = lambda_client.invoke(
FunctionName='1900crawtest',
InvocationType='RequestResponse',
Payload=json.dumps({"ispass": "0", "temperature": "36.5"})
)
* boto3 모듈을 사용할 때, ec2를 사용하고 싶으면 lambda 자리에 ec2 , s3 사용하고 싶으면 s3로 대체
* region_name = 'ap-northeast-2' # AWS에서 제공해주는 지역이름을 뜻함. 즉 ap-northeast-2은 서울임
* lambda_client.invoke 안에 선언 된 변수와 값에 대해 알아 보자
- FunctionName ="AWS_LAMBDA_FUNCTION_NAME"
- InvocationType='RequestResponse', # 호출 타입을 말하는 것
* RequestResponse(API용), Event(비동기 호출용), DryRun(인증용)
- Payload=json.dumps # Payload는 데이터 출력 형식을 말함.
----------------------------------------------------------------------------------------------------------------------------------
InvocationType: RequestResponse
InvocationType: Event
InvocationType: DryRun
-------------------------------------------------------------------------------------------------------------------------------
★★★★★ AWS Lambda 에서 boto3 모듈 사용하는 방법 ★★★★★
import json
import random
import time
import boto3
def lambda_handler(event, context):
video_url_lists = [
'https://www.youtube.com/watch?v=veHqJSC-9Lo',
'https://www.youtube.com/watch?v=VMYUXR1W4Qg',
'https://www.youtube.com/watch?v=EbywYGogH6A']
for video_url in video_url_lists:
event_data = dict(video_url=video_url)
print(event_data)
lambda_client = boto3.client('lambda',
region_name='ap-northeast-2',
aws_access_key_id='',
aws_secret_access_key=''
)
result = lambda_client.invoke(
FunctionName="1900crawtest",
InvocationType='Event',
Payload=json.dumps(event_data),
)
code = result['StatusCode']
wait_sec = random.randint(1,3)
time.sleep(wait_sec)
return { "wait_second" : wait_sec,
"http_code_status": code
}
-> Layer에, selenium, webdriver 모듈을 추가해줘야 함
+@ AWS Lambda 의 메모리도 설정해줘야 한다.(해당 에러가 떴을 때 - 해결방법)
{
"errorMessage": "2021-06-29T08:45:11.933Z a6b987d2-7806-4d6d-b27c-eb048476217f Task timed out after 3.00 seconds"
}
-> 편집 눌러서, 메모리 1000, 제한 시간 5분으로 설정해주면 됨
-------------------------------------------------------------------------------------------------------------------------------
+@ boto3 로 S3 조회 하기
import boto3
s3 = boto3.client('s3',
region_name='ap-northeast-2',
aws_access_key_id='키 입력',
aws_secret_access_key='키 입력'
)
response = s3.list_buckets()
response
결과
-------------------------------------------------------------------------------------------------------------------------------
HTTP 상태코드 정리
200
-> 정상적으로 에러없이 전송 성공
201 (Created)
-> 요청에 따라 새 자원이 작성
e.g : POST & PUT 작업이 성공했을 때 반환하는 것
202 (Accepted)
-> 서버가 클라이언트의 명령을 받음.
204
-> 서버가 요청을 성공적으로 수행했으며 응답 페이로드 본문에 보낼 추가 콘텐츠가 없다는 뜻
댓글