J'ai un script boto3 qui télécharge avec succès des fichiers dans un compartiment S3, en utilisant AccessKeyId et SecretAccessKey de mon compte. Cela fonctionne bien.Je suis supposé utiliser boto3 pour écrire dans un compartiment S3 avec uniquement un profil d'instance IAM, mais comment?
Mais je suis supposé supprimer mes informations d'identification de cette instance et utiliser uniquement le rôle IAM attaché à l'instance. J'ai fait diverses tentatives, mais ne l'ai pas obtenu cela fonctionne, habituellement avec:
botocore.exceptions.ClientError: An error occurred (InvalidToken) when
calling the PutObject operation: The provided token is malformed or
otherwise invalid.
Mon code:
!/usr/bin/env python
import datetime
import sys
import os
import ConfigParser
import boto3
s3 = boto3.resource('s3')
config = ConfigParser.ConfigParser()
configfile = config.read('edi.config')
s3bucket = config.get('default', 's3bucket')
s3bucket = s3bucket.strip()
print 's3bucket: ', s3bucket
today = datetime.date.today()
todaystr = today.strftime('%m_%d_%Y')
os.chdir(todaystr)
try:
os.mkdir('uploaded')
except:
pass
for f in os.listdir('.'):
if not os.path.isfile(f):
continue
print 'uploading', f
data = open(f)
s3.Bucket('ustc-submissions-non-prod').put_object(Key='closewatch/incoming/%s' % f, Body=data)
os.rename(f,'uploaded/%s' % f)
J'ai trouvé une note d'ailleurs que je dois assumer le rôle IAM au sein boto3 , mais (a) je n'ai pas la permission de le faire et (b) je n'ai pas la permission de me donner la permission et (c) mon collègue pense que cela ne devrait pas être nécessaire de toute façon.
Quelqu'un at-il un exemple complet de ce genre de chose?
Sans code, c'est un peu difficile à deviner mais dans tous les cas, vous ne devez rien passer. Voir [Références boto3] (http://boto3.readthedocs.io/en/latest/guide/configuration.html) pour plus d'informations. Votre cas d'utilisation est le point 8. – stdunbar
Vous devez modifier votre message pour inclure votre code (moins les informations d'identification) afin que nous puissions voir où vous tombez. Vous n'avez * certainement * pas besoin de clés d'accès si l'instance a le bon rôle IAM. –
Pouvez-vous 'aws s3 cp foo.txt s3: // seau /' sur la ligne de commande? ('pip install awscli' si la commande' aws' n'est pas trouvée) –