Έχοντας ένα περιβάλλον ικανό να προσφέρει Amazon Sage Maker Οι περιπτώσεις φορητών υπολογιστών επιτρέπουν γρήγορα στους επιστήμονες δεδομένων και στους επιχειρηματικούς αναλυτές να ανταποκρίνονται αποτελεσματικά στις ανάγκες του οργανισμού. Τα δεδομένα είναι η ψυχή ενός οργανισμού και η αποτελεσματική ανάλυση αυτών των δεδομένων παρέχει χρήσιμες πληροφορίες για τις επιχειρήσεις. Ένα κοινό πρόβλημα που αντιμετωπίζουν οι οργανισμοί είναι η δημιουργία ενός αυτοματοποιημένου μοτίβου που επιτρέπει στις ομάδες ανάπτυξης να εκκινούν υπηρεσίες AWS. Οι οργανισμοί θέλουν να επιτρέψουν στους προγραμματιστές τους να ξεκινήσουν πόρους όπως τους χρειάζονται, αλλά με κεντρικό και ασφαλή τρόπο.
Αυτή η ανάρτηση δείχνει πώς να συγκεντρώνετε τη διαχείριση των φορητών υπολογιστών του SageMaker χρησιμοποιώντας υπηρεσίες AWS, συμπεριλαμβανομένων AWS CloudFormation, Μοντέλο εφαρμογής χωρίς διακομιστή AWS (AWS SAM), Κατάλογος υπηρεσιών AWS, Amazon EventBridge, Κατάστημα παραμέτρων AWS Systems Manager, Amazon API Gateway, να AWS Lambda. Ακολουθούμε τον τρόπο χρήσης αυτών των υπηρεσιών AWS για την αυτοματοποίηση της διαδικασίας πώλησης φορητών υπολογιστών SageMaker στους τελικούς χρήστες.
Επισκόπηση λύσεων
Στη λύση μας, ένας χρήστης φορητού υπολογιστή ζητά μια παρουσία σημειωματάριου χρησιμοποιώντας τον Κατάλογο υπηρεσιών AWS. Το αίτημα υποβάλλεται σε επεξεργασία από το AWS CloudFormation, το οποίο παραδίδει την παρουσία του σημειωματαρίου. Το EventBridge παρακολουθεί το API καταλόγου υπηρεσιών AWS για την ολοκλήρωση της παροχής πόρων παρουσίας φορητού υπολογιστή. Ένας κανόνας που βασίζεται σε συμβάντα στο EventBridge καλεί τον επεξεργαστή συμβάντων Lambda, ο οποίος εκτελεί μια συνάρτηση Lambda επιστρέφοντας την προκαθορισμένη διεύθυνση URL.
Το παρακάτω αρχιτεκτονικό διάγραμμα απεικονίζει την κατάσταση της υποδομής όπως ορίζεται στα πρότυπα CloudFormation.
Η διαδικασία αποτελείται από τα ακόλουθα βήματα:
- Ένας χρήστης ζητά ένα νέο σημειωματάριο μέσω της κονσόλας καταλόγου υπηρεσιών AWS.
- Ο Κατάλογος Υπηρεσιών AWS εκκινεί μια στοίβα CloudFormation.
- Το AWS CloudFormation λανσάρει το σημειωματάριο SageMaker.
- Ένα σημειωματάριο SageMaker εκτελείται τώρα.
- Μια λειτουργία EventBridge ενεργοποιείται όταν κυκλοφορεί ένα νέο προϊόν AWS Service Catalog.
- Η amazoncloudwatch Το συμβάν καλεί μια συνάρτηση Lambda που δημιουργεί την προκαθορισμένη διεύθυνση URL και μια παράμετρο SSM για συγκεκριμένο χρήστη.
- Ένας χρήστης ζητά μια νέα προκαθορισμένη διεύθυνση URL.
- Μια συνάρτηση Lambda δημιουργεί μια νέα προκαθορισμένη διεύθυνση URL και ενημερώνει την παράμετρο SSM του χρήστη με τη νέα διεύθυνση URL.
Προϋποθέσεις
Για να εφαρμόσετε αυτήν τη λύση, πρέπει να έχετε τις ακόλουθες προϋποθέσεις:
Αναπτύξτε πόρους με το AWS CloudFormation
Για να δημιουργήσετε τους πόρους σας με το AWS CloudFormation, ολοκληρώστε τα παρακάτω βήματα:
- Αναπτύξτε το
s3-iam-config
Πρότυπο CloudFormation:
aws cloudformation create-stack --stack-name s3-iam-config --template-body file://templates/s3-iam-config.yml --parameters file://parameters/s3-iam-params.json --capabilities CAPABILITY_NAMED_IAM
Η έξοδος θα πρέπει να μοιάζει με τον ακόλουθο κώδικα:
{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/s3-iam-config/9be9f990-0909-11eb-811c-0a78092beb51"
}
Το πρότυπο δημιουργεί ένα Απλή υπηρεσία αποθήκευσης Amazon (Amazon S3) κάδος.
- Εκτελέστε την ακόλουθη εντολή για να λάβετε το όνομα του κάδου S3 που δημιουργήθηκε στο προηγούμενο βήμα:
aws cloudformation describe-stacks --stack-name s3-iam-config --query "Stacks[0].Outputs[?OutputKey=='S3BucketName'].OutputValue" --output text
Η έξοδος θα πρέπει να μοιάζει με το εξής:
s3-iam-config-s3bucket-1p85zr5051d86
- Εκτελέστε την ακόλουθη εντολή χρησιμοποιώντας την έξοδο από το προηγούμενο βήμα (ενημέρωση του ονόματος του κάδου):
aws s3 cp templates/sm-notebook.yml s3://<bucket_name>/sm-notebook.yml
Η έξοδος θα πρέπει να μοιάζει με το εξής:
upload: templates/sm-notebook.yml to s3://s3-iam-config-s3bucket-1p85zr5051d86/sm-notebook.yml
- Ανοίξτε το
parameters/service-catalog-params.json
αρχείο και ενημέρωση του S3BucketName
παράμετρο στο όνομα του κάδου από το προηγούμενο βήμα. Ενημερώστε το UserIAMPrincipal
με το ARN του ρόλου IAM που χρησιμοποιείτε για αυτήν την επίδειξη.
[ { "ParameterKey" : "NotebookInstanceType", "ParameterValue" : "ml.t2.medium" }, { "ParameterKey" : "S3IAMConfigStackName", "ParameterValue" : "s3-iam-config" }, { "ParameterKey" : "ServiceCatalogTemplateName", "ParameterValue" : "sm-notebook.yml" }, { "ParameterKey" : "S3BucketName", "ParameterValue" : "<input_your_bucket_name>" }, { "ParameterKey" : "UserIAMPrincipal", "ParameterValue" : "<input_your_iam_principal_arn>" }
]
- Αναπτύξτε το
service-catalog
Πρότυπο CloudFormation:
aws cloudformation create-stack --stack-name service-catalog-config --template-body file://templates/service-catalog.yml --parameters file://parameters/service-catalog-params.json --capabilities CAPABILITY_NAMED_IAM
Η έξοδος θα πρέπει να μοιάζει με το εξής:
{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/service-catalog-config/fb29c5e0-28a0-11ec-8337-123f746ae8a3"
}
Αναπτύξτε πόρους με το AWS SAM
Για να αναπτύξετε πόρους με το AWS SAM, ολοκληρώστε τα ακόλουθα βήματα:
- Αλλάξτε τον κατάλογό σας στο
lambda
Ευρετήριο:
- Δημιουργήστε την εφαρμογή:
Η έξοδος θα πρέπει να μοιάζει με το εξής:
Built Artifacts : .aws-sam/build
Built Template : .aws-sam/build/template.yaml Commands you can use next
=========================
[*] Invoke Function: sam local invoke
[*] Test Function in the Cloud: sam sync --stack-name {stack-name} --watch
[*] Deploy: sam deploy --guided
- Αναπτύξτε την εφαρμογή:
- Απαντήστε στις ερωτήσεις στο CLI όπως φαίνεται στον παρακάτω κώδικα:
Configuring SAM deploy
====================== Looking for config file [samconfig.toml] : Found Reading default arguments : Success Setting default arguments for 'sam deploy' ========================================= Stack Name [sam-app]: sam-app AWS Region [us-east-1]: us-east-1 Parameter EventBridgeFunctionName [EventBridgeFunction]: EventBridgeFunction Parameter EventRuleName [SvcCatalogEventRule]: SvcCatalogEventRule Parameter RefreshFunctionName [RefreshURLFunction]: RefreshURLFunction #Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [y/N]: N #SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation [Y/n]: Y #Preserves the state of previously provisioned resources when an operation fails Disable rollback [y/N]: N EventBridgeFunction may not have authorization defined, Is this okay? [y/N]: Y RefreshURLFunction may not have authorization defined, Is this okay? [y/N]: Y Save arguments to configuration file [Y/n]: Y SAM configuration file [samconfig.toml]: samconfig.toml SAM configuration environment [default]: dev
Η έξοδος θα πρέπει να μοιάζει με το εξής:
Looking for resources needed for deployment: Creating the required resources... Successfully created! Managed S3 bucket: aws-sam-cli-managed-default-samclisourcebucket-1f4i68wsmouhw A different default S3 bucket can be set in samconfig.toml Saved arguments to config file Running 'sam deploy' for future deployments will use the parameters saved above. The above parameters can be changed by modifying samconfig.toml Learn more about samconfig.toml syntax at https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html Uploading to sam-app/6f3e2f13cfdca08133238f77fc2c667b 9425988 / 9425988 (100.00%)
Uploading to sam-app/b153fd4be66b581361f7d46efae25f18 9425968 / 9425968 (100.00%) Deploying with following values =============================== Stack name : sam-app Region : us-east-1 Confirm changeset : False Disable rollback : False Deployment s3 bucket : aws-sam-cli-managed-default-samclisourcebucket-1f4i68wsmouhw Capabilities : ["CAPABILITY_IAM"] Parameter overrides : {"EventBridgeFunctionName": "EventBridgeFunction", "EventRuleName": "SvcCatalogEventRule", "RefreshFunctionName": "RefreshURLFunction"} Signing Profiles : {} Initiating deployment
=====================
Uploading to sam-app/c82cdea2bfbc2abc6520a97fce4c8a8b.template 6754 / 6754 (100.00%) Waiting for changeset to be created.. CloudFormation stack changeset
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Operation LogicalResourceId ResourceType Replacement -----------------------------------------------------------------------------------------------------------------------------------------------------------------
+ Add EventBridgeFunctionHelloWorldPermissio AWS::Lambda::Permission N/A nProd + Add EventBridgeFunctionRole AWS::IAM::Role N/A + Add EventBridgeFunction AWS::Lambda::Function N/A + Add PermissionForEventsToInvokeLambda AWS::Lambda::Permission N/A + Add RefreshURLFunctionHelloWorldPermission AWS::Lambda::Permission N/A Prod + Add RefreshURLFunctionRole AWS::IAM::Role N/A + Add RefreshURLFunction AWS::Lambda::Function N/A + Add ServerlessRestApiDeploymentb762875163 AWS::ApiGateway::Deployment N/A + Add ServerlessRestApiProdStage AWS::ApiGateway::Stage N/A + Add ServerlessRestApi AWS::ApiGateway::RestApi N/A + Add SvcCatalogEventRule AWS::Events::Rule N/A ----------------------------------------------------------------------------------------------------------------------------------------------------------------- Changeset created successfully. arn:aws:cloudformation:us-east-1:123456789012:changeSet/samcli-deploy1641934511/763fe89c-9c6a-4cef-a1a6-90986d7decfd 2022-01-11 15:55:22 - Waiting for stack create/update to complete CloudFormation events from stack operations
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
ResourceStatus ResourceType LogicalResourceId ResourceStatusReason -----------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE_IN_PROGRESS AWS::IAM::Role RefreshURLFunctionRole - CREATE_IN_PROGRESS AWS::IAM::Role EventBridgeFunctionRole - CREATE_IN_PROGRESS AWS::IAM::Role EventBridgeFunctionRole Resource creation Initiated CREATE_IN_PROGRESS AWS::IAM::Role RefreshURLFunctionRole Resource creation Initiated CREATE_COMPLETE AWS::IAM::Role EventBridgeFunctionRole - CREATE_IN_PROGRESS AWS::Lambda::Function EventBridgeFunction - CREATE_IN_PROGRESS AWS::Lambda::Function EventBridgeFunction Resource creation Initiated CREATE_COMPLETE AWS::IAM::Role RefreshURLFunctionRole - CREATE_COMPLETE AWS::Lambda::Function EventBridgeFunction - CREATE_IN_PROGRESS AWS::Lambda::Function RefreshURLFunction - CREATE_IN_PROGRESS AWS::Lambda::Function RefreshURLFunction Resource creation Initiated CREATE_IN_PROGRESS AWS::Events::Rule SvcCatalogEventRule - CREATE_IN_PROGRESS AWS::Events::Rule SvcCatalogEventRule Resource creation Initiated CREATE_COMPLETE AWS::Lambda::Function RefreshURLFunction - CREATE_IN_PROGRESS AWS::ApiGateway::RestApi ServerlessRestApi - CREATE_COMPLETE AWS::ApiGateway::RestApi ServerlessRestApi - CREATE_IN_PROGRESS AWS::ApiGateway::RestApi ServerlessRestApi Resource creation Initiated CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ServerlessRestApiDeploymentb762875163 - CREATE_IN_PROGRESS AWS::Lambda::Permission EventBridgeFunctionHelloWorldPermissio - nProd CREATE_IN_PROGRESS AWS::Lambda::Permission RefreshURLFunctionHelloWorldPermission Resource creation Initiated Prod CREATE_IN_PROGRESS AWS::Lambda::Permission EventBridgeFunctionHelloWorldPermissio Resource creation Initiated nProd CREATE_IN_PROGRESS AWS::Lambda::Permission RefreshURLFunctionHelloWorldPermission - Prod CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ServerlessRestApiDeploymentb762875163 Resource creation Initiated CREATE_COMPLETE AWS::ApiGateway::Deployment ServerlessRestApiDeploymentb762875163 - CREATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdStage - CREATE_IN_PROGRESS AWS::ApiGateway::Stage ServerlessRestApiProdStage Resource creation Initiated CREATE_COMPLETE AWS::Lambda::Permission RefreshURLFunctionHelloWorldPermission - Prod CREATE_COMPLETE AWS::Lambda::Permission EventBridgeFunctionHelloWorldPermissio - nProd CREATE_COMPLETE AWS::ApiGateway::Stage ServerlessRestApiProdStage - CREATE_COMPLETE AWS::Events::Rule SvcCatalogEventRule - CREATE_IN_PROGRESS AWS::Lambda::Permission PermissionForEventsToInvokeLambda - CREATE_IN_PROGRESS AWS::Lambda::Permission PermissionForEventsToInvokeLambda Resource creation Initiated CREATE_COMPLETE AWS::Lambda::Permission PermissionForEventsToInvokeLambda - CREATE_COMPLETE AWS::CloudFormation::Stack sam-app - ----------------------------------------------------------------------------------------------------------------------------------------------------------------- CloudFormation outputs from deployed stack
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Outputs ------------------------------------------------------------------------------------------------------------------------------------------------------------------
Key RefreshURLFunctionIamRole Description Implicit IAM Role created for Hello World function Value arn:aws:lambda:us-east-1:123456789012:function:RefreshURLFunction Key RefreshURLFunctionAPI Description API Gateway endpoint URL for Prod stage for Hello World function Value https://m94bjaurjb.execute-api.us-east-1.amazonaws.com/Prod/refreshurl/ Key RefreshURLFunction Description Hello World Lambda Function ARN Value arn:aws:lambda:us-east-1:123456789012:function:RefreshURLFunction ------------------------------------------------------------------------------------------------------------------------------------------------------------------ Successfully created/updated stack - sam-app in us-east-1
Δοκιμάστε τη λύση
Τώρα που έχετε αναπτύξει τη λύση, ας δοκιμάσουμε τη ροή εργασίας.
- Στην κονσόλα καταλόγου υπηρεσιών AWS, κάτω Διαχείριση στο παράθυρο πλοήγησης, επιλέξτε Portfolios.
- Επιλέξτε το σημειωματάριό σας SageMaker.
- Επιλέξτε Κυκλοφορία προϊόντος.
- Στο κάτω μέρος της σελίδας, επιλέξτε Κυκλοφορία προϊόντος.
Θα πρέπει να δείτε μια σελίδα παρόμοια με το παρακάτω στιγμιότυπο οθόνης.
- Περιμένετε μερικά λεπτά για να εμφανιστεί η κατάσταση ως
Available
.
- Ανοίξτε το τερματικό σας και εκτελέστε την ακόλουθη εντολή για να λάβετε την προκαθορισμένη διεύθυνση URL από το Parameter Store:
aws ssm get-parameter --name "/SageMaker/Notebooks/Demo-User-Notebook" --query Parameter.Value
Η έξοδος θα πρέπει να μοιάζει με το εξής:
"https://demo-user-notebook.notebook.us-east-1.sagemaker.aws?authToken=eyJhbGciOiJIUzI1NiJ9.eyJmYXNDcmVkZW50aWFscyI6IkFZQURlSlVvLzJjeEcwQ0xtNHBjTTZFOGM1SUFYd0FCQUJWaGQzTXRZM0o1Y0hSdkxYQjFZbXhwWXkxclpYa0FSRUV3U0ZSdU1rNXJZMUpyWnpWWVlsZFBRbUowTmtadVpGcHZlRlJXUW05SVlWaHdiazFJY25WRWVrTmtlVWRUVUZsak56UnhObWQzVTJGS1dYUm5hVk40VVQwOUFBRUFCMkYzY3kxcmJYTUFTMkZ5YmpwaGQzTTZhMjF6T25WekxXVmhjM1F0TVRvM05qUTNNRGM1TWpRME1UVTZhMlY1TDJJM01ETTNNRE5oTFdVMU5HTXROR1JtWWkxaE1HRTFMVGMyTnpNek1XWXlORGsxT1FDNEFRSUJBSGhlY3J4TGdEdDJaWmRKYk5nd3R4RHJpWmtZQnZUR1cwZWZCWVhaVW1VTTFBRXNiUlBXblloT3hjUWhPUE9jR0FaZUFBQUFmakI4QmdrcWhraUc5dzBCQndhZ2J6QnRBZ0VBTUdnR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTUFnMjM1NzZRT1l6azgyc29BZ0VRZ0RzejlwVHd4Q2ZZUHd6SGJvZERIaElRa1BRWjdUUXRxZ2dEaVpkTDBtMnIxaW1jVHp5czJHc0t6T3d2Z2g1cGNSSytVS2ZxTXlnTmVhaHVVd0lBQUFBQURBQUFFQUFBQUFBQUFBQUFBQUFBQUFET3ZoZFMvb01sTE4xZ3hQSFkybklQLy8vLy93QUFBQUVBQUFBQUFBQUFBQUFBQUFFQUFBTmZFc2JYV1RDWXorV0o0S3BwSXhEMkpkMVFzUnZFbW9lS21hZDhvSmNSN0tRMi9CQWd3TTA3YUFOOEN1WE8yc2lLUnpZdjI1YmlLOFYzUDM2d1Fjc3RoS085Ui91TFFzNWk4RytHc3BZSnlNamRsbWdWYTFEd2FZQmd0TUMwcmJMRjZSWXJhcFJtMFArbDVIQWg3bWNyeU9lejZWRVlYTmdJY2FXR0tjZDFwRjQ5bXBLTzNyQW5BSGlCdEVaNCtlSVFYVkJwMmQyV2c4TEFqR0RRYVNyclVBOUhJa3pvaloybm5iVHluY3pLWXlNVjA3Ui8wZmVTZU9jTTBubC9IRHdjWUdyc1RCcDgzM1RVWCtkOGRNRXI4amtpQVAwUTFQRkNrU2h5WS9CU05IalZtWThxd094N05jV3g1ZVpSenl3cm0vWXNZOW5paEt5cWRMaGNIQUhDbXZhWW8yb2lMZ3BGak51WG5udlh1U1UxcmFlRVZMNUlKR1loMVAzRWZnR3huNmlsUTJmVGllQytQdWNmT3dsZWwrSnR5SWNmbVRTeFB0bnE1YW1mVjEycml0Skx5a09WMklEc0YzSEl6RW11SmhYZTBqKzM1dWlITW5BVkFZVm5RbithdWh1K3lVcUNKeWVWU1o2ZWVsYmIwd2tYUGNpOXBkazFMbTFLNUpZcFJuMFoyS1hvSnBxNm52b3pPWkdvNG9jbmVRQWhKODRiYjR6RkdGZ1NOaTdQWEFuMnpDTkZ1S2w0eU9KVldiRDRXMGZGSFc1OE5iUTE5amc5Zlp0czlkVmxKclowSmVrYTJhZi9TaUpoeWdvcDBwQ0pBS0pZZkErVEhTQmdCUTFNUWpyUXV5U25jbnQ4NU5XUW1uVG9PUGJ4bVlyN0JRMllpQlJsekdxSDNuQ0pXN2x4YmNzYUV1c1dFMXB3K0RJc2lLMEV1YVV6anBFWFV0NEt4Zm82T3B3b28vdVcyV0dlSmNQVHk4TkNRYWZlUU1VbXgwaDQ3aDF0UHNIY0hBUjltKzU2c3BzMnJETjl4ZTFUMVdHVDg4a3FFMW5YYzRQeUZNdTVuYXB0UEdUU1B0akpZWDRKKzRsSzlJZzZCNG9qRTNmVEEzUVllSTd0dU9UZG9Vd2R6SkJ4L1NvSjNxU0ZUMWRDZXFDeUcyWUN5cjN0TmFzZlpYNFBBWmU4b1M1QVZTeExkVlVqUkpYcW1DM1ZkNUJPRlFySHpReTZjTkFLNFVOY2tBanh3bUgwbFlNdlFtc3lTODRzcCtLUGdpbXl3eWNDdk5tYWQ1bVltRHRZYVpMU3JCVUZIVzlDS2tTS2pqWWtBWnZ3MXRnS3h5OE9wNjZDRHY3aEZObzNDUWQ3MGpnV0wyamdnU1RIckJ6blJwK2wxQ1VscnNsblNzaGluTDcwbnp4eU02b1NBbm1FdFVscG9yeG1iWGRUbUxld244R1lQS1ZvT0syd1pobXk0TVQzc2xxRlU1enVTU2tBQnp5eURZb3djR3JxemlBTXNDcEZONVhRVk9HNHkzNnlZS3pTU0FVTEppRCtOZFRLeWxJbUFHY3daUUl3TXpoZ25hWitia1h5VmErTWUrYmwxUHBrUXcwMWxMUDZNcExnTGRPbkVKb0RRM0xLc2pLZHlidWx4cmlNK011SEFqRUF3V00zdXpjemZyY1ZWOGNwUzdlUDlBRXluNks5NkNQNFBiVCtYK1VVZERqYXZkR1hrenY3TklkWG4xem9pU0dpIiwiY2lwaGVyVGV4dCI6IkFRSUJBSGhlY3J4TGdEdDJaWmRKYk5nd3R4RHJpWmtZQnZUR1cwZWZCWVhaVW1VTTFBRVRlWjBib1lRWDZSazJ1dzdNREJZY0FBQUFvakNCbndZSktvWklodmNOQVFjR29JR1JNSUdPQWdFQU1JR0lCZ2txaGtpRzl3MEJCd0V3SGdZSllJWklBV1VEQkFFdU1CRUVERjVkR1VSbkt5ZlA4S2dKTVFJQkVJQmJyTkJkSkZEOWhySytrajEvTDRieXMxMlFmR2dxM1pSTVlGa2lwNjJXZGZ2aUhvdkswQ3pKY0VtSUE4akY5cktPRm5ZblFoeHpHdmhxZy84VjU4RjUxbWFKUkJIY0RlUzdjSGRpSkdhOW1MbmZuVzFwQVhoaUp1WlRCdz09Iiwid29ya3NwYWNlTmFtZSI6ImRlbW8tdXNlci1ub3RlYm9vayIsIndvcmtzcGFjZURvbWFpbk5hbWUiOiJkZW1vLXVzZXItbm90ZWJvb2siLCJzdWIiOiIxOTU4ODk2NzE2OTAiLCJleHAiOjE2MzgxNDAyMTQsImlhdCI6MTYzODEzODQxNH0.duv90DKJDan6ZOI_uwgP3sQEtManyMCD61tnhZtI-mY"
Κανόνας EventBridge
Το EventBridge έχει ρυθμιστεί με έναν κανόνα συμβάντων για την επεξεργασία μιας απόκρισης API για το API καταλόγου υπηρεσιών AWS. Αυτός ο κανόνας έχει ρυθμιστεί ώστε να μεταβιβάζει την κατάσταση παρουσίας σημειωματαρίου, ώστε να μπορείτε να χρησιμοποιήσετε το Lambda για να επιστρέψετε μια προκαθορισμένη απόκριση URL ως ενεργοποιημένη ενέργεια. Ο κανόνας συμβάντος διαμορφώνεται ως εξής:
{ "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["servicecatalog.amazonaws.com"], "eventName": ["ProvisionProduct"] }
}
Το ακόλουθο στιγμιότυπο οθόνης της κονσόλας EventBridge δείχνει τον κανόνα της εκδήλωσης σας.
Η AWS CloudTrail Το API παρακολουθείται χρησιμοποιώντας την πηγή συμβάντος για servicecatalog.amazonaws.com
. Το όνομα συμβάντος που παρακολουθείται είναι ProvisionProduct
. Η παρακολούθηση αυτού του συμβάντος σάς επιτρέπει να αναλάβετε αποτελεσματικά μέτρα ως απάντηση στην αναφορά του καταλόγου υπηρεσιών AWS για την επιτυχή κατάσταση παράδοσης της παρουσίας του σημειωματαρίου. Όταν ένα ProvisionProduct
συμβαίνει ένα συμβάν, καλείται μια συνάρτηση Λάμδα DemoEventBridgeFunction
γίνεται επίκληση, η οποία επιστρέφει μια προκαθορισμένη διεύθυνση URL στον τελικό χρήστη.
Λειτουργία λάμδα για την επιστροφή προκαθορισμένων διευθύνσεων URL παρουσίας σημειωματαρίου
Για να διασφαλιστεί η ασφαλής πρόσβαση σε σημειωματάρια που ζητήθηκαν από τον χρήστη μέσω του καταλόγου υπηρεσιών AWS, δημιουργείται μια προκαθορισμένη διεύθυνση URL και επιστρέφεται στον χρήστη. Αυτό παρέχει μια ασφαλή μέθοδο πρόσβασης στην παρουσία του φορητού υπολογιστή και εκτέλεσης κρίσιμων λειτουργιών για τις επιχειρήσεις. Για το σκοπό αυτό χρησιμοποιούμε το EventBridgeServiceCatalogFunction συνάρτηση, η οποία χρησιμοποιεί α σερβιτόρος για να γίνει διαθέσιμη η κατάσταση παρουσίας σημειωματαρίου. Οι σερβιτόροι παρέχουν ένα μέσο ψηφοφορίας μιας υπηρεσίας και αναστολής της εκτέλεσης μιας εργασίας μέχρι να εκπληρωθεί μια συγκεκριμένη προϋπόθεση. Όταν είναι έτοιμη, η συνάρτηση δημιουργεί μια προκαθορισμένη διεύθυνση URL. Τέλος, η συνάρτηση δημιουργεί μια παράμετρο SSM με την προκαθορισμένη διεύθυνση URL που δημιουργείται. Η παράμετρος SSM χρησιμοποιεί το ακόλουθο μοτίβο: /SageMaker/Notebooks/%s-Notebook"%user_name/
. Αυτό μας επιτρέπει να δημιουργήσουμε έναν κοινό χώρο ονομάτων για όλες τις παραμέτρους SSM του φορητού υπολογιστή SageMaker, διατηρώντας ταυτόχρονα μοναδικά με βάση το user_name
.
Οι προκαθορισμένες διευθύνσεις URL έχουν καθορισμένη λήξη. Η λειτουργία Lambda αναπτύσσει σημειωματάρια με λήξη περιόδου λειτουργίας 12 ωρών. Εξαιτίας αυτού, οι προγραμματιστές πρέπει να δημιουργήσουν μια νέα προκαθορισμένη διεύθυνση URL όταν λήξει η υπάρχουσα προκαθορισμένη διεύθυνση URL. ο Λειτουργία RefreshURL το επιτυγχάνει επιτρέποντας στους χρήστες να επικαλούνται τη συνάρτηση από την κλήση της πύλης API. Οι προγραμματιστές μπορούν να επικαλέσουν αυτήν τη συνάρτηση και να μεταβιβάσουν το όνομα του σημειωματάριου τους και επιστρέφει μια προκαθορισμένη διεύθυνση URL. Οταν ο RefreshURLFunction
έχει ολοκληρωθεί, ένας χρήστης μπορεί να πραγματοποιήσει μια κλήση στο Parameter Store, να λάβει τη νέα προκαθορισμένη διεύθυνση URL και, στη συνέχεια, να αποκτήσει πρόσβαση στο σημειωματάριό του.
- Αποκτήστε το
RefreshURLFunction
URL πύλης API με τον ακόλουθο κώδικα:
aws cloudformation describe-stacks --stack-name sam-app --query "Stacks[0].Outputs[?OutputKey=='RefreshURLFunctionAPI'].OutputValue" --output text --region us-east-1
Η έξοδος θα πρέπει να μοιάζει με το εξής:
https://8mnr3ksi0d.execute-api.us-east-1.amazonaws.com/Prod/refreshurl/
- Επικαλέστε τη συνάρτηση
RefreshURLFunction
καλώντας το API Gateway. Εκσυγχρονίζω input_url
με τη διεύθυνση URL από το προηγούμενο βήμα:
curl -X POST <input_url> -d '{"notebook_user_name": "Demo-User"}'
Η έξοδος θα πρέπει να μοιάζει με το εξής:
{"PreSignedURL": "https://demo-user-notebook-dctz.notebook.us-east-1.sagemaker.aws?authToken=eyJhbGciOiJIUzI1NiJ9.eyJmYXNDcmVkZW50aWFscyI6IkFZQURlRGw3R2E2OWZ3SmhjSlZKcDB1VjR2b0FYd0FCQUJWaGQzTXRZM0o1Y0hSdkxYQjFZbXhwWXkxclpYa0FSRUZzYVcxNVNsZGtXRXhCZGpVNGRIRkVTalo0V25SSk5WWTVUVEZHZFZaTVZtVldWRzQ0Tms1UGRWaEpSVFI2UTBwdGVFZDFWbFUxUzNoc1pYSXJia05YWnowOUFBRUFCMkYzY3kxcmJYTUFTMkZ5YmpwaGQzTTZhMjF6T25WekxXVmhjM1F0TVRvM05qUTNNRGM1TWpRME1UVTZhMlY1TDJJM01ETTNNRE5oTFdVMU5HTXROR1JtWWkxaE1HRTFMVGMyTnpNek1XWXlORGsxT1FDNEFRSUJBSGhlY3J4TGdEdDJaWmRKYk5nd3R4RHJpWmtZQnZUR1cwZWZCWVhaVW1VTTFBRjY1ZFVPdW5vQlY2MVdrTnM2OUVsdUFBQUFmakI4QmdrcWhraUc5dzBCQndhZ2J6QnRBZ0VBTUdnR0NTcUdTSWIzRFFFSEFUQWVCZ2xnaGtnQlpRTUVBUzR3RVFRTVhsY1gyeW5WMVQxNkdBRHlBZ0VRZ0RzUEVSVllMRVMzN1FVZklvVTZjd3RZdGI4NkIrT212aVF3cm5BOFVDSnZtMjRxYXJORllaOGgzRGlnSy8wVVBSR3hTeFpoaFhWSTA0Q1RlUUlBQUFBQURBQUFFQUFBQUFBQUFBQUFBQUFBQUFBcUEvUnVZOTk2alBLV09zaFNqZS9GLy8vLy93QUFBQUVBQUFBQUFBQUFBQUFBQUFFQUFBTlhGZFYwR1FHMXZpN2drQkhtOGtmWlBUL0dxcnhOamFSWkU0Tis3ZTJocEI0YXUxS0ozQ2ZnRUMrcHR3dk9JdjQwVGYrdnNWNUt5MjYyNGYvOVhrYmVZQklqdnlLV1JJR0ZyS2dxditVTXdJcE8ydDFIbWcvSmFhdEpGdFhudlJodVcwMG9ldVBLS3ZFeGRKQ3ppYkRkT3J3SG5IMFJqWEhTc2tydGxsTDM2Mll0a3k0Z1cwV2xGOUt3Zm1xb2FjVzZZRTZhV0RUZU9oQWprZXFkQ1FoVi9KRWYwaTA1Q1VxU0k1REZzSC8yS2grZHJxS0tBSVMyTjFRYnNSZ3VGNzFFcnBCM3BoV25PSTFnd3BGL3VNMCs5MHRsTGVCeG5ncElqT1NEY1pkbHlwQmpNZkVadUNYWGU4ZTJGRGQ0bGVENFdOZDdzc0F4OHFQWmV5eWI3WWo2L0FxaUtESmdLOStScS9BVGF6NkRFNFNyL3BaWmpRRFFab1oyV1ZCa2VVWHR2U1piVUd4aXJXRG0rVUUxVk5sbG85TmhwSEhhR1dIZEJPU0w5SUFUWWZDVjV6enVURHNDS2l1dVBQTmFVZGhvSUVuL2c1UXhtOFJvZUlVVUJRcUVvbms3T3d1QzJZOEM2QUowclVxL055T3R5NmF4TWY2VEdYcTFsTHB4WG9wMjlXT3lzR3daQSs4Mmo3em5SZEo2RTZTU005TnJYRi95OWxRS3dBTFBaK3FBNmszSEFvdDg5UlZYSGVMTFQ3TklwazVYVnZlRXY5S3N2MUp1Uk1FVVJEZjI1bnZtOXRmVnp0MUN0R0Y1RVBQNEpid2d5RnZ4RDlnRkVPTUM5dk1rdWloT3JnM3JaaDNwRjd1RDRsVVptVUtTRXV6ZVVmRFd0eEhjVHZoeUxFVmZuczhpcjl6SnFacGxpNVdYdjF3bTQ5WWxJNGlSM1FiamtZM0JybUFsOFBzZkRjYmZJUmVBNmkvQjVNeHFOb3RvU0Y0MHA1OFpJTGZPNmNNWURlVHpzT2dMbENmYXIwT3JMK1lRVk55MU5ETUF3cGRWaXlNeWI1RHl2SzlOV3ZOOUt2c2lMTklrV1IvU2s5ekx1RjBPd3F0aE5GWjhkbWkvMzRzc2pRMUFVR1BMR2ZXbUl1ZmlqRnhrRytnL1lKMjNSa1pIVmRvb1J4TUt3Zmk5OXQvUS96QmI2OUgyQlljbFZwUVl0RGV4Z3ZGWTg2TGpUMm5sSjkya09ad1duWW9OMWpMenIrVTVWQkJKakpDT09ENVA0MXBWckdHN1R4Nlh4UlFscGRqQ3E5ZFhXQlJiRDh6d0JDZ2VMY254SFlZTjUzR2hON2U3S3QyUmZyak5aREtSanUvTWNZSXRSTTVLU2ZaNWFNZ2NJUXY0a0tLNUppVll6OEdaY2VUSE5TT21Zb1FNeG1xMnNOSGJDZzZpUFM4KytvUkErdFhGY1JWMFkxSG9qZlVWS2NzREJjZmFQRVo0TENSZENvZnYrWFVWaHFSNzlCZGpyYW92Wmo1TitqZjFxdHdWZU9mVWJBQm5NR1VDTUN6UU4xMThWMTFZcXcwSWFhbmY0NUtIcjhnUC9MaVZHLzVRTy9yemREbzdZbkZEMmtzM3ZKbFQxVWE5N3kxY25nSXhBS2FxNEJsQ3R4UUc3b2Yxc1BaWld3K2NCalgzcGdIMWhXMHpYOU1zVzJOYXFCSklpUkp1VTJVaUU0cVdDVnh4eVE9PSIsImNpcGhlclRleHQiOiJBUUlCQUhoZWNyeExnRHQyWlpkSmJOZ3d0eERyaVprWUJ2VEdXMGVmQllYWlVtVU0xQUhyWlZxanJHYWVlMUY5c016d2pmM1pBQUFBb2pDQm53WUpLb1pJaHZjTkFRY0dvSUdSTUlHT0FnRUFNSUdJQmdrcWhraUc5dzBCQndFd0hnWUpZSVpJQVdVREJBRXVNQkVFRFBGVFJFbXQ2SmQ2VWoxMExnSUJFSUJibHBFOWtORGxpd21Yb2ltaEFiTC8xNmpYTVRhcDYvNnpSRlFLbjNHWE9mRlVRcUx6VEVBSUQvY095bDlMYU1NdzBRaHBjSWhERmpEL1U1R29sQmUrSHJ4QnJuRk1SMjNrWVR1K2tXUFZVYUcwRExPanl1YVhYR3VDOHc9PSIsIndvcmtzcGFjZU5hbWUiOiJkZW1vLXVzZXItam9lLW5vdGVib29rIiwid29ya3NwYWNlRG9tYWluTmFtZSI6ImRlbW8tdXNlci1qb2Utbm90ZWJvb2steXVvYyIsInN1YiI6IjE5NTg4OTY3MTY5MCIsImV4cCI6MTY0MDc0NDM1OCwiaWF0IjoxNjQwNzQwNzU4fQ.WGFEzQhC3lvA9IguA2tbCS6Us9mhRIV_6LiuRTAytSo"}%
- Ανοίξτε ένα πρόγραμμα περιήγησης και μεταβείτε στο
PreSignedURL
από το προηγούμενο βήμα.
Η ιστοσελίδα θα πρέπει να μοιάζει με το παρακάτω στιγμιότυπο οθόνης.
Συμπέρασμα
Σε αυτήν την ανάρτηση, δείξαμε πώς να αναπτύξετε τα στοιχεία υποδομής για ένα περιβάλλον παρουσίας σημειωματαρίου SageMaker χρησιμοποιώντας το AWS CloudFormation. Στη συνέχεια, παρουσιάσαμε πώς να χρησιμοποιήσετε το EventBridge για να επιστρέψετε την κατάσταση παρουσίας σημειωματαρίου από το API καταλόγου υπηρεσιών AWS. Τέλος, δείξαμε πώς να χρησιμοποιήσετε μια συνάρτηση Lambda για να επιστρέψετε την προκαθορισμένη διεύθυνση URL παρουσίας σημειωματαρίου για πρόσβαση στον πόρο που παραδόθηκε. Για περισσότερες πληροφορίες, δείτε το Οδηγός προγραμματιστή Amazon SageMaker. Ευχαριστούμε που το διαβάσατε!
Σχετικά με τους Συγγραφείς
Τζο Κίτινγκ είναι Senior Customer Delivery Architect στις Επαγγελματικές Υπηρεσίες στο Amazon Web Services. Συνεργάζεται με πελάτες AWS για να σχεδιάσει και να εφαρμόσει μια ποικιλία λύσεων στο AWS Cloud. Ο Τζο απολαμβάνει να μαγειρεύει με ένα ή δύο ποτήρια κρασί και να πετυχαίνει τη μετριότητα στο γήπεδο του γκολφ.
Matt Hedges είναι Αρχιτέκτονας Εφαρμογών Cloud στο Amazon Web Services. Συνεργάζεται στενά με τους πελάτες για να ευθυγραμμίσει τις ανάγκες τεχνολογίας με τους οδηγούς επιχειρήσεων για να παραδώσουν τις εφαρμογές τους στο AWS. Με έμφαση στη μετανάστευση και τον εκσυγχρονισμό, ο Matt συνεργάζεται με εταιρικούς πελάτες σε όλο τον κόσμο για να πρωτοπορήσει σε αλλαγές που ξεκλειδώνουν πλήρως τις δυνατότητες του cloud. Ο Matt απολαμβάνει να περνά χρόνο με την οικογένεια, να παίζει μουσικά όργανα, να μαγειρεύει, να παίζει βιντεοπαιχνίδια, να επισκευάζει παλιά αυτοκίνητα και να μαθαίνει νέα πράγματα.
Βιρτζίνια Τσου είναι Ανώτερος Αρχιτέκτονας DevSecOps στις Επαγγελματικές Υπηρεσίες στο Amazon Web Services. Συνεργάζεται με πελάτες επιχειρηματικής κλίμακας σε όλο τον κόσμο για να σχεδιάσει και να εφαρμόσει μια ποικιλία λύσεων στο AWS Cloud.