람다를 사용하여 S3에서 데이터 읽기
AWS의 S3 버킷에 json 파일 범위가 저장되어 있습니다.
AWS lambda python 서비스를 사용하여 이 json을 해석하고 해석 결과를 AWS RDS MySQL 데이터베이스로 보내고 싶습니다.
파싱과 데이터베이스 쓰기를 수행하기 위한 안정적인 python 스크립트를 가지고 있습니다.json 파일이 추가되었을 때 반복하기 위해 lambda 스크립트가 필요합니다.
각 json 파일에는 다음과 같은 단순한 목록이 포함되어 있습니다.results = [content]
의사 코드에서 원하는 것은 다음과 같습니다.
- S3 버킷에 접속합니다(
jsondata
) - JSON 파일의 내용을 읽습니다(
results
) - 이 데이터에 대해 스크립트를 실행합니다(
results
)
보유하고 있는 버킷을 다음 기준으로 나열할 수 있습니다.
import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
제공:
jsondata
그러나 결과를 읽기 위해 이 버킷에 액세스할 수 없습니다.
는 없는 것 같습니다.read
또는load
기능.
나는 이런 것을 원한다.
for bucket in s3.buckets.all():
print(bucket.contents)
편집
제가 뭔가 오해를 하고 있어요.람다는 S3에서 파일을 읽는 대신 파일을 직접 다운로드해야 합니다.
여기서부터 lamda가 파일 자체에 액세스할 수 있는 다운로드 경로를 제공해야 할 것 같습니다.
import libraries
s3_client = boto3.client('s3')
def function to be executed:
blah blah
def handler(event, context):
for record in event['Records']:
bucket = record['s3']['bucket']['name']
key = record['s3']['object']['key']
download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
s3_client.download_file(bucket, key, download_path)
s3 = boto3.client('s3')
response = s3.get_object(Bucket=bucket, Key=key)
emailcontent = response['Body'].read().decode('utf-8')
를 사용하여 버킷 내의 모든 객체의 목록을 가져올 수 있습니다(또한 다음과 같은 대체 방법도 있습니다).filter
,page_size
그리고.limit
니즈에 따라 다름)
이러한 메서드는 오브젝트가 포함된 반복기를 반환하므로 이 메서드에서 메서드를 사용할 수 있습니다.object.get
파일을 가져옵니다.
언급URL : https://stackoverflow.com/questions/33782984/reading-data-from-s3-using-lambda
'programing' 카테고리의 다른 글
Oracle - 자동 증분 ID를 사용하여 새 행 삽입 (0) | 2023.03.02 |
---|---|
jQuery를 사용하여 JSON 트리를 검색하는 방법 (0) | 2023.03.02 |
실행 중인 mongodb에 덤프를 복원하는 방법 (0) | 2023.02.25 |
TypeError: 정의되지 않은 속성을 읽을 수 없습니다('id' 읽기). (0) | 2023.02.25 |
Redx에서 상태를 업데이트한 후 콜백을 트리거하려면 어떻게 해야 합니까? (0) | 2023.02.25 |