SageMaker Rôles - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

SageMaker Rôles

Amazon SageMaker effectue des opérations en votre nom en utilisant d'autres AWS services. Vous devez accorder SageMaker des autorisations pour utiliser ces services et les ressources sur lesquelles ils agissent. Vous accordez SageMaker ces autorisations à l'aide d'un rôle d'exécution AWS Identity and Access Management (IAM). Pour plus d'informations sur les rôles IAM, consultez Rôles IAM.

Pour créer et utiliser un rôle d'exécution, vous pouvez utiliser les procédures suivantes.

Créer un rôle d'exécution

Utilisez la procédure suivante pour créer un rôle d'exécution avec la politique gérée IAM, AmazonSageMakerFullAccess, attachée. Si votre cas d'utilisation nécessite des autorisations plus détaillées, utilisez d'autres sections de cette page pour créer un rôle d'exécution qui répond aux besoins de votre entreprise. Vous pouvez créer un rôle d'exécution à l'aide de la SageMaker console ou duAWS CLI.

Important

La politique gérée IAM, AmazonSageMakerFullAccess, utilisée dans la procédure suivante, n'accorde que l'autorisation du rôle d'exécution pour effectuer certaines actions Amazon S3 sur des compartiments ou des objets avec SageMaker, Sagemaker, sagemaker, ou aws-glue dans le nom. Pour savoir comment ajouter une politique supplémentaire à un rôle d'exécution pour lui accorder l'accès à d'autres compartiments et objets Amazon S3, veuillez consulter Ajouter des autorisations Amazon S3 supplémentaires à un rôle SageMaker d'exécution.

Note

Vous pouvez créer un rôle d'exécution directement lorsque vous créez un SageMaker domaine ou une instance de bloc-notes.

Pour créer un nouveau rôle d'exécution depuis la SageMaker console

  1. Ouvrez la console IAM à l’adresse https://console.aws.amazon.com/iam/.

  2. Choisissez Roles (Rôles), puis Create role (Créer un rôle).

  3. Conservez le AWSservice comme type d'entité de confiance, puis utilisez la flèche vers le bas pour le rechercher SageMakerdans Cas d'utilisation pour d'autres AWS services.

  4. Choisissez SageMaker — Exécution, puis cliquez sur Suivant.

  5. La politique gérée IAM, AmazonSageMakerFullAccess, est automatiquement attachée au rôle. Pour afficher les autorisations incluses dans cette politique, choisissez le signe plus (+) à côté du nom de la politique. Choisissez Suivant.

  6. Entrez un nom de rôle et une description.

  7. (Facultatif) Ajoutez des autorisations et des balises supplémentaires au rôle.

  8. Sélectionnez Créer un rôle.

  9. Dans la section Rôles de la console IAM, recherchez le rôle que vous venez de créer. Si nécessaire, utilisez la zone de texte pour rechercher le rôle à l'aide du nom de rôle.

  10. Sur la page de résumé, prenez note de l'ARN.

Pour créer un nouveau rôle d'exécution depuis AWS CLI

Avant de créer un rôle d'exécution à l'aide d'AWS CLI, assurez-vous de le mettre à jour et de le configurer en suivant les instructions figurant dans Conditions préalables requises AWS CLI, puis poursuivez avec les instructions fournies dans Intégrer à partir de l'AWS CLI.

Une fois que vous avez créé un rôle d'exécution, vous pouvez l'associer à un SageMaker domaine, à un profil utilisateur ou à une instance de bloc-notes Jupyter.

Vous pouvez également transmettre l'ARN d'un rôle d'exécution à votre appel d'API. Par exemple, à l'aide du SDK Amazon SageMaker Python, vous pouvez transmettre l'ARN de votre rôle d'exécution à un estimateur. Dans l'exemple de code qui suit, nous créons un estimateur à l'aide du conteneur d'algorithme XGBoost et transmettons l'ARN du rôle d'exécution en tant que paramètre. Pour un exemple complet GitHub, voir Prédiction du taux de désabonnement des clients avec XGBoost.

