प्रदान करने में सक्षम वातावरण होना अमेज़न SageMaker नोटबुक इंस्टेंस डेटा वैज्ञानिकों और व्यापार विश्लेषकों को संगठनात्मक आवश्यकताओं के लिए कुशलतापूर्वक प्रतिक्रिया देने की अनुमति देता है। डेटा एक संगठन का जीवन है, और उस डेटा का कुशलतापूर्वक विश्लेषण व्यवसायों के लिए उपयोगी अंतर्दृष्टि प्रदान करता है। एक सामान्य समस्या जिसका संगठनों को सामना करना पड़ता है, एक स्वचालित पैटर्न बनाना है जो विकास टीमों को AWS सेवाओं को लॉन्च करने में सक्षम बनाता है। संगठन अपने डेवलपर्स को संसाधनों को लॉन्च करने में सक्षम बनाना चाहते हैं, लेकिन एक केंद्रीकृत और सुरक्षित फैशन में।
यह पोस्ट दर्शाती है कि AWS सेवाओं का उपयोग करके SageMaker उदाहरण नोटबुक के प्रबंधन को कैसे केंद्रीकृत किया जाए एडब्ल्यूएस CloudFormation, AWS सर्वर रहित अनुप्रयोग मॉडल (एडब्ल्यूएस सैम), AWS सेवा सूची, अमेज़न EventBridge, एडब्ल्यूएस सिस्टम मैनेजर पैरामीटर स्टोर, अमेज़ॅन एपीआई गेटवे, तथा AWS लाम्बा. हम एंड-यूजर्स को SageMaker नोटबुक बेचने की प्रक्रिया को स्वचालित करने के लिए इन AWS सेवाओं का उपयोग करने के तरीके पर चलते हैं।
समाधान अवलोकन
हमारे समाधान में, एक नोटबुक उपयोगकर्ता AWS सेवा कैटलॉग का उपयोग करके एक नोटबुक उदाहरण का अनुरोध करता है। अनुरोध AWS CloudFormation द्वारा संसाधित किया जाता है, जो नोटबुक उदाहरण प्रदान करता है। EventBridge नोटबुक उदाहरण संसाधन प्रावधान को पूरा करने के लिए AWS सेवा कैटलॉग API की निगरानी करता है। इवेंटब्रिज में एक इवेंट-आधारित नियम लैम्ब्डा इवेंट प्रोसेसर को कॉल करता है, जो एक लैम्ब्डा फ़ंक्शन चलाता है जो निर्धारित URL लौटाता है।
निम्नलिखित आर्किटेक्चरल आरेख क्लाउडफॉर्मेशन टेम्पलेट्स में परिभाषित आधारभूत संरचना स्थिति को दिखाता है।
प्रक्रिया में निम्नलिखित चरण होते हैं:
- एक उपयोगकर्ता AWS सर्विस कैटलॉग कंसोल के माध्यम से एक नई नोटबुक का अनुरोध करता है।
- AWS सर्विस कैटलॉग ने CloudFormation स्टैक लॉन्च किया।
- AWS CloudFormation ने SageMaker नोटबुक लॉन्च की।
- एक SageMaker नोटबुक अब चल रही है।
- एक नया एडब्ल्यूएस सेवा कैटलॉग उत्पाद लॉन्च होने पर एक इवेंटब्रिज फ़ंक्शन चालू हो जाता है।
- RSI अमेज़ॅन क्लाउडवॉच घटना एक लैम्ब्डा फ़ंक्शन को आमंत्रित करती है जो निर्धारित URL और एक उपयोगकर्ता-विशिष्ट SSM पैरामीटर उत्पन्न करता है।
- एक उपयोगकर्ता एक नए निर्धारित यूआरएल का अनुरोध करता है।
- एक लैम्ब्डा फ़ंक्शन एक नया निर्धारित यूआरएल उत्पन्न करता है और उपयोगकर्ता के एसएसएम पैरामीटर को नए यूआरएल के साथ अपडेट करता है।
.. पूर्वापेक्षाएँ
इस समाधान को लागू करने के लिए, आपके पास निम्नलिखित आवश्यक शर्तें होनी चाहिए:
एडब्ल्यूएस क्लाउडफॉर्मेशन के साथ संसाधनों को तैनात करें
AWS CloudFormation के साथ अपने संसाधन बनाने के लिए, निम्न चरणों को पूरा करें:
- तैनात करें
s3-iam-config
क्लाउडफ़ॉर्मेशन टेम्प्लेट:
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"
}
टेम्पलेट एक बनाता है अमेज़न सरल भंडारण सेवा (अमेज़न 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
इस डेमो के लिए आप जिस IAM भूमिका का उपयोग कर रहे हैं, उसके ARN के साथ।
[ { "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
क्लाउडफ़ॉर्मेशन टेम्प्लेट:
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
- आवेदन तैनात करें:
- निम्नलिखित कोड में दिखाए गए अनुसार सीएलआई में प्रश्नों का उत्तर दें:
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 सेवा कैटलॉग कंसोल पर, के तहत प्रशासन नेविगेशन फलक में, चुनें पोर्टफोलियो.
- अपना सेजमेकर नोटबुक चुनें।
- चुनें उत्पाद लॉन्च करें.
- पृष्ठ के निचले भाग में, चुनें उत्पाद लॉन्च करें.
आपको निम्न स्क्रीनशॉट के समान एक पृष्ठ देखना चाहिए।
- स्थिति के रूप में दिखाने के लिए कुछ क्षण प्रतीक्षा करें
Available
.
- अपना टर्मिनल खोलें और पैरामीटर स्टोर से निर्धारित URL प्राप्त करने के लिए निम्न कमांड चलाएँ:
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 नियम
एडब्ल्यूएस सेवा कैटलॉग एपीआई के लिए एपीआई प्रतिक्रिया को संसाधित करने के लिए इवेंटब्रिज को इवेंट नियम के साथ कॉन्फ़िगर किया गया है। यह नियम नोटबुक इंस्टेंस स्थिति को पारित करने के लिए कॉन्फ़िगर किया गया है ताकि आप ट्रिगर किए गए क्रिया के रूप में एक निर्दिष्ट यूआरएल प्रतिक्रिया वापस करने के लिए लैम्ब्डा का उपयोग कर सकें। इवेंट नियम निम्नानुसार कॉन्फ़िगर किया गया है:
{ "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["servicecatalog.amazonaws.com"], "eventName": ["ProvisionProduct"] }
}
EventBridge कंसोल का निम्न स्क्रीनशॉट आपके ईवेंट नियम को दिखाता है।
RSI AWS क्लाउडट्रिल के लिए ईवेंट स्रोत का उपयोग करके API की निगरानी की जा रही है servicecatalog.amazonaws.com
. मॉनिटर किए गए ईवेंट का नाम है ProvisionProduct
. इस घटना की निगरानी आपको एडब्ल्यूएस सेवा कैटलॉग के जवाब में प्रभावी कार्रवाई करने की अनुमति देती है, जो नोटबुक इंस्टेंस की सफल वितरण स्थिति की रिपोर्ट करती है। जब एक ProvisionProduct
घटना होती है, एक लैम्ब्डा फ़ंक्शन कहा जाता है DemoEventBridgeFunction
लागू किया जाता है, जो अंतिम-उपयोगकर्ता को एक निर्धारित URL लौटाता है।
निर्धारित नोटबुक उदाहरण URL लौटाने के लिए लैम्ब्डा फ़ंक्शन
AWS सेवा कैटलॉग के माध्यम से उपयोगकर्ता द्वारा अनुरोधित नोटबुक तक सुरक्षित पहुंच सुनिश्चित करने के लिए, एक निर्धारित URL बनाया जाता है और उपयोगकर्ता को लौटाया जाता है। यह नोटबुक इंस्टेंस तक पहुँचने और व्यावसायिक महत्वपूर्ण कार्य करने का एक सुरक्षित तरीका प्रदान करता है। इस प्रयोजन के लिए, हम उपयोग करते हैं इवेंट ब्रिज सर्विस कैटलॉग फंक्शन फ़ंक्शन, जो a का उपयोग करता है वेटर नोटबुक उदाहरण स्थिति उपलब्ध होने के लिए। वेटर एक सेवा को मतदान करने और एक विशिष्ट शर्त पूरी होने तक कार्य के निष्पादन को निलंबित करने का एक साधन प्रदान करते हैं। जब यह तैयार हो जाता है, तो फ़ंक्शन एक निर्धारित URL उत्पन्न करता है। अंत में, फ़ंक्शन जनरेट किए गए निर्धारित URL के साथ एक SSM पैरामीटर बनाता है। एसएसएम पैरामीटर निम्नलिखित पैटर्न का उपयोग करता है: /SageMaker/Notebooks/%s-Notebook"%user_name/
. यह हमें अपने सभी SageMaker नोटबुक SSM मापदंडों के लिए एक सामान्य नामस्थान बनाने की अनुमति देता है, जबकि उन्हें अद्वितीय के आधार पर बनाए रखता है user_name
.
निर्धारित URL की एक परिभाषित समाप्ति होती है। लैम्ब्डा फ़ंक्शन 12 घंटे की सत्र समाप्ति के साथ नोटबुक्स को तैनात करता है। इस वजह से, डेवलपर्स को उनके मौजूदा निर्धारित यूआरएल की समय सीमा समाप्त होने पर एक नया निर्धारित यूआरएल उत्पन्न करने की आवश्यकता होती है। रिफ्रेशयूआरएलफंक्शन उपयोगकर्ताओं को एपीआई गेटवे को कॉल करने से फ़ंक्शन का आह्वान करने की अनुमति देकर इसे पूरा करता है। डेवलपर इस फ़ंक्शन का आह्वान कर सकते हैं और अपनी नोटबुक का नाम पास कर सकते हैं, और यह एक निर्धारित URL लौटाता है। जब RefreshURLFunction
पूरा होने पर, उपयोगकर्ता पैरामीटर स्टोर पर कॉल कर सकता है, नया निर्धारित URL प्राप्त कर सकता है, और फिर अपनी नोटबुक तक पहुँच सकता है।
- हो जाओ
RefreshURLFunction
निम्नलिखित कोड के साथ एपीआई गेटवे URL:
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
एपीआई गेटवे को कॉल करके। अपडेट करना 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
पिछले चरण से।
वेबपेज को निम्न स्क्रीनशॉट की तरह दिखना चाहिए।
निष्कर्ष
इस पोस्ट में, हमने प्रदर्शित किया कि AWS CloudFormation का उपयोग करके SageMaker नोटबुक इंस्टेंस वातावरण के लिए इन्फ्रास्ट्रक्चर घटकों को कैसे तैनात किया जाए। फिर हमने एडब्ल्यूएस सर्विस कैटलॉग एपीआई से नोटबुक इंस्टेंस स्टेट को वापस करने के लिए इवेंटब्रिज का उपयोग करने का तरीका बताया। अंत में, हमने दिखाया कि वितरित संसाधन तक पहुँचने के लिए निर्धारित नोटबुक इंस्टेंस URL को वापस करने के लिए लैम्ब्डा फ़ंक्शन का उपयोग कैसे करें। अधिक जानकारी के लिए, देखें अमेज़न सेजमेकर डेवलपर गाइड. पढ़ने के लिए धन्यवाद!
लेखक के बारे में
जो कीटिंग Amazon Web Services में प्रोफेशनल सर्विसेज में सीनियर कस्टमर डिलीवरी आर्किटेक्ट हैं। वह एडब्ल्यूएस ग्राहकों के साथ एडब्ल्यूएस क्लाउड में विभिन्न प्रकार के समाधानों को डिजाइन और कार्यान्वित करने के लिए काम करता है। जो को एक या दो ग्लास वाइन के साथ खाना पकाने और गोल्फ कोर्स पर सामान्यता प्राप्त करने में आनंद आता है।
मैट हेजेज Amazon Web Services में क्लाउड एप्लिकेशन आर्किटेक्ट है। वह AWS पर अपने एप्लिकेशन देने के लिए व्यावसायिक चालकों के साथ प्रौद्योगिकी की जरूरतों को पूरा करने के लिए ग्राहकों के साथ मिलकर काम करता है। माइग्रेशन और आधुनिकीकरण पर ध्यान देने के साथ, मैट दुनिया भर के उद्यम ग्राहकों के साथ काम करता है ताकि क्लाउड की पूरी क्षमता को अनलॉक करने वाले बदलावों को आगे बढ़ाया जा सके। मैट को परिवार के साथ समय बिताना, संगीत वाद्ययंत्र बजाना, खाना बनाना, वीडियो गेम खेलना, पुरानी कारों को ठीक करना और नई चीजें सीखना अच्छा लगता है।
वर्जीनिया चू Amazon Web Services में व्यावसायिक सेवाओं में एक वरिष्ठ DevSecOps वास्तुकार हैं। वह AWS क्लाउड में विभिन्न प्रकार के समाधानों को डिजाइन और कार्यान्वित करने के लिए दुनिया भर में उद्यम-स्तर के ग्राहकों के साथ काम करती है।