Voici le code Python qui obtient des informations d'identification temporaires via Cognito et utilise ces informations pour accéder à S3. Quant à Python, seule une implémentation incomplète a été abandonnée, je vais donc la publier.
Du côté de Cognito, accordez à l'avance l'autorité minimale requise à la ressource S3 dans le rôle non authentifié.
Ci-dessous le code.
cognito-s3.py
client = boto3.client('cognito-identity', 'ap-northeast-1')
#Obtenez l'ID d'authentification de Cognito lors du premier accès
resp = client.get_id(IdentityPoolId='ap-northeast-1:<YOUR COGNITO IDENTITY POOL ID>')
print "\nIdentity ID: %s"%(resp['IdentityId'])
print "\nRequest ID: %s"%(resp['ResponseMetadata']['RequestId'])
#Obtenez des informations d'identification pour établir une session lors du deuxième accès
resp = client.get_credentials_for_identity(IdentityId=resp['IdentityId'])
secretKey = resp['Credentials']['SecretKey']
accessKey = resp['Credentials']['AccessKeyId']
token = resp['Credentials']['SessionToken']
print "\nToken: %s"%(token)
print "\nSecretKey: %s"%(secretKey)
print "\nAccessKey ID: %s"%(accessKey)
print resp
#Accéder à l'objet S3 avec des informations d'identification
session = Session(aws_access_key_id=accessKey,
aws_secret_access_key=secretKey,
aws_session_token=token, #N'oubliez pas le jeton!
region_name='ap-northeast-1')
s3 = session.resource('s3')
obj = s3.Object(bucket_name='<BUCKET NAME>', key='<KEY NAME>')
#Voici un exemple de lecture et de renvoi simples de la longueur
response = obj.get()
data = response['Body'].read()
print len(data)
Recommended Posts