import sagemaker, boto3 from sagemaker import image_uris sess = sagemaker.Session() region = sess.boto_region_name bucket = sess.default_bucket() prefix = "sagemaker/DEMO-xgboost-churn" container = sagemaker.image_uris.retrieve("xgboost", region, "1.7-1") xgb = sagemaker.estimator.Estimator( container, execution-role-ARN, instance_count=1, instance_type="ml.m4.xlarge", output_path="s3://{}/{}/output".format(bucket, prefix), sagemaker_session=sess, ) ...

Ajouter des autorisations Amazon S3 supplémentaires à un rôle SageMaker d'exécution

Lorsque vous utilisez une SageMaker fonctionnalité avec des ressources dans Amazon S3, telles que des données d'entrée, le rôle d'exécution que vous spécifiez dans votre demande (par exempleCreateTrainingJob) est utilisé pour accéder à ces ressources.

Si vous attachez la politique gérée IAM, AmazonSageMakerFullAccess, à un rôle d'exécution, ce rôle a l'autorisation d'effectuer certaines actions Amazon S3 sur des compartiments ou des objets avec SageMaker, Sagemaker, sagemaker, ou aws-glue dans le nom. Elle a également l'autorisation d'effectuer les opérations suivantes sur n'importe quelle ressource Amazon S3 :

"s3:CreateBucket", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets", "s3:GetBucketCors", "s3:PutBucketCors"

Pour accorder à un rôle d'exécution des autorisations pour accéder à un ou plusieurs compartiments spécifiques dans Amazon S3, vous pouvez attacher une politique similaire à la suivante au rôle. Cette politique accorde une autorisation de rôle IAM pour effectuer toutes les actions que AmazonSageMakerFullAccess autorise, mais restreint cet accès aux compartiments DOC-EXAMPLE-BUCKET1 et DOC-EXAMPLE-BUCKET2. Reportez-vous à la documentation de sécurité de la SageMaker fonctionnalité spécifique que vous utilisez pour en savoir plus sur les autorisations Amazon S3 requises pour cette fonctionnalité.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets", "s3:GetBucketCors", "s3:PutBucketCors" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetBucketAcl", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1", "arn:aws:s3:::DOC-EXAMPLE-BUCKET2" ] } ] }

Obtention du rôle d'exécution

Vous pouvez utiliser la SageMaker console ou le AWS CLI pour récupérer l'ARN du rôle d'exécution attaché à un SageMaker domaine, à un profil utilisateur ou à une instance de bloc-notes.

Les utilisateurs du SDK Amazon SageMaker Python peuvent également récupérer l'ARN du rôle d'exécution associé à leur profil utilisateur ou à une instance de bloc-notes en exécutant le code suivant :

import sagemaker sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role()
Note

Le rôle d'exécution n'est disponible que lors de l'exécution d'un bloc-notes à l'intérieur SageMaker. Si vous exécutez get_execution_role dans un bloc-notes qui n'est pas allumé SageMaker, attendez-vous à une erreur « régionale ».

Transmission de rôles

Des actions telles que le transfert d'un rôle entre les services sont une fonction courante au sein de celui-ci SageMaker. Vous trouverez plus de détails sur les actions, les ressources et les clés de condition SageMaker dans le guide de l'utilisateur IAM.

Vous transmettez le rôle (iam:PassRole) lorsque vous effectuez les appels d'API : CreateAutoMLJob, CreateCompilationJob, CreateDomain, CreateFeatureGroup, CreateFlowDefiniton, CreateHyperParameterTuningJob, CreateImage, CreateLabelingJob, CreateModel, CreateMonitoringSchedule, CreateNotebookInstance, CreateProcessingJob, CreateTrainingJob, CreateUserProfile, RenderUiTemplate et UpdateImage.

Vous attachez la politique de confiance suivante au rôle IAM, qui accorde les autorisations SageMaker principales pour assumer le rôle, et qui est la même pour tous les rôles d'exécution :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Les autorisations que vous devez accorder au rôle varient en fonction de l'API que vous appelez. Les sections suivantes présentent ces autorisations.

Note

