Conexión de Concesiones de acceso a Amazon S3 con los cuadernos de JupyterLab de Studio - Amazon SageMaker AI

Conexión de Concesiones de acceso a Amazon S3 con los cuadernos de JupyterLab de Studio

Utilice la siguiente información para las Concesiones de acceso a Amazon S3 en los cuadernos de JupyterLab de Studio.

Después de configurar Concesiones de acceso a Amazon S3, añada los siguientes permisos a su dominio o rol de ejecución de usuario.

  • us-east-1 es su Región de AWS.

  • 111122223333 es su ID de Cuenta de AWS.

  • S3-ACCESS-GRANT-ROLE es su rol de Concesiones de acceso a 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" } ] }

Asegúrese de que la política de confianza de su rol de Concesiones de acceso a Amazon S3 permita las acciones sts:SetContext y sts:AssumeRole. Use la siguiente política de ejemplo cuando actualice la política de confianza de su rol.

{ "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" } } } ] }

Uso de Concesiones de acceso a Amazon S3 para llamar a Amazon S3

A continuación, se muestra un ejemplo de script de Python que muestra cómo se puede utilizar Concesiones de acceso a Amazon S3 para llamar a Amazon S3. Esto supone que ya ha configurado correctamente la propagación de identidades de confianza con 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 utiliza una ruta a un bucket de Amazon S3 donde la concesión de acceso a Amazon S3 no está habilitada, se producirá un error en la llamada.

Para otros lenguajes de programación, consulte Administración del acceso con Concesiones de acceso a Amazon S3 para obtener más información.