我有一個服務,需要通過以下方式進行認證:1.從ec2實體元資料中獲取憑證;2.或使用ts
。在java中,我使用的是DefaultAWSCredentialsProviderChain,效果不錯。在Python的boto3中是否有相應的內容?
目前,如果我通過ec2元資料進行連接,我使用的是:
provider = InstanceMetadataProvider(iam_role_fetcher=InstanceMetadataFetcher(timeout=1000, num_attempts=2)
creds = provider.load()
session = boto3.Session(
aws_access_key_id=creds.access_key。
aws_secret_access_key=creds.secret_key。
aws_session_token=creds.token
)
但是,如果我使用 sts,我將其改為:
sts = boto3.client('sts')
回應 = sts.assume_role(
RoleArn='aws:arn:iam::account_id:role/role-that-allows-s3-access'。
RoleSessionName='my-random-session-name'。
DurationSeconds=2000 # 這些憑證將作業多少秒。
)
session = boto3.Session(
aws_access_key_id=response['Credentials']['AccessKeyId']。
aws_secret_access_key=response[' Credentials']['SecretAccessKey']。
aws_session_token=response['Credentials']['SessionToken']。
)
uj5u.com熱心網友回復:
你不需要使用InstanceMetadataProvider并在你的client中明確地設定credetnails。boto3默認情況下像DefaultAWSCredentialsProviderChain一樣作業,正如Configuring credentials 中解釋的那樣。
因此,如果你,例如,想在實體上使用s3,你要做的是:
s3 = boto3.client('s3')
這將自動地從元資料中獲得證書。
uj5u.com熱心網友回復:
sts_client = boto3.client("sts")
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/319199.html
標籤:
