Amazon S3의 데이터 통합
AWS(Amazon Web Services) Simple Storage Service(S3) 버킷에 저장된 데이터 사용
초록
머리말 링크 복사링크가 클립보드에 복사되었습니다!
sendpyter 노트북에서 작업할 때 AWS(Amazon Web Services) Simple Storage Service(S3) 버킷에 저장된 데이터로 작업해야 할 수 있습니다. 이 섹션에서는 Amazon S3에 저장된 데이터를 사용하기 위한 명령 및 절차를 설명합니다.
1장. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- Red Hat OpenShift AI에서 실행되는 Hawkularpyter 서버.
- Amazon Web Services S3 버킷에 액세스합니다.
-
Amazon S3 계정의
AWS Access Key ID및AWS Secret Access Key를 찾습니다. - sendpyter Notebook.
2장. 노트북 셀을 사용하여 Amazon S3 클라이언트 생성 링크 복사링크가 클립보드에 복사되었습니다!
Amazon S3 버킷의 데이터와 상호 작용하려면 해당 서비스에 대한 요청을 처리할 로컬 클라이언트를 생성해야 합니다.
사전 요구 사항
- Red Hat OpenShift AI에서 실행되는 sendpyter 노트북 서버에 액세스할 수 있습니다.
-
내 보안 자격 증명 아래의 Amazon Web Services 계정 값을 사용하여 노트북 서버를 시작할 때
AWS_ACCESS_KEY_ID및AWS_SECRET_ACCESS_KEY환경 변수의 값을 정의합니다.
프로세스
새 노트북 셀에서 다음을 추가하여 필요한 라이브러리를 가져옵니다.
import os import boto3 from boto3 import session
import os import boto3 from boto3 import sessionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다른 새 노트북 셀에서 세션 및 클라이언트를 생성하려면 다음을 정의합니다.
인증 정보를 정의합니다.
key_id = os.environ.get('AWS_ACCESS_KEY_ID') secret_key = os.environ.get('AWS_SECRET_ACCESS_KEY')key_id = os.environ.get('AWS_ACCESS_KEY_ID') secret_key = os.environ.get('AWS_SECRET_ACCESS_KEY')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클라이언트 세션을 정의합니다.
session = boto3.session.Session(aws_access_key_id=key_id, aws_secret_access_key=secret_key)
session = boto3.session.Session(aws_access_key_id=key_id, aws_secret_access_key=secret_key)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클라이언트 연결을 정의합니다.
s3_client = boto3.client('s3', aws_access_key_id=key_id, aws_secret_access_key=secret_key)s3_client = boto3.client('s3', aws_access_key_id=key_id, aws_secret_access_key=secret_key)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
새 셀을 생성하고 다음과 같은 Amazon S3 명령을 실행합니다.
s3_client.list_buckets()
s3_client.list_buckets()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 성공적인 응답에는
200의HTTPStatusCode와 다음과 유사한Bucket목록이 포함됩니다.'Buckets': [{'Name': 'my-app-asdf3-image-registry-us-east-1-wbmlcvbasdfasdgvtsmkpt', 'CreationDate': datetime.datetime(2021, 4, 21, 6, 8, 52, tzinfo=tzlocal())}, {'Name': 'cf-templates-18rxasdfggawsvb-us-east-1', 'CreationDate': datetime.datetime(2021, 2, 15, 18, 35, 34, tzinfo=tzlocal())}'Buckets': [{'Name': 'my-app-asdf3-image-registry-us-east-1-wbmlcvbasdfasdgvtsmkpt', 'CreationDate': datetime.datetime(2021, 4, 21, 6, 8, 52, tzinfo=tzlocal())}, {'Name': 'cf-templates-18rxasdfggawsvb-us-east-1', 'CreationDate': datetime.datetime(2021, 2, 15, 18, 35, 34, tzinfo=tzlocal())}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3장. 노트북 셀을 사용하여 사용 가능한 Amazon S3 버킷 나열 링크 복사링크가 클립보드에 복사되었습니다!
계정에 사용할 수 있는 버킷을 나열하여 액세스할 수 있는 버킷을 확인할 수 있습니다.
사전 요구 사항
- 노트북의 이전 셀에서 Amazon S3 클라이언트를 구성합니다. 자세한 내용은 노트북 셀을 사용하여 Amazon S3 클라이언트 생성 을 참조하십시오.
프로세스
새 노트북 셀을 만들고
s3_client를 사용하여 사용 가능한 버킷을 나열합니다.s3_client.list_buckets()
s3_client.list_buckets()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 전체 응답이 아닌 이름만 인쇄하면 이 버킷 목록을 더 쉽게 읽을 수 있습니다. 예를 들면 다음과 같습니다.
for bucket in s3_client.list_buckets()['Buckets']: print(bucket['Name'])for bucket in s3_client.list_buckets()['Buckets']: print(bucket['Name'])Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면 다음과 유사한 출력이 반환됩니다.
my-app-asdf3-image-registry-us-east-1-wbmlcvbasdgasdgtkpt cf-templates-18rxuasgasgvb-us-east-1
my-app-asdf3-image-registry-us-east-1-wbmlcvbasdgasdgtkpt cf-templates-18rxuasgasgvb-us-east-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4장. 노트북 셀을 사용하여 사용 가능한 Amazon S3 버킷에 파일 나열 링크 복사링크가 클립보드에 복사되었습니다!
버킷의 오브젝트를 나열하여 액세스할 수 있는 버킷에서 사용 가능한 파일을 확인할 수 있습니다. 버킷은 일반적인 파일 시스템이 아닌 오브젝트 스토리지를 사용하므로 오브젝트 이름 지정은 일반 파일 이름과 다르게 작동합니다. 버킷의 오브젝트는 항상 버킷의 전체 경로와 파일 자체의 이름으로 구성된 키로 알려져 있습니다.
사전 요구 사항
- 노트북의 이전 셀에서 Amazon S3 클라이언트를 구성합니다. 자세한 내용은 노트북 셀을 사용하여 Amazon S3 클라이언트 생성 을 참조하십시오.
프로세스
새 노트북 셀을 생성하고 버킷에 오브젝트를 나열합니다. 예를 들면 다음과 같습니다.
bucket_name = 'std-user-bucket1' s3_client.list_objects_v2(Bucket=bucket_name)
bucket_name = 'std-user-bucket1' s3_client.list_objects_v2(Bucket=bucket_name)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면 다음 형식으로 여러 개체가 반환됩니다.
{'Key': 'docker/registry/v2/blobs/sha256/00/0080913dd3f10aadb34asfgsgsdgasdga072049c93606b98bec84adb259b424f/data', 'LastModified': datetime.datetime(2021, 4, 22, 1, 26, 1, tzinfo=tzlocal()), 'ETag': '"6e02fad2deassadfsf900a4bd7344ffe"', 'Size': 4052, 'StorageClass': 'STANDARD'}{'Key': 'docker/registry/v2/blobs/sha256/00/0080913dd3f10aadb34asfgsgsdgasdga072049c93606b98bec84adb259b424f/data', 'LastModified': datetime.datetime(2021, 4, 22, 1, 26, 1, tzinfo=tzlocal()), 'ETag': '"6e02fad2deassadfsf900a4bd7344ffe"', 'Size': 4052, 'StorageClass': 'STANDARD'}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 전체 응답 대신 키만 인쇄하여 이 목록을 더 쉽게 읽을 수 있도록 할 수 있습니다. 예를 들면 다음과 같습니다.
bucket_name = 'std-user-bucket1' for key in s3_client.list_objects_v2(Bucket=bucket_name)['Contents']: print(key['Key'])bucket_name = 'std-user-bucket1' for key in s3_client.list_objects_v2(Bucket=bucket_name)['Contents']: print(key['Key'])Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면 다음과 유사한 출력이 반환됩니다.
docker/registry/v2/blobs/sha256/00/0080913dd3f10aadb34asfgsgsdgasdga072049c93606b98bec84adb259b424f/data
docker/registry/v2/blobs/sha256/00/0080913dd3f10aadb34asfgsgsdgasdga072049c93606b98bec84adb259b424f/dataCopy to Clipboard Copied! Toggle word wrap Toggle overflow 특정 "path" 또는 파일 이름을 나열하도록 쿼리를 필터링할 수도 있습니다. 예를 들면 다음과 같습니다.
bucket_name = 'std-user-bucket1' for key in s3_client.list_objects_v2(Bucket=bucket_name,Prefix='<start_of_file_path>')['Contents']: print(key['Key'])bucket_name = 'std-user-bucket1' for key in s3_client.list_objects_v2(Bucket=bucket_name,Prefix='<start_of_file_path>')['Contents']: print(key['Key'])Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 예에서 <
start_of_file_path>를 사용자 값으로 바꿉니다.
5장. 노트북 셀을 사용하여 사용 가능한 Amazon S3 버킷에서 파일 다운로드 링크 복사링크가 클립보드에 복사되었습니다!
download_file 방법을 사용하여 노트북 서버로 파일을 다운로드할 수 있습니다.
사전 요구 사항
- 노트북의 이전 셀에서 Amazon S3 클라이언트를 구성합니다. 자세한 내용은 노트북 셀을 사용하여 Amazon S3 클라이언트 생성 을 참조하십시오.
프로세스
노트북 셀에서 다음 세부 정보를 정의합니다.
파일이 있는 버킷입니다. &
lt;name_of_the_bucket>을 고유한 값으로 바꿉니다.bucket_name = '<name_of_the_bucket>'
bucket_name = '<name_of_the_bucket>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다운로드할 파일의 이름입니다. &
lt;name_of_the_file_to_download>를 고유한 값으로 바꿉니다.file_name = '<name_of_the_file_to_download>' # Full path from the bucket
file_name = '<name_of_the_file_to_download>' # Full path from the bucketCopy to Clipboard Copied! Toggle word wrap Toggle overflow 파일을 다운로드한 후 원하는 이름입니다. 전체 경로, 상대 경로 또는 새 파일 이름일 수 있습니다. &
lt;name_of_the_file_when_downloaded>를 사용자 값으로 바꿉니다.new_file_name = '<name_of_the_file_when_downloaded>'
new_file_name = '<name_of_the_file_when_downloaded>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
이전 변수를 인수로 지정하여 파일을 다운로드합니다.
s3_client.download_file(bucket_name, file_name, new_file_name)
s3_client.download_file(bucket_name, file_name, new_file_name)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고read() 메서드를 사용하여 표준 파일로 스트리밍할 수 있는 오브젝트로 파일을 검색하려면 Amazon Web Services get 개체 명령 참조를 참조하십시오.
6장. 노트북 셀을 사용하여 사용 가능한 Amazon S3 버킷에 파일 업로드 링크 복사링크가 클립보드에 복사되었습니다!
upload_file 방법을 사용하여 노트북 서버의 파일을 Amazon S3 버킷에 업로드할 수 있습니다.
사전 요구 사항
- 노트북의 이전 셀에서 Amazon S3 클라이언트를 구성합니다. 자세한 내용은 노트북 셀을 사용하여 Amazon S3 클라이언트 생성 을 참조하십시오.
프로세스
노트북 셀에서 다음 세부 정보를 정의합니다.
업로드할 파일의 이름입니다. 여기에는 파일의 전체 로컬 경로가 포함되어야 합니다. &
lt;name_of_the_file_to_upload>를 사용자 값으로 바꿉니다.file_name = '<name_of_the_file_to_upload>'
file_name = '<name_of_the_file_to_upload>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 파일을 업로드할 버킷의 이름입니다. &
lt;name_of_the_bucket>을 고유한 값으로 바꿉니다.bucket_name = '<name_of_the_bucket>'
bucket_name = '<name_of_the_bucket>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 파일을 버킷에 저장하는 데 사용할 전체 키입니다. &
lt;full_path_and_file_name>을 고유한 값으로 바꿉니다.key = '<full_path_and_file_name>'
key = '<full_path_and_file_name>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
이전 변수를 인수로 지정하여 파일을 업로드합니다.
s3_client.upload_file(file_name, bucket_name, key)
s3_client.upload_file(file_name, bucket_name, key)Copy to Clipboard Copied! Toggle word wrap Toggle overflow