source

bto3 S3에 연결할 때 자격 증명을 지정하는 방법은 무엇입니까?

manycodes 2023. 6. 6. 00:09
반응형

bto3 S3에 연결할 때 자격 증명을 지정하는 방법은 무엇입니까?

Boto에서 다음과 같은 방법으로 S3에 연결할 때 자격 증명을 지정했습니다.

import boto
from boto.s3.connection import Key, S3Connection
S3 = S3Connection( settings.AWS_SERVER_PUBLIC_KEY, settings.AWS_SERVER_SECRET_KEY )

그런 다음 S3를 사용하여 작업을 수행할 수 있습니다(이 경우 버킷에서 개체 삭제).

bto3의 경우 제가 발견한 모든 예는 다음과 같습니다.

import boto3
S3 = boto3.resource( 's3' )
S3.Object( bucket_name, key_name ).delete()

자격 증명을 지정할 수 없으므로 모든 시도가 실패합니다.InvalidAccessKeyId오류

bto3로 자격 증명을 지정하려면 어떻게 해야 합니까?

세션을 만들 수 있습니다.

import boto3
session = boto3.Session(
    aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY,
    aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY,
)

그런 다음 해당 세션을 사용하여 S3 리소스를 가져옵니다.

s3 = session.resource('s3')

다음을 얻을 수 있습니다.client아래와 같이 바로 새로운 세션으로.

 s3_client = boto3.client('s3', 
                      aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, 
                      aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY, 
                      region_name=REGION_NAME
                      )

이것은 오래된 것이지만 제가 참고할 수 있도록 여기에 배치합니다. boto3.resource는 기본 세션을 구현하는 중입니다. boto3.resource 세션 세부 정보를 전달할 수 있습니다.

Help on function resource in module boto3:

resource(*args, **kwargs)
    Create a resource service client by name using the default session.

    See :py:meth:`boto3.session.Session.resource`.

https://github.com/boto/boto3/blob/86392b5ca26da57ce6a776365a52d3cab8487d60/boto3/session.py#L265

당신은 그것이 Boto3와 같은 주장을 한다는 것을 알 수 있습니다.세션

import boto3
S3 = boto3.resource('s3', region_name='us-west-2', aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY)
S3.Object( bucket_name, key_name ).delete()

저는 @Just에 대해 확장하고 싶습니다.한 남자의 대답.제가 선호하는 방법은AWS CLI구성 파일을 만듭니다.그 이유는, 구성 파일을 사용하면CLI또는SDK에서 자동으로 자격 증명을 찾습니다.~/.aws폴더를 누릅니다.그리고 좋은 점은AWS CLI파이썬으로 작성되었습니다.

아직 가지고 있지 않다면 pypi에서 cli를 받을 수 있습니다.터미널에서 CLI를 설정하는 단계는 다음과 같습니다.

$> pip install awscli  #can add user flag 
$> aws configure
AWS Access Key ID [****************ABCD]:[enter your key here]
AWS Secret Access Key [****************xyz]:[enter your secret key here]
Default region name [us-west-2]:[enter your region here]
Default output format [None]:

이 후에 액세스할 수 있습니다.boto키를 지정할 필요 없이 모든 api를 사용할 수 있습니다(다른 자격 증명을 사용하려는 경우 제외).

만약 당신이 그것에 의지한다면,.aws/credentials사용자의 ID와 키를 저장하기 위해 자동으로 선택됩니다.

예를 들어.

session = boto3.Session(profile_name='dev')
s3 = session.resource('s3')

다음과 같은 경우 개발 프로파일(사용자)이 선택합니다.credentials파일에는 다음이 포함됩니다.

[dev]
aws_access_key_id = AAABBBCCCDDDEEEFFFGG
aws_secret_access_key = FooFooFoo
region=op-southeast-2

boto3.resource()를 사용하면서 자격 증명을 저장하는 방법은 여러 가지가 있습니다.저는 AWS CLI 방식을 직접 사용하고 있습니다.완벽하게 작동합니다.

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html?fbclid=IwAR2LlrS4O2gYH6xAF4QDVIH2Q2tzfF_VZ6loM3XfXsPAOR4qA-pX_qAILys

비밀 키와 액세스 키에 대한 기본 aws env 변수를 설정할 수 있습니다. 그러면 기본 클라이언트 생성 코드를 변경할 필요가 없습니다. 기본 자격 증명이 아닌 경우 매개 변수로 전달하는 것이 좋습니다.

언급URL : https://stackoverflow.com/questions/45981950/how-to-specify-credentials-when-connecting-to-boto3-s3

반응형