Au lieu de gérer les autorisations en créant une politique d'autorisation, vous pouvez utiliser la politique d'autorisation AmazonSageMakerFullAccess gérée par AWS. Les autorisations de cette stratégie, que vous utilisez pour effectuer des actions dans SageMaker, sont relativement vastes. Pour obtenir la liste des autorisations de la politique, y compris des informations sur les raisons de l'ajout d'un grand nombre de ces autorisations, consultez AWSpolitique gérée : AmazonSageMakerFullAccess. Si vous préférez créer des politiques personnalisées et gérer les autorisations de sorte à les limiter aux actions que vous devez effectuer avec le rôle d'exécution uniquement, consultez les rubriques suivantes.

Important

Pour plus d’informations sur les rôles IAM, consultez Rôles IAM dans le Guide de l’utilisateur IAM.

CreateAutoAPI MLJob : autorisations relatives aux rôles d'exécution

Pour un rôle d'exécution que vous pouvez transmettre dans une demande d'API CreateAutoMLJob, vous pouvez attacher la politique d'autorisation minimum suivante au rôle :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "sagemaker:DescribeEndpointConfig", "sagemaker:DescribeModel", "sagemaker:InvokeEndpoint", "sagemaker:ListTags", "sagemaker:DescribeEndpoint", "sagemaker:CreateModel", "sagemaker:CreateEndpointConfig", "sagemaker:CreateEndpoint", "sagemaker:DeleteModel", "sagemaker:DeleteEndpointConfig", "sagemaker:DeleteEndpoint", "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "s3:GetObject", "s3:PutObject", "s3:ListBucket", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

Si vous spécifiez un VPC privé pour votre tâche AutoML, ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ] }

Si les entrées sont chiffrées à l'aide du chiffrement côté serveur avec une clé gérée par AWS KMS (SSE-KMS), ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "kms:Decrypt" ] }

Si vous spécifiez une clé KMS dans la configuration de sortie de la tâche AutoML, ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "kms:Encrypt" ] }

Si vous spécifiez une clé KMS de volume dans la configuration des ressources de la tâche AutoML, ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "kms:CreateGrant" ] }

CreateDomain API : autorisations relatives aux rôles d'exécution

Le rôle d'exécution pour les domaines avec IAM Identity Center et le rôle d'utilisateur/exécution pour les domaines IAM ont besoin des autorisations suivantes lorsque vous transmettez une clé gérée par le client AWS KMS comme KmsKeyId dans la demande d'API CreateDomain. Les autorisations sont appliquées au cours de l'appel d'API CreateApp.

Pour un rôle d'exécution que vous pouvez transmettre dans la demande d'API CreateDomain, vous pouvez attacher la politique d'autorisation suivante au rôle :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "arn:aws:kms:region:account-id:key/kms-key-id" } ] }

De même, si les autorisations sont spécifiées dans une politique KMS, vous pouvez attacher la politique suivante au rôle :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::account-id:role/ExecutionRole" ] }, "Action": [ "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*" } ] }

CreateImage et UpdateImage API : autorisations relatives aux rôles d'exécution

Pour un rôle d'exécution que vous pouvez transmettre dans une demande d'API CreateImage ou UpdateImage, vous pouvez attacher la politique d'autorisation suivante au rôle :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } } ] }

CreateNotebookInstance API : autorisations relatives aux rôles d'exécution

