داشتن محیطی با قابلیت ارائه آمازون SageMaker نمونه های نوت بوک به سرعت به دانشمندان داده و تحلیلگران تجاری اجازه می دهد تا به طور موثر به نیازهای سازمانی پاسخ دهند. داده ها رگ حیات یک سازمان هستند و تجزیه و تحلیل آن داده ها به طور موثر بینش مفیدی را برای کسب و کارها فراهم می کند. مشکل رایجی که سازمان ها با آن مواجه می شوند ایجاد یک الگوی خودکار است که تیم های توسعه را قادر می سازد خدمات AWS را راه اندازی کنند. سازمانها میخواهند توسعهدهندگان خود را قادر سازند تا منابع مورد نیاز خود را راهاندازی کنند، اما به صورت متمرکز و ایمن.
این پست نشان می دهد که چگونه می توان مدیریت نوت بوک های نمونه SageMaker را با استفاده از خدمات AWS متمرکز کرد. AWS CloudFormation, مدل برنامه بدون سرور AWS (AWS SAM)، کاتالوگ خدمات AWS, پل رویداد آمازون, AWS Systems Manager Parameter Store, دروازه API آمازونو AWS لامبدا. ما نحوه استفاده از این سرویسهای AWS را برای خودکار کردن فرآیند فروش نوتبوکهای SageMaker به کاربران نهایی توضیح میدهیم.
بررسی اجمالی راه حل
در راه حل ما، یک کاربر نوت بوک با استفاده از کاتالوگ خدمات AWS یک نمونه نوت بوک را درخواست می کند. درخواست توسط AWS CloudFormation پردازش میشود که نمونه نوتبوک را تحویل میدهد. EventBridge API کاتالوگ خدمات AWS را برای تکمیل تهیه منابع نمونه نوت بوک نظارت می کند. یک قانون مبتنی بر رویداد در EventBridge، پردازشگر رویداد Lambda را فراخوانی میکند، که تابع Lambda را اجرا میکند و URL تعیینشده را برمیگرداند.
نمودار معماری زیر وضعیت زیرساخت را همانطور که در قالب های CloudFormation تعریف شده است، نشان می دهد.
فرآیند شامل مراحل زیر است:
- کاربر از طریق کنسول AWS Service Catalog یک نوت بوک جدید درخواست می کند.
- کاتالوگ خدمات AWS یک پشته CloudFormation راه اندازی می کند.
- AWS CloudFormation نوت بوک SageMaker را راه اندازی کرد.
- یک نوت بوک SageMaker اکنون در حال اجرا است.
- یک تابع EventBridge هنگامی که محصول جدید کاتالوگ خدمات AWS راه اندازی می شود فعال می شود.
- La CloudWatch آمازون رویداد یک تابع 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 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 Service Catalog، در زیر حکومت در قسمت ناوبری، را انتخاب کنید میزبانی وب.
- نوت بوک 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 پردازش کند. این قانون به گونهای پیکربندی شده است که حالت نمونه نوتبوک را منتقل کند تا بتوانید از لامبدا برای برگرداندن پاسخ URL تعیینشده به عنوان یک اقدام راهاندازی شده استفاده کنید. قانون رویداد به صورت زیر پیکربندی می شود:
{ "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["servicecatalog.amazonaws.com"], "eventName": ["ProvisionProduct"] }
}
تصویر زیر از کنسول EventBridge قانون رویداد شما را نشان می دهد.
La AWS CloudTrail API با استفاده از منبع رویداد برای نظارت می شود servicecatalog.amazonaws.com
. نام رویداد نظارت شده است ProvisionProduct
. نظارت بر این رویداد به شما امکان می دهد تا در پاسخ به کاتالوگ خدمات AWS که وضعیت تحویل موفقیت آمیز نمونه نوت بوک را گزارش می دهد، اقدام مؤثری انجام دهید. وقتی یک ProvisionProduct
رویداد رخ می دهد، تابع Lambda فراخوانی می شود DemoEventBridgeFunction
فراخوانی می شود، که یک URL از پیش تعیین شده را به کاربر نهایی برمی گرداند.
تابع Lambda برای برگرداندن نشانیهای اینترنتی نمونه نوتبوک تعیینشده
برای اطمینان از دسترسی ایمن به نوت بوک های درخواستی کاربر از طریق کاتالوگ خدمات AWS، یک URL از پیش تعیین شده ایجاد شده و به کاربر بازگردانده می شود. این یک روش امن برای دسترسی به نمونه نوت بوک و انجام عملکردهای حیاتی تجاری را فراهم می کند. برای این منظور از EventBridgeServiceCatalogfunction تابع، که از a استفاده می کند گارسون برای در دسترس قرار گرفتن حالت نمونه نوت بوک. پیشخدمت ها وسیله ای برای نظرسنجی یک سرویس و تعلیق اجرای یک کار تا زمانی که یک شرط خاص برآورده شود، فراهم می کنند. وقتی این تابع آماده شد، یک URL تعیین شده ایجاد می کند. در نهایت، تابع یک پارامتر SSM با URL تعیین شده ایجاد شده ایجاد می کند. پارامتر SSM از الگوی زیر استفاده می کند: /SageMaker/Notebooks/%s-Notebook"%user_name/
. این به ما اجازه میدهد تا یک فضای نام مشترک برای تمام پارامترهای SSM نوتبوک SageMaker خود ایجاد کنیم و در عین حال آنها را بر اساس منحصر به فرد نگه داریم. user_name
.
URL های تعیین شده دارای انقضای مشخصی هستند. تابع لامبدا نوت بوک هایی را با انقضای جلسه 12 ساعت مستقر می کند. به همین دلیل، توسعه دهندگان باید زمانی که URL تعیین شده قبلی آنها منقضی شود، یک URL از پیش تعیین شده جدید ایجاد کنند. را RefreshURLFunction این کار را با اجازه دادن به کاربران برای فراخوانی تابع از فراخوانی API Gateway انجام می دهد. توسعهدهندگان میتوانند این تابع را فراخوانی کنند و نام نوتبوک خود را ارسال کنند و یک 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. با تشکر از شما برای خواندن!
درباره نویسنده
جو کیتینگ یک معمار ارشد تحویل مشتری در خدمات حرفه ای در خدمات وب آمازون است. او با مشتریان AWS کار می کند تا راه حل های مختلفی را در AWS Cloud طراحی و پیاده سازی کند. جو از آشپزی با یک یا دو لیوان شراب و دستیابی به حد متوسط در زمین گلف لذت می برد.
مت هجز یک معمار برنامه های ابری در خدمات وب آمازون است. او از نزدیک با مشتریان همکاری می کند تا نیازهای فناوری را با رانندگان کسب و کار هماهنگ کند تا برنامه های خود را در AWS ارائه دهند. مت با تمرکز بر مهاجرت و نوسازی، با مشتریان سازمانی در سراسر جهان همکاری می کند تا تغییراتی را پیشرو کند که پتانسیل کامل ابر را باز کند. مت از گذراندن وقت با خانواده، نواختن آلات موسیقی، آشپزی، بازی های ویدیویی، تعمیر ماشین های قدیمی و یادگیری چیزهای جدید لذت می برد.
ویرجینیا چو یک معمار ارشد DevSecOps در خدمات حرفه ای در خدمات وب آمازون است. او با مشتریان در مقیاس سازمانی در سراسر جهان کار می کند تا راه حل های مختلفی را در AWS Cloud طراحی و پیاده سازی کند.