Connexion des autorisations d’accès Amazon S3 avec les blocs-notes Studio JupyterLab - Amazon SageMaker AI

Connexion des autorisations d’accès Amazon S3 avec les blocs-notes Studio JupyterLab

Utilisez les informations suivantes pour accorder des autorisations d’accès Amazon S3 dans les blocs-notes Studio JupyterLab.

Une fois que les autorisations d’accès Amazon S3 sont configurées, ajoutez les autorisations suivantes à votre rôle d’exécution de domaine ou utilisateur.

  • us-east-1 est votre Région AWS.

  • 111122223333 est votre ID de Compte AWS.

  • S3-ACCESS-GRANT-ROLE est votre rôle d’autorisations d’accès Amazon S3.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDataAccessAPI", "Effect": "Allow", "Action": [ "s3:GetDataAccess" ], "Resource": [ "arn:aws:s3:us-east-1:111122223333:access-grants/default" ] }, { "Sid": "RequiredForTIP", "Effect": "Allow", "Action": "sts:SetContext", "Resource": "arn:aws:iam::111122223333:role/S3-ACCESS-GRANT-ROLE" } ] }

Assurez-vous que la politique d’approbation de votre rôle d’autorisations d’accès Amazon S3 autorise les actions sts:SetContext et sts:AssumeRole. Voici un exemple de politique à appliquer lorsque vous mettez à jour votre politique d’approbation de rôle.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "access-grants.s3.amazonaws.com" ] }, "Action": [ "sts:AssumeRole", "sts:SetContext" ], "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:s3:us-east-1:111122223333:access-grants/default" } } } ] }

Utilisation des autorisations d’accès Amazon S3 pour appeler Amazon S3

Voici un exemple de script Python qui montre comment utiliser les autorisations d’accès Amazon S3 pour appeler Amazon S3. Cela suppose que vous avez déjà configuré avec succès la propagation d’identité de confiance avec SageMaker AI.

import boto3 from botocore.config import Config def get_access_grant_credentials(account_id: str, target: str, permission: str = 'READ'): s3control = boto3.client('s3control') response = s3control.get_data_access( AccountId=account_id, Target=target, Permission=permission ) return response['Credentials'] def create_s3_client_from_credentials(credentials) -> boto3.client: return boto3.client( 's3', aws_access_key_id=credentials['AccessKeyId'], aws_secret_access_key=credentials['SecretAccessKey'], aws_session_token=credentials['SessionToken'] ) # Create client credentials = get_access_grant_credentials('111122223333', "s3://tip-enabled-bucket/tip-enabled-path/") s3 = create_s3_client_from_credentials(credentials) s3.list_objects(Bucket="tip-enabled-bucket", Prefix="tip-enabled-path/")

Si vous utilisez un chemin d’accès vers un compartiment Amazon S3 où l’autorisation d’accès Amazon S3 n’est pas activée, l’appel échouera.

Pour d’autres langages de programmation, consultez Gestion de l’accès avec les autorisations d’accès Amazon S3 pour plus d’informations.