Les autorisations que vous accordez au rôle d'exécution pour appeler l'API CreateNotebookInstance dépendent de la façon dont vous prévoyez d'utiliser l'instance de bloc-notes. Si vous prévoyez de l'utiliser pour appeler SageMaker des API et transmettre le même rôle lorsque vous appelez les CreateModel API CreateTrainingJob et, associez la politique d'autorisation suivante au rôle :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:*", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability", "ecr:SetRepositoryPolicy", "ecr:CompleteLayerUpload", "ecr:BatchDeleteImage", "ecr:UploadLayerPart", "ecr:DeleteRepositoryPolicy", "ecr:InitiateLayerUpload", "ecr:DeleteRepository", "ecr:PutImage", "ecr:CreateRepository", "cloudwatch:PutMetricData", "cloudwatch:GetMetricData", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:GetLogEvents", "s3:CreateBucket", "s3:ListBucket", "s3:GetBucketLocation", "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "robomaker:CreateSimulationApplication", "robomaker:DescribeSimulationApplication", "robomaker:DeleteSimulationApplication", "robomaker:CreateSimulationJob", "robomaker:DescribeSimulationJob", "robomaker:CancelSimulationJob", "ec2:CreateVpcEndpoint", "ec2:DescribeRouteTables", "elasticfilesystem:DescribeMountTargets" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource": [ "arn:aws:codecommit:*:*:*sagemaker*", "arn:aws:codecommit:*:*:*SageMaker*", "arn:aws:codecommit:*:*:*Sagemaker*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } } ] }

Pour restreindre les autorisations, limitez-les aux ressources Amazon S3 et Amazon ECR spécifiques, en limitant "Resource": "*" comme suit :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:*", "ecr:GetAuthorizationToken", "cloudwatch:PutMetricData", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:GetLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::inputbucket" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::inputbucket/object1", "arn:aws:s3:::outputbucket/path", "arn:aws:s3:::inputbucket/object2", "arn:aws:s3:::inputbucket/object3" ] }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": [ "arn:aws:ecr:region::repository/my-repo1", "arn:aws:ecr:region::repository/my-repo2", "arn:aws:ecr:region::repository/my-repo3" ] } ] }

Si vous avez besoin d'accéder à d'autres sources, telles que des ressources Amazon DynamoDB ou Amazon Relational Database Service, ajoutez les autorisations adéquates à cette politique.

Dans la politique précédente, vous adaptez la stratégie comme suit :

  • Adaptez l'autorisation s3:ListBucket au compartiment spécifique que vous spécifiez sous la forme InputDataConfig.DataSource.S3DataSource.S3Uri dans une demande CreateTrainingJob.

  • Adaptez les autorisations s3:GetObject , s3:PutObject, et s3:DeleteObject comme suit :

    • Adaptez vos autorisations aux valeurs suivantes que vous spécifiez dans une demande CreateTrainingJob :

      InputDataConfig.DataSource.S3DataSource.S3Uri

      OutputDataConfig.S3OutputPath

    • Adaptez vos autorisations aux valeurs suivantes que vous spécifiez dans une demande CreateModel :

      PrimaryContainer.ModelDataUrl

      SuplementalContainers.ModelDataUrl

  • Adaptez les autorisations ecr comme suit :

    • Adaptez vos autorisations à la valeur AlgorithmSpecification.TrainingImage que vous spécifiez dans une demande CreateTrainingJob.

    • Adaptez vos autorisations à la valeur PrimaryContainer.Image que vous spécifiez dans une demande CreateModel :

Les actions cloudwatch et logs sont applicables aux ressources « * ». Pour plus d'informations, consultez la section CloudWatch Ressources et opérations dans le guide de CloudWatch l'utilisateur Amazon.

CreateHyperParameterTuningJob API : autorisations relatives aux rôles d'exécution

Pour un rôle d'exécution que vous pouvez transmettre dans une demande d'API CreateHyperParameterTuningJob, vous pouvez attacher la politique d'autorisation suivante au rôle :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "s3:GetObject", "s3:PutObject", "s3:ListBucket", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

Au lieu de les spécifier"Resource": "*", vous pouvez étendre ces autorisations à des ressources Amazon S3, Amazon ECR et Amazon CloudWatch Logs spécifiques :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::inputbucket" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::inputbucket/object", "arn:aws:s3:::outputbucket/path" ] }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:region::repository/my-repo" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/sagemaker/TrainingJobs*" } ] }

Si le conteneur d'entraînement associé à la tâche de réglage d'hyperparamètre doit accéder à d'autres sources de données telles que les ressources DynamoDB ou Amazon RDS, ajoutez les autorisations pertinentes à cette politique.

