boto3 : échec de la notification d'événement de mise en place du compartiment S3 à l'aide du rôle IAM


Bharat

Je suis bloqué dans une situation où j'essaie d'utiliser le rôle IAM pour configurer la notification d'événements sur un compartiment S3 pour SQS.

Il fonctionne avec aws_access_key_id et aws_secret_key_id, mais pas avec l'ARN de rôle.

Travaux:

client = boto3.client(
    's3',
    aws_access_key_id='XXXXXXXXXXXX',
    aws_secret_access_key='XXXXXXXXXXXXXXX'
)

bucket_notifications_configuration = {
    'QueueConfigurations': [{
        'Events': ['s3:ObjectCreated:*'],
        'Id': 'Test',
        'QueueArn':'<SQS ARN>'
    }]
}

client.put_bucket_notification_configuration(
    Bucket=bucket_name,
    NotificationConfiguration=bucket_notifications_configuration)

Mais nous essayons d'obtenir les mêmes résultats en utilisant le rôle IAM au lieu des identifiants pour des raisons de sécurité, je n'ai rien trouvé qui fonctionne. J'ai essayé d'utiliser 'sts', toujours pas de chance. Obtention d'erreurs - "non autorisé à effectuer : sts:AssumeRole sur la ressource :"

Ne fonctionne pas :

client = boto3.client(
    's3',
    role_arn = <IAM Role ARN>
)

bucket_notifications_configuration = {
    'QueueConfigurations': [{
        'Events': ['s3:ObjectCreated:*'],
        'Id': 'Test',
        'QueueArn':<SQS ARN>
    }]
}

client.put_bucket_notification_configuration(
    Bucket=bucket_name,
    NotificationConfiguration=bucket_notifications_configuration)

J'ai également essayé de donner un accès s3 complet au rôle exécutant ce lambda sans fournir la clé d'accès/secret ou le rôle lors de l'initialisation du client. Mais il se plaint de l'accès refusé.

Puis-je avoir une aide s'il vous plait?

Bharat

Ça marche enfin !! il semble que vous ayez juste besoin de donner suffisamment d'autorisations au rôle qui est attribué au moment de l'exécution de Lambda (Merci @Michael-sqlbot). Ce qui pourrait ne pas fonctionner si vous l'exécutez à partir d'une machine locale car vous ne pouvez pas attribuer un rôle de cette façon.

Assurez-vous également que le compartiment S3 existe dans le même environnement AWS que votre lambda essaie de modifier. Sinon, vous obtiendrez une erreur Accès refusé. Et si votre S3 n'a pas l'autorisation d'envoyer des messages à la file d'attente SQS que vous essayez d'ajouter pour notification, une erreur s'affichera en disant - Impossible de valider la configuration de destination.

Articles connexes