Dans la politique précédente, vous adaptez la politique comme suit :

  • Adaptez l'autorisation s3:ListBucket à un compartiment spécifique que vous spécifiez sous la forme InputDataConfig.DataSource.S3DataSource.S3Uri dans une demande CreateTrainingJob.

  • Adaptez les autorisations s3:GetObject et s3:PutObject aux objets suivants que vous spécifiez dans la configuration des données d'entrée et de sortie dans une demande CreateHyperParameterTuningJob :

    InputDataConfig.DataSource.S3DataSource.S3Uri

    OutputDataConfig.S3OutputPath

  • Adaptez les autorisations Amazon ECR au chemin de registre (AlgorithmSpecification.TrainingImage) que vous spécifiez dans une demande CreateHyperParameterTuningJob.

  • Élargissez CloudWatch les autorisations Amazon Logs pour enregistrer un groupe de tâches de SageMaker formation.

Les actions cloudwatch sont applicables aux ressources "*". Pour plus d'informations, consultez la section CloudWatch Ressources et opérations dans le guide de CloudWatch l'utilisateur Amazon.

Si vous spécifiez un VPC privé pour votre tâche de réglage d'hyperparamètres, ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ] }

Si les entrées sont chiffrées à l'aide du chiffrement côté serveur avec une clé gérée par AWS KMS (SSE-KMS), ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "kms:Decrypt" ] }

Si vous spécifiez une clé KMS dans la configuration de sortie de la tâche de réglage des hyper-paramètres, ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "kms:Encrypt" ] }

Si vous spécifiez une clé KMS de volume dans la configuration des ressources de la tâche de réglage des hyper-paramètres, ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "kms:CreateGrant" ] }

CreateProcessingJob API : autorisations relatives aux rôles d'exécution

Pour un rôle d'exécution que vous pouvez transmettre dans une demande d'API CreateProcessingJob, vous pouvez attacher la politique d'autorisation suivante au rôle :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "s3:GetObject", "s3:PutObject", "s3:ListBucket", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

Au lieu de spécifier "Resource": "*", vous pouvez adapter ces autorisations à des ressources Amazon S3 et Amazon ECR spécifiques :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::inputbucket" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::inputbucket/object", "arn:aws:s3:::outputbucket/path" ] }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:region::repository/my-repo" } ] }

Si CreateProcessingJob.AppSpecification.ImageUri a besoin d'accéder à d'autres sources de données, telles que des ressources DynamoDB ou Amazon RDS, ajoutez les autorisations adéquates à cette politique.

Dans la politique précédente, vous adaptez la politique comme suit :

  • Adaptez l'autorisation s3:ListBucket à un compartiment spécifique que vous spécifiez sous la forme ProcessingInputs dans une demande CreateProcessingJob.

  • Adaptez les autorisations s3:GetObject et s3:PutObject aux objets qui seront téléchargés ou téléchargés dans ProcessingInputs et ProcessingOutputConfig dans une requête CreateProcessingJob.

  • Adaptez les autorisations Amazon ECR au chemin de registre (AppSpecification.ImageUri) que vous spécifiez dans une demande CreateProcessingJob.

Les actions cloudwatch et logs sont applicables aux ressources « * ». Pour plus d'informations, consultez la section CloudWatch Ressources et opérations dans le guide de CloudWatch l'utilisateur Amazon.

Si vous spécifiez un VPC privé pour votre tâche de traitement, ajoutez les autorisations suivantes. Ne limitez pas la politique avec des conditions ou des filtres de ressources. Dans le cas contraire, les contrôles de validation effectués lors de la création de la tâche de traitement échouent.

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ] }

Si les entrées sont chiffrées à l'aide du chiffrement côté serveur avec une clé gérée par AWS KMS (SSE-KMS), ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "kms:Decrypt" ] }

Si vous spécifiez une clé KMS dans la configuration de sortie de la tâche de traitement, ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "kms:Encrypt" ] }

Si vous spécifiez une clé KMS de volume dans la configuration des ressources de la tâche de traitement, ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "kms:CreateGrant" ] }

CreateTrainingJob API : autorisations relatives aux rôles d'exécution

Pour un rôle d'exécution que vous pouvez transmettre dans une demande d'API CreateTrainingJob, vous pouvez attacher la politique d'autorisation suivante au rôle :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "s3:GetObject", "s3:PutObject", "s3:ListBucket", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

Au lieu de spécifier "Resource": "*", vous pouvez adapter ces autorisations à des ressources Amazon S3 et Amazon ECR spécifiques :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::inputbucket" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::inputbucket/object", "arn:aws:s3:::outputbucket/path" ] }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:region::repository/my-repo" } ] }

Si CreateTrainingJob.AlgorithSpecifications.TrainingImage a besoin d'accéder à d'autres sources de données, telles que des ressources DynamoDB ou Amazon RDS, ajoutez les autorisations adéquates à cette politique.

Dans la politique précédente, vous adaptez la politique comme suit :

  • Adaptez l'autorisation s3:ListBucket à un compartiment spécifique que vous spécifiez sous la forme InputDataConfig.DataSource.S3DataSource.S3Uri dans une demande CreateTrainingJob.

  • Adaptez les autorisations s3:GetObject et s3:PutObject aux objets suivants que vous spécifiez dans la configuration des données d'entrée et de sortie dans une demande CreateTrainingJob :

    InputDataConfig.DataSource.S3DataSource.S3Uri

    OutputDataConfig.S3OutputPath

  • Adaptez les autorisations Amazon ECR au chemin de registre (AlgorithmSpecification.TrainingImage) que vous spécifiez dans une demande CreateTrainingJob.

Les actions cloudwatch et logs sont applicables aux ressources « * ». Pour plus d'informations, consultez la section CloudWatch Ressources et opérations dans le guide de CloudWatch l'utilisateur Amazon.

Si vous spécifiez un VPC privé pour votre tâche d'entraînement, ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ] }

Si les entrées sont chiffrées à l'aide du chiffrement côté serveur avec une clé gérée par AWS KMS (SSE-KMS), ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "kms:Decrypt" ] }

Si vous spécifiez une clé KMS dans la configuration de sortie de la tâche d'entraînement, ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "kms:Encrypt" ] }

Si vous spécifiez une clé KMS de volume dans la configuration des ressources de la tâche d'entraînement, ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "kms:CreateGrant" ] }

CreateModel API : autorisations relatives aux rôles d'exécution

Pour un rôle d'exécution que vous pouvez transmettre dans une demande d'API CreateModel, vous pouvez attacher la politique d'autorisation suivante au rôle :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "s3:GetObject", "s3:ListBucket", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }

Au lieu de spécifier "Resource": "*", vous pouvez adapter ces autorisations à des ressources Amazon S3 et Amazon ECR spécifiques :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:DescribeLogStreams", "ecr:GetAuthorizationToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::inputbucket/object" ] }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": [ "arn:aws:ecr:region::repository/my-repo", "arn:aws:ecr:region::repository/my-repo" ] } ] }

Si CreateModel.PrimaryContainer.Image a besoin d'accéder à d'autres sources de données, telles que des ressources Amazon DynamoDB ou Amazon RDS, ajoutez les autorisations adéquates à cette politique.

Dans la politique précédente, vous adaptez la politique comme suit :

  • Adaptez les autorisations S3 aux objets que vous spécifiez dans le chemin PrimaryContainer.ModelDataUrl dans une demande CreateModel.

  • Adaptez les autorisations Amazon ECR à un chemin de registre spécifique que vous spécifiez sous les formes PrimaryContainer.Image et SecondaryContainer.Image dans une demande CreateModel.

Les actions cloudwatch et logs sont applicables aux ressources « * ». Pour plus d'informations, consultez la section CloudWatch Ressources et opérations dans le guide de CloudWatch l'utilisateur Amazon.

Note

Si vous prévoyez d'utiliser la fonctionnalité de garde-fous de SageMaker déploiement pour le déploiement de modèles en production, assurez-vous que votre rôle d'exécution est autorisé à effectuer l'cloudwatch:DescribeAlarmsaction sur vos alarmes d'annulation automatique.

Si vous spécifiez un VPC privé pour votre modèle, ajoutez les autorisations suivantes :

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ] }